[PATCH] drm/amdgpu: refuse to reserve io mem for split VRAM buffers
nhaehnle at gmail.com
Mon Feb 20 17:23:54 UTC 2017
Ping? People seem to agree, but I haven't seen an explicit R-b...
On 16.02.2017 23:55, Nicolai Hähnle wrote:
> From: Nicolai Hähnle <nicolai.haehnle at amd.com>
> 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 at amd.com>
> I ran into this bug during testing. Unfortunately it does not fix the
> memory corruption bug that I mentioned elsewhere... oh well.
> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 3 +++
> 1 file changed, 3 insertions(+)
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index 8d6a68f..f8b578d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -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_VRAM:
> + if (mem->start == AMDGPU_BO_INVALID_OFFSET)
> + return -EINVAL;
> mem->bus.offset = mem->start << PAGE_SHIFT;
> /* check if it's visible */
> if ((mem->bus.offset + mem->bus.size) > adev->mc.visible_vram_size)
More information about the amd-gfx