mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-24 02:22:34 +03:00
gpu: nvgpu: update sim netlist parsing to include pm, perf registers
On simulation platforms the netlist data is fetched from fmodel chiplib. The chiplib has been updated to include certain pm, perf registers which were already present in the netimage. Update sim netlist parsing to fetch the following list of registers: - LIST_pm_ctx_reg_PPC - LIST_nv_perf_ctx_reg_SYS - LIST_nv_perf_sysrouter_ctx_regs - LIST_nv_perf_pma_ctx_regs - LIST_nv_perf_fbp_ctx_regs - LIST_nv_perf_fbprouter_ctx_regs - LIST_nv_perf_ctx_reg_GPC - LIST_nv_perf_gpcrouter_ctx_regs - LIST_pm_ltc_ctx_regs Bug 2916121 Change-Id: Ida8e02f97f9ae3fc3d89ee6c9e890fe5e441aaa0 Signed-off-by: Antony Clince Alex <aalex@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2369866 Reviewed-by: automaticguardword <automaticguardword@nvidia.com> Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> Reviewed-by: svc-mobile-misra <svc-mobile-misra@nvidia.com> Reviewed-by: Alex Waterman <alexw@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com> GVS: Gerrit_Virtual_Submit
This commit is contained in:
committed by
Alex Waterman
parent
39a3854584
commit
ee3b8235c6
@@ -52,6 +52,15 @@ int nvgpu_init_sim_netlist_ctx_vars(struct gk20a *g)
|
||||
struct netlist_aiv_list *pm_tpc_ctxsw_regs;
|
||||
struct netlist_aiv_list *ppc_ctxsw_regs;
|
||||
struct netlist_aiv_list *etpc_ctxsw_regs;
|
||||
struct netlist_aiv_list *pm_ppc_ctxsw_regs;
|
||||
struct netlist_aiv_list *perf_sys_ctxsw_regs;
|
||||
struct netlist_aiv_list *perf_sysrouter_ctxsw_regs;
|
||||
struct netlist_aiv_list *perf_pma_ctxsw_regs;
|
||||
struct netlist_aiv_list *perf_fbp_ctxsw_regs;
|
||||
struct netlist_aiv_list *perf_fbprouter_ctxsw_regs;
|
||||
struct netlist_aiv_list *perf_gpc_ctxsw_regs;
|
||||
struct netlist_aiv_list *perf_gpcrouter_ctxsw_regs;
|
||||
struct netlist_aiv_list *pm_ltc_ctxsw_regs;
|
||||
#endif /* CONFIG_NVGPU_DEBUGGER */
|
||||
struct netlist_u32_list *fecs_inst, *fecs_data;
|
||||
struct netlist_u32_list *gpccs_inst, *gpccs_data;
|
||||
@@ -87,6 +96,19 @@ int nvgpu_init_sim_netlist_ctx_vars(struct gk20a *g)
|
||||
pm_tpc_ctxsw_regs = nvgpu_netlist_get_pm_tpc_ctxsw_regs(g);
|
||||
ppc_ctxsw_regs = nvgpu_netlist_get_ppc_ctxsw_regs(g);
|
||||
etpc_ctxsw_regs = nvgpu_netlist_get_etpc_ctxsw_regs(g);
|
||||
|
||||
pm_ppc_ctxsw_regs = nvgpu_netlist_get_pm_ppc_ctxsw_regs(g);
|
||||
perf_sys_ctxsw_regs = nvgpu_netlist_get_perf_sys_ctxsw_regs(g);
|
||||
perf_sysrouter_ctxsw_regs =
|
||||
nvgpu_netlist_get_perf_sys_router_ctxsw_regs(g);
|
||||
perf_pma_ctxsw_regs = nvgpu_netlist_get_perf_pma_ctxsw_regs(g);
|
||||
perf_fbp_ctxsw_regs = nvgpu_netlist_get_fbp_ctxsw_regs(g);
|
||||
perf_fbprouter_ctxsw_regs =
|
||||
nvgpu_netlist_get_fbp_router_ctxsw_regs(g);
|
||||
perf_gpc_ctxsw_regs = nvgpu_netlist_get_perf_gpc_ctxsw_regs(g);
|
||||
perf_gpcrouter_ctxsw_regs =
|
||||
nvgpu_netlist_get_gpc_router_ctxsw_regs(g);
|
||||
pm_ltc_ctxsw_regs = nvgpu_netlist_get_pm_ltc_ctxsw_regs(g);
|
||||
#endif /* CONFIG_NVGPU_DEBUGGER */
|
||||
|
||||
fecs_inst = nvgpu_netlist_get_fecs_inst(g);
|
||||
@@ -142,6 +164,26 @@ int nvgpu_init_sim_netlist_ctx_vars(struct gk20a *g)
|
||||
&ppc_ctxsw_regs->count);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_ETPC_COUNT", 0,
|
||||
&etpc_ctxsw_regs->count);
|
||||
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PM_PPC_COUNT", 0,
|
||||
&pm_ppc_ctxsw_regs->count);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_SYS_COUNT", 0,
|
||||
&perf_sys_ctxsw_regs->count);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_SYSROUTER_COUNT", 0,
|
||||
&perf_sysrouter_ctxsw_regs->count);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_PMA_COUNT", 0,
|
||||
&perf_pma_ctxsw_regs->count);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_FBP_COUNT", 0,
|
||||
&perf_fbp_ctxsw_regs->count);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_FBPROUTER_COUNT", 0,
|
||||
&perf_fbprouter_ctxsw_regs->count);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_GPC_COUNT", 0,
|
||||
&perf_gpc_ctxsw_regs->count);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_GPCROUTER_COUNT", 0,
|
||||
&perf_gpcrouter_ctxsw_regs->count);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PM_LTC_COUNT", 0,
|
||||
&pm_ltc_ctxsw_regs->count);
|
||||
|
||||
#endif /* CONFIG_NVGPU_DEBUGGER */
|
||||
|
||||
if (nvgpu_netlist_alloc_u32_list(g, fecs_inst) == NULL) {
|
||||
@@ -204,6 +246,36 @@ int nvgpu_init_sim_netlist_ctx_vars(struct gk20a *g)
|
||||
if (nvgpu_netlist_alloc_aiv_list(g, etpc_ctxsw_regs) == NULL) {
|
||||
goto fail;
|
||||
}
|
||||
if (nvgpu_netlist_alloc_aiv_list(g, pm_ppc_ctxsw_regs) == NULL) {
|
||||
goto fail;
|
||||
}
|
||||
if (nvgpu_netlist_alloc_aiv_list(g, perf_sys_ctxsw_regs) == NULL) {
|
||||
goto fail;
|
||||
}
|
||||
if (nvgpu_netlist_alloc_aiv_list(g, perf_sysrouter_ctxsw_regs)
|
||||
== NULL) {
|
||||
goto fail;
|
||||
}
|
||||
if (nvgpu_netlist_alloc_aiv_list(g, perf_pma_ctxsw_regs) == NULL) {
|
||||
goto fail;
|
||||
}
|
||||
if (nvgpu_netlist_alloc_aiv_list(g, perf_fbp_ctxsw_regs) == NULL) {
|
||||
goto fail;
|
||||
}
|
||||
if (nvgpu_netlist_alloc_aiv_list(g, perf_fbprouter_ctxsw_regs)
|
||||
== NULL) {
|
||||
goto fail;
|
||||
}
|
||||
if (nvgpu_netlist_alloc_aiv_list(g, perf_gpc_ctxsw_regs) == NULL) {
|
||||
goto fail;
|
||||
}
|
||||
if (nvgpu_netlist_alloc_aiv_list(g, perf_gpcrouter_ctxsw_regs)
|
||||
== NULL) {
|
||||
goto fail;
|
||||
}
|
||||
if (nvgpu_netlist_alloc_aiv_list(g, pm_ltc_ctxsw_regs) == NULL) {
|
||||
goto fail;
|
||||
}
|
||||
#if defined(CONFIG_NVGPU_NON_FUSA) && defined(CONFIG_NVGPU_NEXT)
|
||||
nvgpu_next_init_sim_netlist_ctxsw_regs(g);
|
||||
#endif
|
||||
@@ -382,6 +454,132 @@ int nvgpu_init_sim_netlist_ctx_vars(struct gk20a *g)
|
||||
"addr:0x%#08x index:0x%08x value:0x%08x",
|
||||
l[i].addr, l[i].index, l[i].value);
|
||||
}
|
||||
|
||||
nvgpu_log(g, gpu_dbg_info | gpu_dbg_fn, "query GRCTX_REG_LIST_PM_PPC");
|
||||
for (i = 0; i < pm_ppc_ctxsw_regs->count; i++) {
|
||||
struct netlist_aiv *l = pm_ppc_ctxsw_regs->l;
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PM_PPC:ADDR",
|
||||
i, &l[i].addr);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PM_PPC:INDEX",
|
||||
i, &l[i].index);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PM_PPC:VALUE",
|
||||
i, &l[i].value);
|
||||
nvgpu_log(g, gpu_dbg_info | gpu_dbg_fn,
|
||||
"addr:0x%#08x index:0x%08x value:0x%08x",
|
||||
l[i].addr, l[i].index, l[i].value);
|
||||
}
|
||||
|
||||
nvgpu_log(g, gpu_dbg_info | gpu_dbg_fn, "query GRCTX_REG_LIST_PERF_SYS");
|
||||
for (i = 0; i < perf_sys_ctxsw_regs->count; i++) {
|
||||
struct netlist_aiv *l = perf_sys_ctxsw_regs->l;
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_SYS:ADDR",
|
||||
i, &l[i].addr);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_SYS:INDEX",
|
||||
i, &l[i].index);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_SYS:VALUE",
|
||||
i, &l[i].value);
|
||||
nvgpu_log(g, gpu_dbg_info | gpu_dbg_fn,
|
||||
"addr:0x%#08x index:0x%08x value:0x%08x",
|
||||
l[i].addr, l[i].index, l[i].value);
|
||||
}
|
||||
|
||||
nvgpu_log(g, gpu_dbg_info | gpu_dbg_fn, "query GRCTX_REG_LIST_PERF_SYSROUTER");
|
||||
for (i = 0; i < perf_sysrouter_ctxsw_regs->count; i++) {
|
||||
struct netlist_aiv *l = perf_sysrouter_ctxsw_regs->l;
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_SYSROUTER:ADDR",
|
||||
i, &l[i].addr);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_SYSROUTER:INDEX",
|
||||
i, &l[i].index);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_SYSROUTER:VALUE",
|
||||
i, &l[i].value);
|
||||
nvgpu_log(g, gpu_dbg_info | gpu_dbg_fn,
|
||||
"addr:0x%#08x index:0x%08x value:0x%08x",
|
||||
l[i].addr, l[i].index, l[i].value);
|
||||
}
|
||||
|
||||
nvgpu_log(g, gpu_dbg_info | gpu_dbg_fn, "query GRCTX_REG_LIST_PERF_PMA");
|
||||
for (i = 0; i < perf_pma_ctxsw_regs->count; i++) {
|
||||
struct netlist_aiv *l = perf_pma_ctxsw_regs->l;
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_PMA:ADDR",
|
||||
i, &l[i].addr);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_PMA:INDEX",
|
||||
i, &l[i].index);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_PMA:VALUE",
|
||||
i, &l[i].value);
|
||||
nvgpu_log(g, gpu_dbg_info | gpu_dbg_fn,
|
||||
"addr:0x%#08x index:0x%08x value:0x%08x",
|
||||
l[i].addr, l[i].index, l[i].value);
|
||||
}
|
||||
|
||||
nvgpu_log(g, gpu_dbg_info | gpu_dbg_fn, "query GRCTX_REG_LIST_PERF_FBP");
|
||||
for (i = 0; i < perf_fbp_ctxsw_regs->count; i++) {
|
||||
struct netlist_aiv *l = perf_fbp_ctxsw_regs->l;
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_FBP:ADDR",
|
||||
i, &l[i].addr);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_FBP:INDEX",
|
||||
i, &l[i].index);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_FBP:VALUE",
|
||||
i, &l[i].value);
|
||||
nvgpu_log(g, gpu_dbg_info | gpu_dbg_fn,
|
||||
"addr:0x%#08x index:0x%08x value:0x%08x",
|
||||
l[i].addr, l[i].index, l[i].value);
|
||||
}
|
||||
|
||||
nvgpu_log(g, gpu_dbg_info | gpu_dbg_fn, "query GRCTX_REG_LIST_PERF_FBPROUTER");
|
||||
for (i = 0; i < perf_fbprouter_ctxsw_regs->count; i++) {
|
||||
struct netlist_aiv *l = perf_fbprouter_ctxsw_regs->l;
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_FBPROUTER:ADDR",
|
||||
i, &l[i].addr);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_FBPROUTER:INDEX",
|
||||
i, &l[i].index);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_FBPROUTER:VALUE",
|
||||
i, &l[i].value);
|
||||
nvgpu_log(g, gpu_dbg_info | gpu_dbg_fn,
|
||||
"addr:0x%#08x index:0x%08x value:0x%08x",
|
||||
l[i].addr, l[i].index, l[i].value);
|
||||
}
|
||||
|
||||
nvgpu_log(g, gpu_dbg_info | gpu_dbg_fn, "query GRCTX_REG_LIST_PERF_GPC");
|
||||
for (i = 0; i < perf_gpc_ctxsw_regs->count; i++) {
|
||||
struct netlist_aiv *l = perf_gpc_ctxsw_regs->l;
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_GPC:ADDR",
|
||||
i, &l[i].addr);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_GPC:INDEX",
|
||||
i, &l[i].index);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_GPC:VALUE",
|
||||
i, &l[i].value);
|
||||
nvgpu_log(g, gpu_dbg_info | gpu_dbg_fn,
|
||||
"addr:0x%#08x index:0x%08x value:0x%08x",
|
||||
l[i].addr, l[i].index, l[i].value);
|
||||
}
|
||||
|
||||
nvgpu_log(g, gpu_dbg_info | gpu_dbg_fn, "query GRCTX_REG_LIST_PERF_GPCROUTER");
|
||||
for (i = 0; i < perf_gpcrouter_ctxsw_regs->count; i++) {
|
||||
struct netlist_aiv *l = perf_gpcrouter_ctxsw_regs->l;
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_GPCROUTER:ADDR",
|
||||
i, &l[i].addr);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_GPCROUTER:INDEX",
|
||||
i, &l[i].index);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PERF_GPCROUTER:VALUE",
|
||||
i, &l[i].value);
|
||||
nvgpu_log(g, gpu_dbg_info | gpu_dbg_fn,
|
||||
"addr:0x%#08x index:0x%08x value:0x%08x",
|
||||
l[i].addr, l[i].index, l[i].value);
|
||||
}
|
||||
|
||||
nvgpu_log(g, gpu_dbg_info | gpu_dbg_fn, "query GRCTX_REG_LIST_PM_LTC");
|
||||
for (i = 0; i < pm_ltc_ctxsw_regs->count; i++) {
|
||||
struct netlist_aiv *l = pm_ltc_ctxsw_regs->l;
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PM_LTC:ADDR",
|
||||
i, &l[i].addr);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PM_LTC:INDEX",
|
||||
i, &l[i].index);
|
||||
g->sim->esc_readl(g, "GRCTX_REG_LIST_PM_LTC:VALUE",
|
||||
i, &l[i].value);
|
||||
nvgpu_log(g, gpu_dbg_info | gpu_dbg_fn,
|
||||
"addr:0x%#08x index:0x%08x value:0x%08x",
|
||||
l[i].addr, l[i].index, l[i].value);
|
||||
}
|
||||
#endif /* CONFIG_NVGPU_DEBUGGER */
|
||||
|
||||
g->netlist_valid = true;
|
||||
@@ -420,6 +618,15 @@ fail:
|
||||
nvgpu_kfree(g, pm_gpc_ctxsw_regs->l);
|
||||
nvgpu_kfree(g, pm_tpc_ctxsw_regs->l);
|
||||
nvgpu_kfree(g, etpc_ctxsw_regs->l);
|
||||
nvgpu_kfree(g, pm_ppc_ctxsw_regs->l);
|
||||
nvgpu_kfree(g, perf_sys_ctxsw_regs->l);
|
||||
nvgpu_kfree(g, perf_sysrouter_ctxsw_regs->l);
|
||||
nvgpu_kfree(g, perf_pma_ctxsw_regs->l);
|
||||
nvgpu_kfree(g, perf_fbp_ctxsw_regs->l);
|
||||
nvgpu_kfree(g, perf_fbprouter_ctxsw_regs->l);
|
||||
nvgpu_kfree(g, perf_gpc_ctxsw_regs->l);
|
||||
nvgpu_kfree(g, perf_gpcrouter_ctxsw_regs->l);
|
||||
nvgpu_kfree(g, pm_ltc_ctxsw_regs->l);
|
||||
#if defined(CONFIG_NVGPU_NON_FUSA) && defined(CONFIG_NVGPU_NEXT)
|
||||
nvgpu_next_init_sim_netlist_ctxsw_regs_free(g);
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user