lkml.org 
[lkml]   [2022]   [Sep]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 001/141] drm/amdgpu: move nbio sdma_doorbell_range() into sdma code for vega
    Date
    From: Alex Deucher <alexander.deucher@amd.com>

    [ Upstream commit e3163bc8ffdfdb405e10530b140135b2ee487f89 ]

    This mirrors what we do for other asics and this way we are
    sure the sdma doorbell range is properly initialized.

    There is a comment about the way doorbells on gfx9 work that
    requires that they are initialized for other IPs before GFX
    is initialized. However, the statement says that it applies to
    multimedia as well, but the VCN code currently initializes
    doorbells after GFX and there are no known issues there. In my
    testing at least I don't see any problems on SDMA.

    This is a prerequisite for fixing the Unsupported Request error
    reported through AER during driver load.

    Link: https://bugzilla.kernel.org/show_bug.cgi?id=216373

    The error was unnoticed before and got visible because of the commit
    referenced below. This doesn't fix anything in the commit below, rather
    fixes the issue in amdgpu exposed by the commit. The reference is only
    to associate this commit with below one so that both go together.

    Fixes: 8795e182b02d ("PCI/portdrv: Don't disable AER reporting in get_port_device_capability()")

    Acked-by: Christian König <christian.koenig@amd.com>
    Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 5 +++++
    drivers/gpu/drm/amd/amdgpu/soc15.c | 25 -------------------------
    2 files changed, 5 insertions(+), 25 deletions(-)

    diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
    index 1f2e2460e121..a1a8e026b9fa 100644
    --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
    +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
    @@ -1475,6 +1475,11 @@ static int sdma_v4_0_start(struct amdgpu_device *adev)
    WREG32_SDMA(i, mmSDMA0_CNTL, temp);

    if (!amdgpu_sriov_vf(adev)) {
    + ring = &adev->sdma.instance[i].ring;
    + adev->nbio.funcs->sdma_doorbell_range(adev, i,
    + ring->use_doorbell, ring->doorbell_index,
    + adev->doorbell_index.sdma_doorbell_range);
    +
    /* unhalt engine */
    temp = RREG32_SDMA(i, mmSDMA0_F32_CNTL);
    temp = REG_SET_FIELD(temp, SDMA0_F32_CNTL, HALT, 0);
    diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c b/drivers/gpu/drm/amd/amdgpu/soc15.c
    index 7212b9900e0a..abd649285a22 100644
    --- a/drivers/gpu/drm/amd/amdgpu/soc15.c
    +++ b/drivers/gpu/drm/amd/amdgpu/soc15.c
    @@ -1332,25 +1332,6 @@ static int soc15_common_sw_fini(void *handle)
    return 0;
    }

    -static void soc15_doorbell_range_init(struct amdgpu_device *adev)
    -{
    - int i;
    - struct amdgpu_ring *ring;
    -
    - /* sdma/ih doorbell range are programed by hypervisor */
    - if (!amdgpu_sriov_vf(adev)) {
    - for (i = 0; i < adev->sdma.num_instances; i++) {
    - ring = &adev->sdma.instance[i].ring;
    - adev->nbio.funcs->sdma_doorbell_range(adev, i,
    - ring->use_doorbell, ring->doorbell_index,
    - adev->doorbell_index.sdma_doorbell_range);
    - }
    -
    - adev->nbio.funcs->ih_doorbell_range(adev, adev->irq.ih.use_doorbell,
    - adev->irq.ih.doorbell_index);
    - }
    -}
    -
    static int soc15_common_hw_init(void *handle)
    {
    struct amdgpu_device *adev = (struct amdgpu_device *)handle;
    @@ -1370,12 +1351,6 @@ static int soc15_common_hw_init(void *handle)

    /* enable the doorbell aperture */
    soc15_enable_doorbell_aperture(adev, true);
    - /* HW doorbell routing policy: doorbell writing not
    - * in SDMA/IH/MM/ACV range will be routed to CP. So
    - * we need to init SDMA/IH/MM/ACV doorbell range prior
    - * to CP ip block init and ring test.
    - */
    - soc15_doorbell_range_init(adev);

    return 0;
    }
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-09-26 12:55    [W:4.273 / U:0.528 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site