drm/amdgpu: Update amdgpu_device_indirect_r/wreg_ext
authorCandice Li <candice.li@amd.com>
Mon, 4 Sep 2023 09:03:34 +0000 (17:03 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 6 Sep 2023 18:34:26 +0000 (14:34 -0400)
Only calculate pcie_index_hi for register address greater than 32bits.

Signed-off-by: Candice Li <candice.li@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

index 47cd449f30a79c0d1f9bec4afc3459da55088fe2..5f32e8d4f3d389292796491584d42750b33ff8fc 100644 (file)
@@ -572,7 +572,7 @@ u32 amdgpu_device_indirect_rreg_ext(struct amdgpu_device *adev,
 
        pcie_index = adev->nbio.funcs->get_pcie_index_offset(adev);
        pcie_data = adev->nbio.funcs->get_pcie_data_offset(adev);
-       if (adev->nbio.funcs->get_pcie_index_hi_offset)
+       if ((reg_addr >> 32) && (adev->nbio.funcs->get_pcie_index_hi_offset))
                pcie_index_hi = adev->nbio.funcs->get_pcie_index_hi_offset(adev);
        else
                pcie_index_hi = 0;
@@ -728,7 +728,7 @@ void amdgpu_device_indirect_wreg_ext(struct amdgpu_device *adev,
 
        pcie_index = adev->nbio.funcs->get_pcie_index_offset(adev);
        pcie_data = adev->nbio.funcs->get_pcie_data_offset(adev);
-       if (adev->nbio.funcs->get_pcie_index_hi_offset)
+       if ((reg_addr >> 32) && (adev->nbio.funcs->get_pcie_index_hi_offset))
                pcie_index_hi = adev->nbio.funcs->get_pcie_index_hi_offset(adev);
        else
                pcie_index_hi = 0;