Hi Timur,
For Navi4x, can you please give this change to enable the doorbell path a try in
addition to your changes and use doorbells then to clear the CAM entries:


diff --git a/drivers/gpu/drm/amd/amdgpu/nbif_v6_3_1.c b/drivers/gpu/drm/amd/amdgpu/nbif_v6_3_1.c
index b6f832c53860..8aefe64fcd41 100644
--- a/drivers/gpu/drm/amd/amdgpu/nbif_v6_3_1.c
+++ b/drivers/gpu/drm/amd/amdgpu/nbif_v6_3_1.c
@@ -251,7 +251,7 @@ static void nbif_v6_3_1_ih_doorbell_range(struct amdgpu_device *adev,
                ih_doorbell_range = REG_SET_FIELD(ih_doorbell_range,
GDC_S2A0_S2A_DOORBELL_ENTRY_1_CTRL,
S2A_DOORBELL_PORT1_RANGE_SIZE,
-                                                 2);
+                                                 8);


Please let us know how it goes.


Thanks and regards,
Mukul

On 7/6/2026 1:48 PM, Joshi, Mukul wrote:
AMD General

-----Original Message-----
From: Timur Kristóf<[email protected]>
Sent: Friday, July 3, 2026 2:41 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 12/14] drm/amdgpu/ih7.0: Use MMIO ACK instead of
doorbell for retry CAM on IH 7.0

On 2026. július 3., péntek 18:31:12 közép-európai nyári idő Joshi, Mukul
wrote:
AMD General


-----Original Message-----
From: amd-gfx<[email protected]> On Behalf Of
Timur Kristóf
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 12/14] drm/amdgpu/ih7.0: Use MMIO ACK instead of
doorbell for retry CAM on IH 7.0



The doorbell is not working on Navi 48.
Use the IH_RETRY_CAM_ACK register just like on Navi 3x.



Signed-off-by: Timur Kristóf<[email protected]>
---

  drivers/gpu/drm/amd/amdgpu/ih_v7_0.c | 17 +----------------
  1 file changed, 1 insertion(+), 16 deletions(-)



diff --git a/drivers/gpu/drm/amd/amdgpu/ih_v7_0.c
b/drivers/gpu/drm/amd/amdgpu/ih_v7_0.c
index f1de6450a31d..291326d2ee8b 100644
--- a/drivers/gpu/drm/amd/amdgpu/ih_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/ih_v7_0.c
@@ -279,19 +279,9 @@ static int ih_v7_0_enable_ring(struct
amdgpu_device *adev,

       return 0;

  }



-static uint32_t ih_v7_0_setup_retry_doorbell(u32 doorbell_index) -{
-     u32 val = 0;
-
-     val = REG_SET_FIELD(val, IH_DOORBELL_RPTR, OFFSET,
doorbell_index);
-     val = REG_SET_FIELD(val, IH_DOORBELL_RPTR, ENABLE, 1);
-
-     return val;
-}
-

  static void ih_v7_0_retry_cam_ack(struct amdgpu_device *adev, u32

cam_index)  {
-     WDOORBELL32(adev->irq.retry_cam_doorbell_index, cam_index);
+     WREG32_SOC15(OSSSYS, 0, regIH_RETRY_CAM_ACK, cam_index);

  }



  #define regIH_RING1_CLIENT_CFG_INDEX_V7_1             0x122

@@ -401,11 +391,6 @@ static int ih_v7_0_irq_init(struct
amdgpu_device
*adev)

       pci_set_master(adev->pdev);



       if (amdgpu_ip_version(adev, OSSSYS_HWIP, 0) == IP_VERSION(7,
1, 0))

{

We are re-purposing the IH 7.0 file for IH v7.1 since most of it is same.
The code being removed below is for IH 7.1 and not 7.0.
Using doorbells for acking INT CAM works completely fine for GFX 12.1
and IH 7.1.
I would recommend to drop this patch.

Hello Mukul,

Unfortunately I couldn't figure out how to get the doorbell working on Navi 48
and in the previous thread Amir said that it also didn't work for him, and 
that's
why I decided to try the MMIO register.

If you have an idea how to get the doorbell to work on Navi 48, I'm happy to
try your suggestion.

Ideally I'd prefer a solution here that works on both Navi 48 and GFX12.1 to
keep the code maintainable. If it's not possible then we can also have a 
slightly
different code path for the two different IH versions here.

Hi Timur,

As I had mentioned on the other patch, we need to enable the NBIO path to route
the doorbell correctly. That’s the reason wy your doorbells are not working on
Navi3x and Navi4x.

I am working on the change for Navi4x first and will send it out to you soon 
one I have verified it on
my end.

Regards,
Mukul


Thanks & best regards,
Timur


-             /* Allocate the doorbell for IH Retry CAM */
-             adev->irq.retry_cam_doorbell_index = (adev-

doorbell_index.ih + 2) << 1;
-             WREG32_SOC15(OSSSYS, 0, regIH_DOORBELL_RETRY_CAM,
-                             ih_v7_0_setup_retry_doorbell(adev-

irq.retry_cam_doorbell_index));
-

               /* Enable IH Retry CAM */
               tmp = RREG32_SOC15(OSSSYS, 0,

regIH_RETRY_INT_CAM_CNTL);

               tmp = REG_SET_FIELD(tmp, IH_RETRY_INT_CAM_CNTL,

ENABLE, 1);
--
2.54.0


Reply via email to