On 2017å¹´08æ??25æ?¥ 17:38, Christian König wrote: > From: Christian König <christian.koenig at amd.com> > > Those are certainly not kernel allocations, instead set the NO_CPU_ACCESS flag. > > Signed-off-by: Christian König <christian.koenig at amd.com> Reviewed-by: Chunming Zhou <david1.zhou at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 15 +++++++-------- > 1 file changed, 7 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > index 9b1b6bd..ba01293 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > @@ -186,17 +186,17 @@ int amdgpu_gem_create_ioctl(struct drm_device *dev, void *data, > { > struct amdgpu_device *adev = dev->dev_private; > union drm_amdgpu_gem_create *args = data; > + uint64_t flags = args->in.domain_flags; > uint64_t size = args->in.bo_size; > struct drm_gem_object *gobj; > uint32_t handle; > - bool kernel = false; > int r; > > /* reject invalid gem flags */ > - if (args->in.domain_flags & ~(AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED | > - AMDGPU_GEM_CREATE_NO_CPU_ACCESS | > - AMDGPU_GEM_CREATE_CPU_GTT_USWC | > - AMDGPU_GEM_CREATE_VRAM_CLEARED)) > + if (flags & ~(AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED | > + AMDGPU_GEM_CREATE_NO_CPU_ACCESS | > + AMDGPU_GEM_CREATE_CPU_GTT_USWC | > + AMDGPU_GEM_CREATE_VRAM_CLEARED)) > return -EINVAL; > > /* reject invalid gem domains */ > @@ -211,7 +211,7 @@ int amdgpu_gem_create_ioctl(struct drm_device *dev, void *data, > /* create a gem object to contain this object in */ > if (args->in.domains & (AMDGPU_GEM_DOMAIN_GDS | > AMDGPU_GEM_DOMAIN_GWS | AMDGPU_GEM_DOMAIN_OA)) { > - kernel = true; > + flags |= AMDGPU_GEM_CREATE_NO_CPU_ACCESS; > if (args->in.domains == AMDGPU_GEM_DOMAIN_GDS) > size = size << AMDGPU_GDS_SHIFT; > else if (args->in.domains == AMDGPU_GEM_DOMAIN_GWS) > @@ -225,8 +225,7 @@ int amdgpu_gem_create_ioctl(struct drm_device *dev, void *data, > > r = amdgpu_gem_object_create(adev, size, args->in.alignment, > (u32)(0xffffffff & args->in.domains), > - args->in.domain_flags, > - kernel, &gobj); > + flags, false, &gobj); > if (r) > return r; >