[PATCH] drm/amdgpu: only use kernel zone if need_dma32 is not required

Kuehling, Felix Felix.Kuehling at amd.com
Wed Jun 12 17:23:40 UTC 2019


TTM itself has some logic for need_dma32 and TTM_PAGE_FLAG_DMA32. I 
believe that should already handle this. need_dma32 is passed from 
amdgpu to ttm_bo_device_init to bdev->need_dma32. ttm_tt_create 
translates that to page_flags |= TTM_PAGE_FLAG_DMA32 and passes that to 
bdev->driver->ttm_tt_create. The two page allocators in ttm_page_alloc.c 
and ttm_page_alloc_dma.c check ttm->page_flags. Is that chain broken 
somewhere? Overriding glob->mem_glob->num_zones from amdgpu seems to be 
a bit of a hack.

Regards,
   Felix

On 2019-06-12 8:13, Yang, Philip wrote:
> TTM create two zones, kernel zone and dma32 zone for system memory. If
> system memory address allocated is below 4GB, this account to dma32 zone
> and will exhaust dma32 zone and trigger unnesssary TTM eviction.
>
> Patch "drm/ttm: Account for kernel allocations in kernel zone only" only
> handle the allocation for acc_size, the system memory page allocation is
> through ttm_mem_global_alloc_page which still account to dma32 zone if
> page is below 4GB.
>
> Change-Id: I289b85d891b8f64a1422c42b1eab398098ab7ef7
> Signed-off-by: Philip Yang <Philip.Yang at amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 4 ++++
>   1 file changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index 2778ff63d97d..79bb9dfe617b 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -1686,6 +1686,10 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>   	}
>   	adev->mman.initialized = true;
>   
> +	/* Only kernel zone (no dma32 zone) if device does not require dma32 */
> +	if (!adev->need_dma32)
> +		adev->mman.bdev.glob->mem_glob->num_zones = 1;
> +
>   	/* We opt to avoid OOM on system pages allocations */
>   	adev->mman.bdev.no_retry = true;
>   


More information about the amd-gfx mailing list