On Fri, Jul 3, 2026 at 2:46 PM Timur Kristóf <[email protected]> wrote: > > On 2026. július 3., péntek 19:46:03 közép-európai nyári idő Joshi, Mukul > wrote: > > AMD General > > > > > > > -----Original Message----- > > > From: Timur Kristóf <[email protected]> > > > Sent: Wednesday, July 1, 2026 12:17 PM > > > To: [email protected]; Deucher, Alexander > > > <[email protected]>; Koenig, Christian > > > <[email protected]>; Natalie Vock <[email protected]>; Shetaia, > > > Amir <[email protected]>; Marek Olšák <[email protected]>; > > > Limonciello, Mario <[email protected]>; Tvrtko Ursulin > > > <[email protected]>; Kuehling, Felix <[email protected]>; Lazar, > > > Lijo > > <[email protected]>; He, Siwei <[email protected]>; Yang, Philip > > > <[email protected]>; Joshi, Mukul <[email protected]> > > > Cc: Timur Kristóf <[email protected]> > > > Subject: [PATCH 11/14] drm/amdgpu/ih6.0: Use MMIO ACK for retry CAM on IH > > > 6.0 > > > > > > > > > > > > The doorbell is not working on Navi 31. > > > Use the IH_RETRY_CAM_ACK register. > > > > Hi Mukul, > > > I think the doorbell path is not enabled for IH CAM so that’s probably the > > reason its not working. > > I think we need an update to the NBIO > > ih_doorbell_range() function to enable the doorbell path. > > Can you please be more specific and elaborate on what we need to do on the > NBIO > ih_doorbell_range() function? Also, can you say which NBIO version is used for > for Navi 3 and Navi 4 GPUs?
navi3 dGPUs use nbio_v4_3.c. navi3 APUs use nbio_v7_11.c (strix) and nbio_v7_7.c (phoenix). navi4 uses nbif_v6_3_1.c. Alex > > > Having said that, we intend to use doorbells on all ASICs to ack IH CAMs > > that support retry faults. > > I'm OK with that, if the doorbell really works on these GPUs. > > Thanks & best regards, > Timur > > > > > > > > > > > > > > Signed-off-by: Timur Kristóf <[email protected]> > > > --- > > > > > > drivers/gpu/drm/amd/amdgpu/ih_v6_0.c | 8 +++++++- > > > 1 file changed, 7 insertions(+), 1 deletion(-) > > > > > > > > > > > > diff --git a/drivers/gpu/drm/amd/amdgpu/ih_v6_0.c > > > b/drivers/gpu/drm/amd/amdgpu/ih_v6_0.c > > > index 65e5d21753f9..a97c85b0cb99 100644 > > > --- a/drivers/gpu/drm/amd/amdgpu/ih_v6_0.c > > > +++ b/drivers/gpu/drm/amd/amdgpu/ih_v6_0.c > > > @@ -307,6 +307,11 @@ static int ih_v6_0_enable_ring(struct amdgpu_device > > > *adev, > > > > > > return 0; > > > > > > } > > > > > > > > > > > > +static void ih_v6_0_retry_cam_ack(struct amdgpu_device *adev, u32 > > > +cam_index) { > > > + WREG32_SOC15(OSSSYS, 0, regIH_RETRY_CAM_ACK, cam_index); } > > > + > > > > > > /** > > > > > > * ih_v6_0_irq_init - init and enable the interrupt ring > > > * > > > > > > @@ -807,7 +812,8 @@ static const struct amdgpu_ih_funcs ih_v6_0_funcs = { > > > > > > .get_wptr = ih_v6_0_get_wptr, > > > .decode_iv = amdgpu_ih_decode_iv_helper, > > > .decode_iv_ts = amdgpu_ih_decode_iv_ts_helper, > > > > > > - .set_rptr = ih_v6_0_set_rptr > > > + .set_rptr = ih_v6_0_set_rptr, > > > + .retry_cam_ack = ih_v6_0_retry_cam_ack, > > > > > > }; > > > > > > > > > > > > static void ih_v6_0_set_interrupt_funcs(struct amdgpu_device *adev) > > > > > > -- > > > 2.54.0 > > > > > > > >
