On Monday, July 6, 2026 11:27:50 PM Central European Summer Time Mukul Joshi wrote: > Hi Timur, > > For Navi3x, please make the similar change as I suggested for Navi4x to > enable the doorbell path along with your > existing changes and use doorbell to clear the CAM entries. > > diff --git a/drivers/gpu/drm/amd/amdgpu/nbio_v4_3.c > b/drivers/gpu/drm/amd/amdgpu/nbio_v4_3.c > index f89e5f40e1a5..a66e3073aed8 100644 > --- a/drivers/gpu/drm/amd/amdgpu/nbio_v4_3.c > +++ b/drivers/gpu/drm/amd/amdgpu/nbio_v4_3.c > @@ -199,7 +199,7 @@ static void nbio_v4_3_ih_doorbell_range(struct > amdgpu_device *adev, > ih_doorbell_range = REG_SET_FIELD(ih_doorbell_range, > S2A_DOORBELL_ENTRY_1_CTRL, > S2A_DOORBELL_PORT1_RANGE_SIZE, > - 2); > + 8); > ih_doorbell_range = REG_SET_FIELD(ih_doorbell_range, > > Please let us know how it goes. > > Thanks and regards, > > Mukul
Hi Mukul, Sorry for the late reply. I've now tested this on Navi 31 and with this change the doorbell works correctly for the retry CAM. I will test the same on Navi 48 next week. If it works well then I will drop the patches that use the MMIO register and I'm fine using the doorbell. Thanks & best regards, Timur > > On 7/6/2026 2:04 PM, Joshi, Mukul wrote: > > AMD General > > > >> -----Original Message----- > >> From: Timur Kristóf<[email protected]> > >> Sent: Friday, July 3, 2026 2:47 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]> > >> Subject: Re: [PATCH 11/14] drm/amdgpu/ih6.0: Use MMIO ACK for retry > >> CAM on IH 6.0 > >> > >> 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. > > > > Hi Timur, > > > >> Can you please be more specific and elaborate on what we need to do on > >> the > >> NBIO > >> ih_doorbell_range() function? > > > > Through NBIO, we route the doorbell to the correct HW block. > > That is currently not enabled/done for the IH CAM doorbell. > > So, you basically need to enable it inside ih_doorbell_range() function. > > > >> Also, can you say which NBIO version is used > >> for for Navi 3 and Navi 4 GPUs? > > > > Navi3 --> NBIO v4.3 (nbio_v4_3.c) > > Navi4 --> NBIO v6.3.1 (nbif_v6_3_1.c) > > > > I am working on the change that you need to enable the doorbell path for > > Navi4x first. Once that is working, I can send you a test patch for > > enabling it on Navi3x. > > > > Regards, > > Mukul > > > >>> 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
