[PATCH 12/12] drm/amdgpu: put MQDs in VRAM

Christian König ckoenig.leichtzumerken at gmail.com
Fri Apr 28 09:03:21 UTC 2023


Am 27.04.23 um 17:27 schrieb Alex Deucher:
> Reduces preemption latency.
>
> v2: move MES MQDs into VRAM as well (YuBiao)
> v3: enable on gfx10, 11 only (Alex)

The why we do that not for gfx9 is missing.

>
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 4 ++++
>   drivers/gpu/drm/amd/amdgpu/mes_v10_1.c  | 1 +
>   drivers/gpu/drm/amd/amdgpu/mes_v11_0.c  | 1 +
>   3 files changed, 6 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> index 0560568b3925..92c5f0ce8bbb 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> @@ -382,6 +382,8 @@ int amdgpu_gfx_mqd_sw_init(struct amdgpu_device *adev,
>   	int r, i;
>   	struct amdgpu_kiq *kiq = &adev->gfx.kiq[xcc_id];
>   	struct amdgpu_ring *ring = &kiq->ring;
> +	u32 domain_vram = adev->ip_versions[GC_HWIP][0] >= IP_VERSION(10, 0, 0) ?
> +		AMDGPU_GEM_DOMAIN_VRAM : 0;

Maybe cleaner to do something like:

     domain = AMDGPU_GEM_DOMAIN_GTT;
     if (...)
         domain |= AMDGPU_GEM_DOMAIN_VRAM;

Christian.

>   
>   	/* create MQD for KIQ */
>   	if (!adev->enable_mes_kiq && !ring->mqd_obj) {
> @@ -413,6 +415,7 @@ int amdgpu_gfx_mqd_sw_init(struct amdgpu_device *adev,
>   			ring = &adev->gfx.gfx_ring[i];
>   			if (!ring->mqd_obj) {
>   				r = amdgpu_bo_create_kernel(adev, mqd_size, PAGE_SIZE,
> +							    domain_vram |
>   							    AMDGPU_GEM_DOMAIN_GTT, &ring->mqd_obj,
>   							    &ring->mqd_gpu_addr, &ring->mqd_ptr);
>   				if (r) {
> @@ -434,6 +437,7 @@ int amdgpu_gfx_mqd_sw_init(struct amdgpu_device *adev,
>   		ring = &adev->gfx.compute_ring[i + xcc_id * adev->gfx.num_compute_rings];
>   		if (!ring->mqd_obj) {
>   			r = amdgpu_bo_create_kernel(adev, mqd_size, PAGE_SIZE,
> +						    domain_vram |
>   						    AMDGPU_GEM_DOMAIN_GTT, &ring->mqd_obj,
>   						    &ring->mqd_gpu_addr, &ring->mqd_ptr);
>   			if (r) {
> diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v10_1.c b/drivers/gpu/drm/amd/amdgpu/mes_v10_1.c
> index 0599f8a6813e..4560476c7c31 100644
> --- a/drivers/gpu/drm/amd/amdgpu/mes_v10_1.c
> +++ b/drivers/gpu/drm/amd/amdgpu/mes_v10_1.c
> @@ -901,6 +901,7 @@ static int mes_v10_1_mqd_sw_init(struct amdgpu_device *adev,
>   		return 0;
>   
>   	r = amdgpu_bo_create_kernel(adev, mqd_size, PAGE_SIZE,
> +				    AMDGPU_GEM_DOMAIN_VRAM |
>   				    AMDGPU_GEM_DOMAIN_GTT, &ring->mqd_obj,
>   				    &ring->mqd_gpu_addr, &ring->mqd_ptr);
>   	if (r) {
> diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
> index e853bcb892fc..3adb450eec07 100644
> --- a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
> @@ -999,6 +999,7 @@ static int mes_v11_0_mqd_sw_init(struct amdgpu_device *adev,
>   		return 0;
>   
>   	r = amdgpu_bo_create_kernel(adev, mqd_size, PAGE_SIZE,
> +				    AMDGPU_GEM_DOMAIN_VRAM |
>   				    AMDGPU_GEM_DOMAIN_GTT, &ring->mqd_obj,
>   				    &ring->mqd_gpu_addr, &ring->mqd_ptr);
>   	if (r) {



More information about the amd-gfx mailing list