diff --git a/drivers/gpu/nvgpu/hal/gr/ecc/ecc_gp10b.c b/drivers/gpu/nvgpu/hal/gr/ecc/ecc_gp10b.c index a9269c8a5..19a5a38fc 100644 --- a/drivers/gpu/nvgpu/hal/gr/ecc/ecc_gp10b.c +++ b/drivers/gpu/nvgpu/hal/gr/ecc/ecc_gp10b.c @@ -126,66 +126,27 @@ void gp10b_ecc_detect_enabled_units(struct gk20a *g) static int gp10b_ecc_init_tpc_sm(struct gk20a *g) { - int err = 0; + NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_lrf_ecc_single_err_count); + NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_lrf_ecc_double_err_count); + NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_shm_ecc_sec_count); + NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_shm_ecc_sed_count); + NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_shm_ecc_ded_count); - err = NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_lrf_ecc_single_err_count); - if (err != 0) { - goto init_tpc_sm_err; - } - err = NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_lrf_ecc_double_err_count); - if (err != 0) { - goto init_tpc_sm_err; - } - err = NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_shm_ecc_sec_count); - if (err != 0) { - goto init_tpc_sm_err; - } - err = NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_shm_ecc_sed_count); - if (err != 0) { - goto init_tpc_sm_err; - } - err = NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_shm_ecc_ded_count); - -init_tpc_sm_err: - return err; + return 0; } static int gp10b_ecc_init_tpc_tex(struct gk20a *g) { - int err = 0; + NVGPU_ECC_COUNTER_INIT_PER_TPC(tex_ecc_total_sec_pipe0_count); + NVGPU_ECC_COUNTER_INIT_PER_TPC(tex_ecc_total_ded_pipe0_count); + NVGPU_ECC_COUNTER_INIT_PER_TPC(tex_unique_ecc_sec_pipe0_count); + NVGPU_ECC_COUNTER_INIT_PER_TPC(tex_unique_ecc_ded_pipe0_count); + NVGPU_ECC_COUNTER_INIT_PER_TPC(tex_ecc_total_sec_pipe1_count); + NVGPU_ECC_COUNTER_INIT_PER_TPC(tex_ecc_total_ded_pipe1_count); + NVGPU_ECC_COUNTER_INIT_PER_TPC(tex_unique_ecc_sec_pipe1_count); + NVGPU_ECC_COUNTER_INIT_PER_TPC(tex_unique_ecc_ded_pipe1_count); - err = NVGPU_ECC_COUNTER_INIT_PER_TPC(tex_ecc_total_sec_pipe0_count); - if (err != 0) { - goto init_tpc_tex_err; - } - err = NVGPU_ECC_COUNTER_INIT_PER_TPC(tex_ecc_total_ded_pipe0_count); - if (err != 0) { - goto init_tpc_tex_err; - } - err = NVGPU_ECC_COUNTER_INIT_PER_TPC(tex_unique_ecc_sec_pipe0_count); - if (err != 0) { - goto init_tpc_tex_err; - } - err = NVGPU_ECC_COUNTER_INIT_PER_TPC(tex_unique_ecc_ded_pipe0_count); - if (err != 0) { - goto init_tpc_tex_err; - } - err = NVGPU_ECC_COUNTER_INIT_PER_TPC(tex_ecc_total_sec_pipe1_count); - if (err != 0) { - goto init_tpc_tex_err; - } - err = NVGPU_ECC_COUNTER_INIT_PER_TPC(tex_ecc_total_ded_pipe1_count); - if (err != 0) { - goto init_tpc_tex_err; - } - err = NVGPU_ECC_COUNTER_INIT_PER_TPC(tex_unique_ecc_sec_pipe1_count); - if (err != 0) { - goto init_tpc_tex_err; - } - err = NVGPU_ECC_COUNTER_INIT_PER_TPC(tex_unique_ecc_ded_pipe1_count); - -init_tpc_tex_err: - return err; + return 0; } static int gp10b_ecc_init_tpc(struct gk20a *g) diff --git a/drivers/gpu/nvgpu/hal/gr/ecc/ecc_gv11b_fusa.c b/drivers/gpu/nvgpu/hal/gr/ecc/ecc_gv11b_fusa.c index 7f7098b4d..cb89a6f0e 100644 --- a/drivers/gpu/nvgpu/hal/gr/ecc/ecc_gv11b_fusa.c +++ b/drivers/gpu/nvgpu/hal/gr/ecc/ecc_gv11b_fusa.c @@ -482,56 +482,18 @@ void gv11b_ecc_detect_enabled_units(struct gk20a *g) static int gv11b_ecc_init_tpc(struct gk20a *g) { - int err = 0; + NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_lrf_ecc_single_err_count); + NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_lrf_ecc_double_err_count); + NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_l1_tag_ecc_corrected_err_count); + NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_l1_tag_ecc_uncorrected_err_count); + NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_cbu_ecc_corrected_err_count); + NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_cbu_ecc_uncorrected_err_count); + NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_l1_data_ecc_corrected_err_count); + NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_l1_data_ecc_uncorrected_err_count); + NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_icache_ecc_corrected_err_count); + NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_icache_ecc_uncorrected_err_count); - err = NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_lrf_ecc_single_err_count); - if (err != 0) { - goto init_tpc_done; - } - err = NVGPU_ECC_COUNTER_INIT_PER_TPC(sm_lrf_ecc_double_err_count); - if (err != 0) { - goto init_tpc_done; - } - err = NVGPU_ECC_COUNTER_INIT_PER_TPC( - sm_l1_tag_ecc_corrected_err_count); - if (err != 0) { - goto init_tpc_done; - } - err = NVGPU_ECC_COUNTER_INIT_PER_TPC( - sm_l1_tag_ecc_uncorrected_err_count); - if (err != 0) { - goto init_tpc_done; - } - err = NVGPU_ECC_COUNTER_INIT_PER_TPC( - sm_cbu_ecc_corrected_err_count); - if (err != 0) { - goto init_tpc_done; - } - err = NVGPU_ECC_COUNTER_INIT_PER_TPC( - sm_cbu_ecc_uncorrected_err_count); - if (err != 0) { - goto init_tpc_done; - } - err = NVGPU_ECC_COUNTER_INIT_PER_TPC( - sm_l1_data_ecc_corrected_err_count); - if (err != 0) { - goto init_tpc_done; - } - err = NVGPU_ECC_COUNTER_INIT_PER_TPC( - sm_l1_data_ecc_uncorrected_err_count); - if (err != 0) { - goto init_tpc_done; - } - err = NVGPU_ECC_COUNTER_INIT_PER_TPC( - sm_icache_ecc_corrected_err_count); - if (err != 0) { - goto init_tpc_done; - } - err = NVGPU_ECC_COUNTER_INIT_PER_TPC( - sm_icache_ecc_uncorrected_err_count); - -init_tpc_done: - return err; + return 0; } static int gv11b_ecc_init_gpc(struct gk20a *g) diff --git a/drivers/gpu/nvgpu/include/nvgpu/ecc.h b/drivers/gpu/nvgpu/include/nvgpu/ecc.h index 3d2727397..10b9f3a67 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/ecc.h +++ b/drivers/gpu/nvgpu/include/nvgpu/ecc.h @@ -123,8 +123,15 @@ struct nvgpu_ecc { int nvgpu_ecc_counter_init_per_tpc(struct gk20a *g, struct nvgpu_ecc_stat ***stat, const char *name); -#define NVGPU_ECC_COUNTER_INIT_PER_TPC(stat) \ - nvgpu_ecc_counter_init_per_tpc(g, &g->ecc.gr.stat, #stat) +#define NVGPU_ECC_COUNTER_INIT_PER_TPC(stat) \ + do { \ + int err = 0; \ + err = nvgpu_ecc_counter_init_per_tpc(g, \ + &g->ecc.gr.stat, #stat);\ + if (err != 0) { \ + return err; \ + } \ + } while (false) int nvgpu_ecc_counter_init_per_gpc(struct gk20a *g, struct nvgpu_ecc_stat **stat, const char *name);