[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
