aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c15
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