diff --git a/drivers/gpu/nvgpu/common/vgpu/ltc/ltc_vgpu.c b/drivers/gpu/nvgpu/common/vgpu/ltc/ltc_vgpu.c index ab24e4a5d..87637e007 100644 --- a/drivers/gpu/nvgpu/common/vgpu/ltc/ltc_vgpu.c +++ b/drivers/gpu/nvgpu/common/vgpu/ltc/ltc_vgpu.c @@ -27,7 +27,7 @@ #include "ltc_vgpu.h" -int vgpu_determine_L2_size_bytes(struct gk20a *g) +u64 vgpu_determine_L2_size_bytes(struct gk20a *g) { struct vgpu_priv_data *priv = vgpu_get_priv_data(g); diff --git a/drivers/gpu/nvgpu/common/vgpu/ltc/ltc_vgpu.h b/drivers/gpu/nvgpu/common/vgpu/ltc/ltc_vgpu.h index bd6676209..9eaddd4f7 100644 --- a/drivers/gpu/nvgpu/common/vgpu/ltc/ltc_vgpu.h +++ b/drivers/gpu/nvgpu/common/vgpu/ltc/ltc_vgpu.h @@ -26,7 +26,7 @@ struct gk20a; struct gr_gk20a; -int vgpu_determine_L2_size_bytes(struct gk20a *g); +u64 vgpu_determine_L2_size_bytes(struct gk20a *g); void vgpu_ltc_init_fs_state(struct gk20a *g); #endif /* NVGPU_LTC_VGPU_H */ diff --git a/drivers/gpu/nvgpu/hal/ltc/ltc_gm20b.c b/drivers/gpu/nvgpu/hal/ltc/ltc_gm20b.c index 34ee0bef1..d323c1ea9 100644 --- a/drivers/gpu/nvgpu/hal/ltc/ltc_gm20b.c +++ b/drivers/gpu/nvgpu/hal/ltc/ltc_gm20b.c @@ -162,20 +162,20 @@ void gm20b_flush_ltc(struct gk20a *g) } } -int gm20b_determine_L2_size_bytes(struct gk20a *g) +u64 gm20b_determine_L2_size_bytes(struct gk20a *g) { u32 lts_per_ltc; u32 ways; u32 sets; u32 bytes_per_line; u32 active_ltcs; - u32 cache_size; + u64 cache_size; u32 tmp; u32 active_sets_value; tmp = gk20a_readl(g, ltc_ltc0_lts0_tstg_cfg1_r()); - ways = hweight32(ltc_ltc0_lts0_tstg_cfg1_active_ways_v(tmp)); + ways = (u32)hweight32(ltc_ltc0_lts0_tstg_cfg1_active_ways_v(tmp)); active_sets_value = ltc_ltc0_lts0_tstg_cfg1_active_sets_v(tmp); if (active_sets_value == ltc_ltc0_lts0_tstg_cfg1_active_sets_all_v()) { @@ -197,7 +197,8 @@ int gm20b_determine_L2_size_bytes(struct gk20a *g) /* chip-specific values */ lts_per_ltc = 2U; bytes_per_line = 128U; - cache_size = active_ltcs * lts_per_ltc * ways * sets * bytes_per_line; + cache_size = active_ltcs * (u64)lts_per_ltc * ways * + (u64) sets * bytes_per_line; return cache_size; } diff --git a/drivers/gpu/nvgpu/hal/ltc/ltc_gm20b.h b/drivers/gpu/nvgpu/hal/ltc/ltc_gm20b.h index 74ae6f2e7..366ec9eac 100644 --- a/drivers/gpu/nvgpu/hal/ltc/ltc_gm20b.h +++ b/drivers/gpu/nvgpu/hal/ltc/ltc_gm20b.h @@ -30,7 +30,7 @@ struct gk20a; struct gr_gk20a; -int gm20b_determine_L2_size_bytes(struct gk20a *g); +u64 gm20b_determine_L2_size_bytes(struct gk20a *g); void gm20b_ltc_set_zbc_color_entry(struct gk20a *g, u32 *color_l2, u32 index); diff --git a/drivers/gpu/nvgpu/hal/ltc/ltc_gp10b.c b/drivers/gpu/nvgpu/hal/ltc/ltc_gp10b.c index d69947850..84da27c74 100644 --- a/drivers/gpu/nvgpu/hal/ltc/ltc_gp10b.c +++ b/drivers/gpu/nvgpu/hal/ltc/ltc_gp10b.c @@ -32,20 +32,20 @@ #include "ltc_gm20b.h" #include "ltc_gp10b.h" -int gp10b_determine_L2_size_bytes(struct gk20a *g) +u64 gp10b_determine_L2_size_bytes(struct gk20a *g) { u32 tmp; - int ret; + u64 ret; nvgpu_log_fn(g, " "); tmp = gk20a_readl(g, ltc_ltc0_lts0_tstg_info_1_r()); - ret = g->ltc->ltc_count * + ret = (u64)g->ltc->ltc_count * ltc_ltc0_lts0_tstg_info_1_slice_size_in_kb_v(tmp) * 1024U * - ltc_ltc0_lts0_tstg_info_1_slices_per_l2_v(tmp); + (u64)ltc_ltc0_lts0_tstg_info_1_slices_per_l2_v(tmp); - nvgpu_log(g, gpu_dbg_info, "L2 size: %d\n", ret); + nvgpu_log(g, gpu_dbg_info, "L2 size: %llu\n", ret); nvgpu_log_fn(g, "done"); diff --git a/drivers/gpu/nvgpu/hal/ltc/ltc_gp10b.h b/drivers/gpu/nvgpu/hal/ltc/ltc_gp10b.h index 5d7bfb0fe..9d6dd5bdf 100644 --- a/drivers/gpu/nvgpu/hal/ltc/ltc_gp10b.h +++ b/drivers/gpu/nvgpu/hal/ltc/ltc_gp10b.h @@ -24,7 +24,7 @@ #define LTC_GP10B_H struct gk20a; -int gp10b_determine_L2_size_bytes(struct gk20a *g); +u64 gp10b_determine_L2_size_bytes(struct gk20a *g); void gp10b_ltc_init_fs_state(struct gk20a *g); void gp10b_ltc_set_enabled(struct gk20a *g, bool enabled); #endif diff --git a/drivers/gpu/nvgpu/include/nvgpu/gk20a.h b/drivers/gpu/nvgpu/include/nvgpu/gk20a.h index d0b5c4517..323250cac 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/gk20a.h +++ b/drivers/gpu/nvgpu/include/nvgpu/gk20a.h @@ -209,7 +209,7 @@ enum nvgpu_event_id_type { struct gpu_ops { struct { - int (*determine_L2_size_bytes)(struct gk20a *gk20a); + u64 (*determine_L2_size_bytes)(struct gk20a *gk20a); void (*set_zbc_color_entry)(struct gk20a *g, u32 *color_val_l2, u32 index);