On 2026. július 2., csütörtök 12:23:42 közép-európai nyári idő Christian König 
wrote:
> On 7/1/26 18:17, Timur Kristóf wrote:
> > The doorbell is not working on Navi 31.
> > Use the IH_RETRY_CAM_ACK register.
> > 
> > Signed-off-by: Timur Kristóf <[email protected]>
> 
> Acked-by: Christian König <[email protected]>
> 
> I still haven't found any explanation why we use a doorbell for the CAM in
> the first place? Lijo, Alex, Felix does anybody know that?

The first mention of the retry CAM in the kernel is:
commit 318e431b306e - drm/amdgpu: Enable IH retry CAM on GFX9
which was written by Mukul (also on CC for this series).
Mukul - can you please give us some information on that?

It seems that the IH 7.1 code was just copied from there.

As far as I see, Vega 20 already has the mmIH_RETRY_CAM_ACK register, though I 
don't know why that wasn't used. I guess you guys would have heard from your 
datacenter customers if the current code didn't work on Vega 20 and CDNA.
I can say with certainty that I couldn't get the doorbell working on Navi 31 
or Navi 48.

Unfortunately I don't have a Vega 20 card (or any datacenter GPU) so I can't 
test what actually works there. I have a Vega 10, but it's unclear if that has 
a retry CAM or not.

Thanks & best regards,
Timur

> 
> > ---
> > 
> >  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)




Reply via email to