AMD General

> -----Original Message-----
> From: Koenig, Christian <[email protected]>
> Sent: Thursday, July 2, 2026 6:24 AM
> To: Timur Kristóf <[email protected]>; [email protected];
> Deucher, Alexander <[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 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?
>

If I remember correctly, we weren't sure if the IH_RETRY_CAM_ACK register would 
be available under
virtualization. And we were sure doorbells would work for both bare-metal and 
virtualization.

Regards,
Mukul

> Thanks,
> Christian.
>
> > ---
> >  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