Commit 045c0216 authored by Tao Zhou's avatar Tao Zhou Committed by Alex Deucher

drm/amdgpu: switch to amdgpu_umc structure

create new amdgpu_umc structure to for more umc
settings in future and switch to the new structure
Signed-off-by: default avatarTao Zhou <tao.zhou1@amd.com>
Signed-off-by: default avatarHawking Zhang <Hawking.Zhang@amd.com>
Reviewed-by: default avatarDennis Li <dennis.li@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 5bbfb64a
...@@ -948,6 +948,9 @@ struct amdgpu_device { ...@@ -948,6 +948,9 @@ struct amdgpu_device {
/* KFD */ /* KFD */
struct amdgpu_kfd_dev kfd; struct amdgpu_kfd_dev kfd;
/* UMC */
struct amdgpu_umc umc;
/* display related functionality */ /* display related functionality */
struct amdgpu_display_manager dm; struct amdgpu_display_manager dm;
...@@ -973,7 +976,6 @@ struct amdgpu_device { ...@@ -973,7 +976,6 @@ struct amdgpu_device {
const struct amdgpu_nbio_funcs *nbio_funcs; const struct amdgpu_nbio_funcs *nbio_funcs;
const struct amdgpu_df_funcs *df_funcs; const struct amdgpu_df_funcs *df_funcs;
const struct amdgpu_umc_funcs *umc_funcs;
/* delayed work_func for deferring clockgating during resume */ /* delayed work_func for deferring clockgating during resume */
struct delayed_work delayed_init_work; struct delayed_work delayed_init_work;
......
...@@ -595,8 +595,8 @@ int amdgpu_ras_error_query(struct amdgpu_device *adev, ...@@ -595,8 +595,8 @@ int amdgpu_ras_error_query(struct amdgpu_device *adev,
switch (info->head.block) { switch (info->head.block) {
case AMDGPU_RAS_BLOCK__UMC: case AMDGPU_RAS_BLOCK__UMC:
if (adev->umc_funcs->query_ras_error_count) if (adev->umc.funcs->query_ras_error_count)
adev->umc_funcs->query_ras_error_count(adev, &err_data); adev->umc.funcs->query_ras_error_count(adev, &err_data);
break; break;
default: default:
break; break;
......
...@@ -26,4 +26,10 @@ struct amdgpu_umc_funcs { ...@@ -26,4 +26,10 @@ struct amdgpu_umc_funcs {
void *ras_error_status); void *ras_error_status);
}; };
struct amdgpu_umc {
/* max error count in one ras query call */
uint32_t max_ras_err_cnt_per_query;
const struct amdgpu_umc_funcs *funcs;
};
#endif #endif
...@@ -247,8 +247,8 @@ static int gmc_v9_0_process_ras_data_cb(struct amdgpu_device *adev, ...@@ -247,8 +247,8 @@ static int gmc_v9_0_process_ras_data_cb(struct amdgpu_device *adev,
{ {
struct ras_err_data err_data = {0, 0}; struct ras_err_data err_data = {0, 0};
kgd2kfd_set_sram_ecc_flag(adev->kfd.dev); kgd2kfd_set_sram_ecc_flag(adev->kfd.dev);
if (adev->umc_funcs->query_ras_error_count) if (adev->umc.funcs->query_ras_error_count)
adev->umc_funcs->query_ras_error_count(adev, &err_data); adev->umc.funcs->query_ras_error_count(adev, &err_data);
amdgpu_ras_reset_gpu(adev, 0); amdgpu_ras_reset_gpu(adev, 0);
return AMDGPU_RAS_UE; return AMDGPU_RAS_UE;
} }
...@@ -635,7 +635,9 @@ static void gmc_v9_0_set_umc_funcs(struct amdgpu_device *adev) ...@@ -635,7 +635,9 @@ static void gmc_v9_0_set_umc_funcs(struct amdgpu_device *adev)
{ {
switch (adev->asic_type) { switch (adev->asic_type) {
case CHIP_VEGA20: case CHIP_VEGA20:
adev->umc_funcs = &umc_v6_1_funcs; adev->umc.max_ras_err_cnt_per_query =
UMC_V6_1_UMC_INSTANCE_NUM * UMC_V6_1_CHANNEL_INSTANCE_NUM;
adev->umc.funcs = &umc_v6_1_funcs;
break; break;
default: default:
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment