Skip to content

Commit 8715a7a

Browse files
Timur Kristófalexdeucher
authored andcommitted
drm/amdgpu/gmc7: Delegate VM faults to soft IRQ handler ring
On old GPUs, it may be an issue that handling the interrupts from VM faults is too slow and the interrupt handler (IH) ring may overflow, which can cause an eventual hang. Delegate the processing of all VM faults to the soft IRQ handler ring. As a result, we spend much less time in the IRQ handler that interacts with the HW IH ring, which significantly reduces the chance of hangs/reboots. Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
1 parent 4996b4c commit 8715a7a

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1261,6 +1261,12 @@ static int gmc_v7_0_process_interrupt(struct amdgpu_device *adev,
12611261
{
12621262
u32 addr, status, mc_client, vmid;
12631263

1264+
/* Delegate to the soft IRQ handler ring */
1265+
if (adev->irq.ih_soft.enabled && entry->ih != &adev->irq.ih_soft) {
1266+
amdgpu_irq_delegate(adev, entry, 4);
1267+
return 1;
1268+
}
1269+
12641270
addr = RREG32(mmVM_CONTEXT1_PROTECTION_FAULT_ADDR);
12651271
status = RREG32(mmVM_CONTEXT1_PROTECTION_FAULT_STATUS);
12661272
mc_client = RREG32(mmVM_CONTEXT1_PROTECTION_FAULT_MCCLIENT);

0 commit comments

Comments
 (0)