lkml.org 
[lkml]   [2019]   [Dec]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.19 175/177] drm/amdgpu: fix bad DMA from INTERRUPT_CNTL2
    Date
    From: Sam Bobroff <sbobroff@linux.ibm.com>

    [ Upstream commit 3d0e3ce52ce3eb4b9de3caf9c38dbb5a4d3e13c3 ]

    The INTERRUPT_CNTL2 register expects a valid DMA address, but is
    currently set with a GPU MC address. This can cause problems on
    systems that detect the resulting DMA read from an invalid address
    (found on a Power8 guest).

    Instead, use the DMA address of the dummy page because it will always
    be safe.

    Fixes: 27ae10641e9c ("drm/amdgpu: add interupt handler implementation for si v3")
    Signed-off-by: Sam Bobroff <sbobroff@linux.ibm.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/gpu/drm/amd/amdgpu/si_ih.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/drivers/gpu/drm/amd/amdgpu/si_ih.c b/drivers/gpu/drm/amd/amdgpu/si_ih.c
    index 60dad63098a2a..e40a3fbc3e760 100644
    --- a/drivers/gpu/drm/amd/amdgpu/si_ih.c
    +++ b/drivers/gpu/drm/amd/amdgpu/si_ih.c
    @@ -62,7 +62,8 @@ static int si_ih_irq_init(struct amdgpu_device *adev)
    u64 wptr_off;

    si_ih_disable_interrupts(adev);
    - WREG32(INTERRUPT_CNTL2, adev->irq.ih.gpu_addr >> 8);
    + /* set dummy read address to dummy page address */
    + WREG32(INTERRUPT_CNTL2, adev->dummy_page_addr >> 8);
    interrupt_cntl = RREG32(INTERRUPT_CNTL);
    interrupt_cntl &= ~IH_DUMMY_RD_OVERRIDE;
    interrupt_cntl &= ~IH_REQ_NONSNOOP_EN;
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-12-10 22:36    [W:4.022 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site