Skip to content

Commit 4772222

Browse files
ChristianKoenigAMDalexdeucher
authored andcommitted
drm/amdgpu: revert "generally allow over-commit during BO allocation"
This reverts commit f9d00a4. This causes problem for KFD because when we overcommit we accidentially bind the BO to GTT for moving it into VRAM. We also need to make sure that this is done only as fallback after trying to evict first. Signed-off-by: Christian König <[email protected]> Reviewed-by: Felix Kuehling <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent 3273f11 commit 4772222

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ int amdgpu_gem_object_create(struct amdgpu_device *adev, unsigned long size,
113113
bp.resv = resv;
114114
bp.preferred_domain = initial_domain;
115115
bp.flags = flags;
116-
bp.domain = initial_domain | AMDGPU_GEM_DOMAIN_CPU;
116+
bp.domain = initial_domain;
117117
bp.bo_ptr_size = sizeof(struct amdgpu_bo);
118118

119119
r = amdgpu_bo_create_user(adev, &bp, &ubo);
@@ -332,10 +332,20 @@ int amdgpu_gem_create_ioctl(struct drm_device *dev, void *data,
332332
}
333333

334334
initial_domain = (u32)(0xffffffff & args->in.domains);
335+
retry:
335336
r = amdgpu_gem_object_create(adev, size, args->in.alignment,
336-
initial_domain, flags, ttm_bo_type_device,
337-
resv, &gobj);
337+
initial_domain,
338+
flags, ttm_bo_type_device, resv, &gobj);
338339
if (r && r != -ERESTARTSYS) {
340+
if (flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) {
341+
flags &= ~AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
342+
goto retry;
343+
}
344+
345+
if (initial_domain == AMDGPU_GEM_DOMAIN_VRAM) {
346+
initial_domain |= AMDGPU_GEM_DOMAIN_GTT;
347+
goto retry;
348+
}
339349
DRM_DEBUG("Failed to allocate GEM object (%llu, %d, %llu, %d)\n",
340350
size, initial_domain, args->in.alignment, r);
341351
}

drivers/gpu/drm/amd/amdgpu/amdgpu_object.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -580,7 +580,11 @@ int amdgpu_bo_create(struct amdgpu_device *adev,
580580
bo->flags |= AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
581581

582582
bo->tbo.bdev = &adev->mman.bdev;
583-
amdgpu_bo_placement_from_domain(bo, bp->domain);
583+
if (bp->domain & (AMDGPU_GEM_DOMAIN_GWS | AMDGPU_GEM_DOMAIN_OA |
584+
AMDGPU_GEM_DOMAIN_GDS))
585+
amdgpu_bo_placement_from_domain(bo, AMDGPU_GEM_DOMAIN_CPU);
586+
else
587+
amdgpu_bo_placement_from_domain(bo, bp->domain);
584588
if (bp->type == ttm_bo_type_kernel)
585589
bo->tbo.priority = 1;
586590

0 commit comments

Comments
 (0)