[PATCH 2/2] drm/amdgpu: calculate MCUMC_ADDRT0 per asic's UMC offset

Alex Deucher alexdeucher at gmail.com
Thu Jan 9 03:33:45 UTC 2020


On Wed, Jan 8, 2020 at 8:10 PM Guchun Chen <guchun.chen at amd.com> wrote:
>
> Hardcoded offset is not friendly. And another benifit of this
> patch is to keep read and write access to this register be
> consistent with other similar UMC regsiters  in this file.
>
> Signed-off-by: Guchun Chen <guchun.chen at amd.com>

Series is:
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  drivers/gpu/drm/amd/amdgpu/umc_v6_1.c | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/umc_v6_1.c b/drivers/gpu/drm/amd/amdgpu/umc_v6_1.c
> index 11e924dd88ff..11428b66c74e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/umc_v6_1.c
> +++ b/drivers/gpu/drm/amd/amdgpu/umc_v6_1.c
> @@ -30,8 +30,6 @@
>  #include "umc/umc_6_1_1_sh_mask.h"
>  #include "umc/umc_6_1_2_offset.h"
>
> -#define smnMCA_UMC0_MCUMC_ADDRT0       0x50f10
> -
>  #define UMC_6_INST_DIST                        0x40000
>
>  /*
> @@ -186,7 +184,7 @@ static void umc_v6_1_query_error_address(struct amdgpu_device *adev,
>                                          uint32_t umc_inst)
>  {
>         uint32_t lsb, mc_umc_status_addr;
> -       uint64_t mc_umc_status, err_addr, retired_page;
> +       uint64_t mc_umc_status, err_addr, retired_page, mc_umc_addrt0;
>         struct eeprom_table_record *err_rec;
>         uint32_t channel_index = adev->umc.channel_idx_tbl[umc_inst * adev->umc.channel_inst_num + ch_inst];
>
> @@ -194,10 +192,14 @@ static void umc_v6_1_query_error_address(struct amdgpu_device *adev,
>                 /* UMC 6_1_2 registers */
>                 mc_umc_status_addr =
>                         SOC15_REG_OFFSET(UMC, 0, mmMCA_UMC_UMC0_MCUMC_STATUST0_ARCT);
> +               mc_umc_addrt0 =
> +                       SOC15_REG_OFFSET(UMC, 0, mmMCA_UMC_UMC0_MCUMC_ADDRT0_ARCT);
>         } else {
>                 /* UMC 6_1_1 registers */
>                 mc_umc_status_addr =
>                         SOC15_REG_OFFSET(UMC, 0, mmMCA_UMC_UMC0_MCUMC_STATUST0);
> +               mc_umc_addrt0 =
> +                       SOC15_REG_OFFSET(UMC, 0, mmMCA_UMC_UMC0_MCUMC_ADDRT0);
>         }
>
>         /* skip error address process if -ENOMEM */
> @@ -214,7 +216,7 @@ static void umc_v6_1_query_error_address(struct amdgpu_device *adev,
>         if (REG_GET_FIELD(mc_umc_status, MCA_UMC_UMC0_MCUMC_STATUST0, Val) == 1 &&
>             (REG_GET_FIELD(mc_umc_status, MCA_UMC_UMC0_MCUMC_STATUST0, UECC) == 1 ||
>             REG_GET_FIELD(mc_umc_status, MCA_UMC_UMC0_MCUMC_STATUST0, CECC) == 1)) {
> -               err_addr = RREG64_PCIE(smnMCA_UMC0_MCUMC_ADDRT0 + umc_reg_offset * 4);
> +               err_addr = RREG64_PCIE((mc_umc_addrt0 + umc_reg_offset) * 4);
>
>                 /* the lowest lsb bits should be ignored */
>                 lsb = REG_GET_FIELD(err_addr, MCA_UMC_UMC0_MCUMC_ADDRT0, LSB);
> --
> 2.17.1
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list