mirror of https://gitee.com/openkylin/linux.git
drm/nvc0: enable protection of system-use-only structures in vm
Somehow missed this in the original merge of the nvc0 code. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
1380da4979
commit
c906ca0fbf
|
@ -160,6 +160,7 @@ enum nouveau_flags {
|
|||
#define NVOBJ_FLAG_ZERO_ALLOC (1 << 1)
|
||||
#define NVOBJ_FLAG_ZERO_FREE (1 << 2)
|
||||
#define NVOBJ_FLAG_VM (1 << 3)
|
||||
#define NVOBJ_FLAG_VM_USER (1 << 4)
|
||||
|
||||
#define NVOBJ_CINST_GLOBAL 0xdeadbeef
|
||||
|
||||
|
|
|
@ -332,8 +332,11 @@ nv50_instmem_get(struct nouveau_gpuobj *gpuobj, u32 size, u32 align)
|
|||
gpuobj->vinst = node->vram->offset;
|
||||
|
||||
if (gpuobj->flags & NVOBJ_FLAG_VM) {
|
||||
ret = nouveau_vm_get(dev_priv->chan_vm, size, 12,
|
||||
NV_MEM_ACCESS_RW | NV_MEM_ACCESS_SYS,
|
||||
u32 flags = NV_MEM_ACCESS_RW;
|
||||
if (!(gpuobj->flags & NVOBJ_FLAG_VM_USER))
|
||||
flags |= NV_MEM_ACCESS_SYS;
|
||||
|
||||
ret = nouveau_vm_get(dev_priv->chan_vm, size, 12, flags,
|
||||
&node->chan_vma);
|
||||
if (ret) {
|
||||
vram->put(dev, &node->vram);
|
||||
|
|
|
@ -105,7 +105,8 @@ nvc0_graph_create_context_mmio_list(struct nouveau_channel *chan)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = nouveau_gpuobj_new(dev, NULL, 384 * 1024, 4096, NVOBJ_FLAG_VM,
|
||||
ret = nouveau_gpuobj_new(dev, NULL, 384 * 1024, 4096,
|
||||
NVOBJ_FLAG_VM | NVOBJ_FLAG_VM_USER,
|
||||
&grch->unk418810);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
|
|
@ -48,8 +48,8 @@ nvc0_vm_addr(struct nouveau_vma *vma, u64 phys, u32 memtype, u32 target)
|
|||
phys >>= 8;
|
||||
|
||||
phys |= 0x00000001; /* present */
|
||||
// if (vma->access & NV_MEM_ACCESS_SYS)
|
||||
// phys |= 0x00000002;
|
||||
if (vma->access & NV_MEM_ACCESS_SYS)
|
||||
phys |= 0x00000002;
|
||||
|
||||
phys |= ((u64)target << 32);
|
||||
phys |= ((u64)memtype << 36);
|
||||
|
|
Loading…
Reference in New Issue