Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/amdgpu/cz_ih: Enable soft IRQ handler ring

We are going to use the soft IRQ handler ring on GMC v8
to process interrupts from VM faults.

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>

authored by

Timur Kristóf and committed by
Alex Deucher
488d9e7c f8085859

+10
+10
drivers/gpu/drm/amd/amdgpu/cz_ih.c
··· 157 157 /* enable interrupts */ 158 158 cz_ih_enable_interrupts(adev); 159 159 160 + if (adev->irq.ih_soft.ring_size) 161 + adev->irq.ih_soft.enabled = true; 162 + 160 163 return 0; 161 164 } 162 165 ··· 196 193 u32 wptr, tmp; 197 194 198 195 wptr = le32_to_cpu(*ih->wptr_cpu); 196 + 197 + if (ih == &adev->irq.ih_soft) 198 + goto out; 199 199 200 200 if (!REG_GET_FIELD(wptr, IH_RB_WPTR, RB_OVERFLOW)) 201 201 goto out; ··· 300 294 struct amdgpu_device *adev = ip_block->adev; 301 295 302 296 r = amdgpu_ih_ring_init(adev, &adev->irq.ih, 64 * 1024, false); 297 + if (r) 298 + return r; 299 + 300 + r = amdgpu_ih_ring_init(adev, &adev->irq.ih_soft, IH_SW_RING_SIZE, true); 303 301 if (r) 304 302 return r; 305 303