• Alex Deucher's avatar
    drm/amdgpu: fix sdma doorbell init ordering on APUs · 50b0e4d4
    Alex Deucher authored
    Commit 8795e182 ("PCI/portdrv: Don't disable AER reporting in get_port_device_capability()")
    uncovered a bug in amdgpu that required a reordering of the driver
    init sequence to avoid accessing a special register on the GPU
    before it was properly set up leading to an PCI AER error.  This
    reordering uncovered a different hw programming ordering dependency
    in some APUs where the SDMA doorbells need to be programmed before
    the GFX doorbells. To fix this, move the SDMA doorbell programming
    back into the soc15 common code, but use the actual doorbell range
    values directly rather than the values stored in the ring structure
    since those will not be initialized at this point.
    
    This is a partial revert, but with the doorbell assignment
    fixed so the proper doorbell index is set before it's used.
    
    Fixes: e3163bc8 ("drm/amdgpu: move nbio sdma_doorbell_range() into sdma code for vega")
    Acked-by: default avatarChristian König <christian.koenig@amd.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    Cc: skhan@linuxfoundation.org
    Cc: stable@vger.kernel.org
    50b0e4d4
soc15.c 41.4 KB