diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 15 |
1 files 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 9b1b6bdd4841..ba012933e6aa 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, | |||
186 | { | 186 | { |
187 | struct amdgpu_device *adev = dev->dev_private; | 187 | struct amdgpu_device *adev = dev->dev_private; |
188 | union drm_amdgpu_gem_create *args = data; | 188 | union drm_amdgpu_gem_create *args = data; |
189 | uint64_t flags = args->in.domain_flags; | ||
189 | uint64_t size = args->in.bo_size; | 190 | uint64_t size = args->in.bo_size; |
190 | struct drm_gem_object *gobj; | 191 | struct drm_gem_object *gobj; |
191 | uint32_t handle; | 192 | uint32_t handle; |
192 | bool kernel = false; | ||
193 | int r; | 193 | int r; |
194 | 194 | ||
195 | /* reject invalid gem flags */ | 195 | /* reject invalid gem flags */ |
196 | if (args->in.domain_flags & ~(AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED | | 196 | if (flags & ~(AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED | |
197 | AMDGPU_GEM_CREATE_NO_CPU_ACCESS | | 197 | AMDGPU_GEM_CREATE_NO_CPU_ACCESS | |
198 | AMDGPU_GEM_CREATE_CPU_GTT_USWC | | 198 | AMDGPU_GEM_CREATE_CPU_GTT_USWC | |
199 | AMDGPU_GEM_CREATE_VRAM_CLEARED)) | 199 | AMDGPU_GEM_CREATE_VRAM_CLEARED)) |
200 | return -EINVAL; | 200 | return -EINVAL; |
201 | 201 | ||
202 | /* reject invalid gem domains */ | 202 | /* reject invalid gem domains */ |
@@ -211,7 +211,7 @@ int amdgpu_gem_create_ioctl(struct drm_device *dev, void *data, | |||
211 | /* create a gem object to contain this object in */ | 211 | /* create a gem object to contain this object in */ |
212 | if (args->in.domains & (AMDGPU_GEM_DOMAIN_GDS | | 212 | if (args->in.domains & (AMDGPU_GEM_DOMAIN_GDS | |
213 | AMDGPU_GEM_DOMAIN_GWS | AMDGPU_GEM_DOMAIN_OA)) { | 213 | AMDGPU_GEM_DOMAIN_GWS | AMDGPU_GEM_DOMAIN_OA)) { |
214 | kernel = true; | 214 | flags |= AMDGPU_GEM_CREATE_NO_CPU_ACCESS; |
215 | if (args->in.domains == AMDGPU_GEM_DOMAIN_GDS) | 215 | if (args->in.domains == AMDGPU_GEM_DOMAIN_GDS) |
216 | size = size << AMDGPU_GDS_SHIFT; | 216 | size = size << AMDGPU_GDS_SHIFT; |
217 | else if (args->in.domains == AMDGPU_GEM_DOMAIN_GWS) | 217 | else if (args->in.domains == AMDGPU_GEM_DOMAIN_GWS) |
@@ -225,8 +225,7 @@ int amdgpu_gem_create_ioctl(struct drm_device *dev, void *data, | |||
225 | 225 | ||
226 | r = amdgpu_gem_object_create(adev, size, args->in.alignment, | 226 | r = amdgpu_gem_object_create(adev, size, args->in.alignment, |
227 | (u32)(0xffffffff & args->in.domains), | 227 | (u32)(0xffffffff & args->in.domains), |
228 | args->in.domain_flags, | 228 | flags, false, &gobj); |
229 | kernel, &gobj); | ||
230 | if (r) | 229 | if (r) |
231 | return r; | 230 | return r; |
232 | 231 | ||