summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/common/pmu/pmu_ipc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/common/pmu/pmu_ipc.c')
-rw-r--r--drivers/gpu/nvgpu/common/pmu/pmu_ipc.c35
1 files changed, 32 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/common/pmu/pmu_ipc.c b/drivers/gpu/nvgpu/common/pmu/pmu_ipc.c
index 829fee19..2811a4b0 100644
--- a/drivers/gpu/nvgpu/common/pmu/pmu_ipc.c
+++ b/drivers/gpu/nvgpu/common/pmu/pmu_ipc.c
@@ -925,8 +925,9 @@ int nvgpu_pmu_process_message(struct nvgpu_pmu *pmu)
925 nvgpu_pmu_process_init_msg(pmu, &msg); 925 nvgpu_pmu_process_init_msg(pmu, &msg);
926 if (g->ops.pmu.init_wpr_region != NULL) 926 if (g->ops.pmu.init_wpr_region != NULL)
927 g->ops.pmu.init_wpr_region(g); 927 g->ops.pmu.init_wpr_region(g);
928
928 if (nvgpu_is_enabled(g, NVGPU_PMU_PERFMON)) 929 if (nvgpu_is_enabled(g, NVGPU_PMU_PERFMON))
929 nvgpu_pmu_init_perfmon(pmu); 930 g->ops.pmu.pmu_init_perfmon(pmu);
930 931
931 return 0; 932 return 0;
932 } 933 }
@@ -978,6 +979,8 @@ static void pmu_rpc_handler(struct gk20a *g, struct pmu_msg *msg,
978 void *param, u32 handle, u32 status) 979 void *param, u32 handle, u32 status)
979{ 980{
980 struct nv_pmu_rpc_header rpc; 981 struct nv_pmu_rpc_header rpc;
982 struct nvgpu_pmu *pmu = &g->pmu;
983 struct nv_pmu_rpc_struct_perfmon_query *rpc_param;
981 984
982 memset(&rpc, 0, sizeof(struct nv_pmu_rpc_header)); 985 memset(&rpc, 0, sizeof(struct nv_pmu_rpc_header));
983 if (param) 986 if (param)
@@ -990,10 +993,36 @@ static void pmu_rpc_handler(struct gk20a *g, struct pmu_msg *msg,
990 } 993 }
991 994
992 switch (msg->hdr.unit_id) { 995 switch (msg->hdr.unit_id) {
996 case PMU_UNIT_PERFMON_T18X:
997 case PMU_UNIT_PERFMON:
998 switch (rpc.function) {
999 case NV_PMU_RPC_ID_PERFMON_T18X_INIT:
1000 nvgpu_pmu_dbg(g,
1001 "reply NV_PMU_RPC_ID_PERFMON_INIT");
1002 pmu->perfmon_ready = 1;
1003 break;
1004 case NV_PMU_RPC_ID_PERFMON_T18X_START:
1005 nvgpu_pmu_dbg(g,
1006 "reply NV_PMU_RPC_ID_PERFMON_START");
1007 break;
1008 case NV_PMU_RPC_ID_PERFMON_T18X_STOP:
1009 nvgpu_pmu_dbg(g,
1010 "reply NV_PMU_RPC_ID_PERFMON_STOP");
1011 break;
1012 case NV_PMU_RPC_ID_PERFMON_T18X_QUERY:
1013 nvgpu_pmu_dbg(g,
1014 "reply NV_PMU_RPC_ID_PERFMON_QUERY");
1015 rpc_param = (struct nv_pmu_rpc_struct_perfmon_query *)param;
1016 pmu->load = rpc_param->sample_buffer[0];
1017 pmu->perfmon_query = 1;
1018 /* set perfmon_query to 1 after load is copied */
1019 break;
1020 }
1021 break;
993 /* TBD case will be added */ 1022 /* TBD case will be added */
994 default: 1023 default:
995 nvgpu_err(g, " Invalid RPC response, stats 0x%x", 1024 nvgpu_err(g, " Invalid RPC response, stats 0x%x",
996 rpc.flcn_status); 1025 rpc.flcn_status);
997 break; 1026 break;
998 } 1027 }
999 1028