Skip to content

Commit 93522c1

Browse files
amd-sukhatrialexdeucher
authored andcommitted
drm/amdgpu: enable redirection of irq's for IH V6.1
Enable redirection of irq for pagefaults for specific clients to avoid overflow without dropping interrupts. So here we redirect the interrupts to another IH ring i.e ring1 where only these interrupts are processed. Signed-off-by: Sunil Khatri <[email protected]> Reviewed-by: Christian König <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent ea13707 commit 93522c1

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

drivers/gpu/drm/amd/amdgpu/ih_v6_1.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,21 @@ static int ih_v6_1_irq_init(struct amdgpu_device *adev)
346346
DELAY, 3);
347347
WREG32_SOC15(OSSSYS, 0, regIH_MSI_STORM_CTRL, tmp);
348348

349+
/* Redirect the interrupts to IH RB1 for dGPU */
350+
if (adev->irq.ih1.ring_size) {
351+
tmp = RREG32_SOC15(OSSSYS, 0, regIH_RING1_CLIENT_CFG_INDEX);
352+
tmp = REG_SET_FIELD(tmp, IH_RING1_CLIENT_CFG_INDEX, INDEX, 0);
353+
WREG32_SOC15(OSSSYS, 0, regIH_RING1_CLIENT_CFG_INDEX, tmp);
354+
355+
tmp = RREG32_SOC15(OSSSYS, 0, regIH_RING1_CLIENT_CFG_DATA);
356+
tmp = REG_SET_FIELD(tmp, IH_RING1_CLIENT_CFG_DATA, CLIENT_ID, 0xa);
357+
tmp = REG_SET_FIELD(tmp, IH_RING1_CLIENT_CFG_DATA, SOURCE_ID, 0x0);
358+
tmp = REG_SET_FIELD(tmp, IH_RING1_CLIENT_CFG_DATA,
359+
SOURCE_ID_MATCH_ENABLE, 0x1);
360+
361+
WREG32_SOC15(OSSSYS, 0, regIH_RING1_CLIENT_CFG_DATA, tmp);
362+
}
363+
349364
pci_set_master(adev->pdev);
350365

351366
/* enable interrupts */

0 commit comments

Comments
 (0)