[PATCH] drm/amdgpu: refuse to reserve io mem for split VRAM buffers

Nicolai Hähnle 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:
>  		break;
>  	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 mailing list