drm/amdgpu: refuse to reserve io mem for split VRAM buffers
When the fast blit path fails while attempting to move a buffer from RAM to VRAM, we fall back to a CPU-based memcpy that cannot handle split VRAM buffers. Instead of crashing, simply fail the buffer move. Ideally, we would teach TTM about split buffers so that the fallback still works in this case, but that is quite involved. So for now, apply the simplest possible fix. Fixes: 40361bb1704b ("drm/amdgpu: add VRAM manager v2") Signed-off-by: Nicolai Hähnle <nicolai.haehnle@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
3089c1df10
commit
4694335dad
|
@ -529,6 +529,9 @@ static int amdgpu_ttm_io_mem_reserve(struct ttm_bo_device *bdev, struct ttm_mem_
|
||||||
case TTM_PL_TT:
|
case TTM_PL_TT:
|
||||||
break;
|
break;
|
||||||
case TTM_PL_VRAM:
|
case TTM_PL_VRAM:
|
||||||
|
if (mem->start == AMDGPU_BO_INVALID_OFFSET)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
mem->bus.offset = mem->start << PAGE_SHIFT;
|
mem->bus.offset = mem->start << PAGE_SHIFT;
|
||||||
/* check if it's visible */
|
/* check if it's visible */
|
||||||
if ((mem->bus.offset + mem->bus.size) > adev->mc.visible_vram_size)
|
if ((mem->bus.offset + mem->bus.size) > adev->mc.visible_vram_size)
|
||||||
|
|
Loading…
Reference in New Issue