Am 2020-09-02 um 2:08 p.m. schrieb Alex Deucher: > On Wed, Sep 2, 2020 at 1:01 PM Alex Sierra <alex.sierra@xxxxxxx> wrote: >> Enable multi-ring ih1 and ih2 for Arcturus only. >> For Navi10 family multi-ring has been disabled. >> Apparently, having multi-ring enabled in Navi was causing >> continus page fault interrupts. >> Further investigation is needed to get to the root cause. >> Related issue link: >> https://gitlab.freedesktop.org/drm/amd/-/issues/1279 >> > Before committing, let's verify that it fixes that issue. Has anyone reproduced this in AMD? Or should we ask the gitlab issue reporter to test the patch? Thanks, Felix > > Alex > > >> Signed-off-by: Alex Sierra <alex.sierra@xxxxxxx> >> --- >> drivers/gpu/drm/amd/amdgpu/navi10_ih.c | 30 ++++++++++++++++---------- >> 1 file changed, 19 insertions(+), 11 deletions(-) >> >> diff --git a/drivers/gpu/drm/amd/amdgpu/navi10_ih.c b/drivers/gpu/drm/amd/amdgpu/navi10_ih.c >> index 350f1bf063c6..4d73869870ab 100644 >> --- a/drivers/gpu/drm/amd/amdgpu/navi10_ih.c >> +++ b/drivers/gpu/drm/amd/amdgpu/navi10_ih.c >> @@ -306,7 +306,8 @@ static int navi10_ih_irq_init(struct amdgpu_device *adev) >> } else { >> WREG32_SOC15(OSSSYS, 0, mmIH_RB_CNTL, ih_rb_cntl); >> } >> - navi10_ih_reroute_ih(adev); >> + if (adev->asic_type == CHIP_ARCTURUS) >> + navi10_ih_reroute_ih(adev); >> >> if (unlikely(adev->firmware.load_type == AMDGPU_FW_LOAD_DIRECT)) { >> if (ih->use_bus_addr) { >> @@ -668,19 +669,26 @@ static int navi10_ih_sw_init(void *handle) >> adev->irq.ih.use_doorbell = true; >> adev->irq.ih.doorbell_index = adev->doorbell_index.ih << 1; >> >> - r = amdgpu_ih_ring_init(adev, &adev->irq.ih1, PAGE_SIZE, true); >> - if (r) >> - return r; >> + adev->irq.ih1.ring_size = 0; >> + adev->irq.ih2.ring_size = 0; >> >> - adev->irq.ih1.use_doorbell = true; >> - adev->irq.ih1.doorbell_index = (adev->doorbell_index.ih + 1) << 1; >> + if (adev->asic_type == CHIP_ARCTURUS) { >> + r = amdgpu_ih_ring_init(adev, &adev->irq.ih1, PAGE_SIZE, true); >> + if (r) >> + return r; >> >> - r = amdgpu_ih_ring_init(adev, &adev->irq.ih2, PAGE_SIZE, true); >> - if (r) >> - return r; >> + adev->irq.ih1.use_doorbell = true; >> + adev->irq.ih1.doorbell_index = >> + (adev->doorbell_index.ih + 1) << 1; >> + >> + r = amdgpu_ih_ring_init(adev, &adev->irq.ih2, PAGE_SIZE, true); >> + if (r) >> + return r; >> >> - adev->irq.ih2.use_doorbell = true; >> - adev->irq.ih2.doorbell_index = (adev->doorbell_index.ih + 2) << 1; >> + adev->irq.ih2.use_doorbell = true; >> + adev->irq.ih2.doorbell_index = >> + (adev->doorbell_index.ih + 2) << 1; >> + } >> >> r = amdgpu_irq_init(adev); >> >> -- >> 2.17.1 >> >> _______________________________________________ >> amd-gfx mailing list >> amd-gfx@xxxxxxxxxxxxxxxxxxxxx >> https://lists.freedesktop.org/mailman/listinfo/amd-gfx > _______________________________________________ > amd-gfx mailing list > amd-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx