[AMD Official Use Only - AMD Internal Distribution Only]

Ping ...

> -----Original Message-----
> From: Jesse Zhang <[email protected]>
> Sent: Monday, March 30, 2026 9:33 AM
> To: [email protected]
> Cc: Deucher, Alexander <[email protected]>; Koenig, Christian
> <[email protected]>; Liu, Shaoyun <[email protected]>; Chen,
> Michael <[email protected]>; Zhang, Jesse(Jie)
> <[email protected]>; Deucher, Alexander <[email protected]>;
> Zhang, Jesse(Jie) <[email protected]>
> Subject: [PATCH v3 1/2] drm/amdgpu/mes_v12_0: use mes schedule pipe for
> legacy queues on unified MES
>
> when suspend_all_gangs is issued to pipe0 MES during system suspend or runtime
> PM, pipe0 can only suspend and resume queues it has tracked.
> KCQs registered with a non-zero pipe slot may not be correctly handled, 
> leaving
> them in an inconsistent state after resume.
>
> v3: fix the schedule pipe issue
>
> Suggested-by: Michael Chen <[email protected]>
> Suggested-by: Alex Deucher <[email protected]>
> Suggested-by: Shaoyun Liu <[email protected]>
> Signed-off-by: Jesse Zhang <[email protected]>
> ---
>  drivers/gpu/drm/amd/amdgpu/mes_v12_0.c | 22 ++++++++++++++++------
>  1 file changed, 16 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v12_0.c
> b/drivers/gpu/drm/amd/amdgpu/mes_v12_0.c
> index 023c7345ea54..67fb5161c0e5 100644
> --- a/drivers/gpu/drm/amd/amdgpu/mes_v12_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/mes_v12_0.c
> @@ -528,10 +528,15 @@ static int mes_v12_0_map_legacy_queue(struct
> amdgpu_mes *mes,
>               convert_to_mes_queue_type(input->queue_type);
>       mes_add_queue_pkt.map_legacy_kq = 1;
>
> -     if (mes->adev->enable_uni_mes)
> -             pipe = AMDGPU_MES_KIQ_PIPE;
> -     else
> +     if (mes->adev->enable_uni_mes) {
> +             /* Keep scheduler queue on KIQ pipe; map all other kernel queues
> on sched pipe. */
> +             if (input->queue_type == AMDGPU_RING_TYPE_MES)
> +                     pipe = AMDGPU_MES_KIQ_PIPE;
> +             else
> +                     pipe = AMDGPU_MES_SCHED_PIPE;
> +     } else {
>               pipe = AMDGPU_MES_SCHED_PIPE;
> +     }
>
>       return mes_v12_0_submit_pkt_and_poll_completion(mes, pipe,
>                       &mes_add_queue_pkt, sizeof(mes_add_queue_pkt), @@ -
> 567,10 +572,15 @@ static int mes_v12_0_unmap_legacy_queue(struct
> amdgpu_mes *mes,
>                       convert_to_mes_queue_type(input->queue_type);
>       }
>
> -     if (mes->adev->enable_uni_mes)
> -             pipe = AMDGPU_MES_KIQ_PIPE;
> -     else
> +     if (mes->adev->enable_uni_mes) {
> +             /* Keep scheduler queue on KIQ pipe; unmap all other kernel 
> queues
> on sched pipe. */
> +             if (input->queue_type == AMDGPU_RING_TYPE_MES)
> +                     pipe = AMDGPU_MES_KIQ_PIPE;
> +             else
> +                     pipe = AMDGPU_MES_SCHED_PIPE;
> +     } else {
>               pipe = AMDGPU_MES_SCHED_PIPE;
> +     }
>
>       return mes_v12_0_submit_pkt_and_poll_completion(mes, pipe,
>                       &mes_remove_queue_pkt, sizeof(mes_remove_queue_pkt),
> --
> 2.49.0

Reply via email to