summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/common/linux
diff options
context:
space:
mode:
authorDeepak Goyal <dgoyal@nvidia.com>2018-01-18 01:14:47 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2018-01-19 02:40:02 -0500
commite0dbf3a784f6cb1a6e1c41a23123b19ec73b8708 (patch)
treed089cf84f16980034b82c53f2913bcdda452151d /drivers/gpu/nvgpu/common/linux
parenta57258e9b18f2f336457165391572bc477371e94 (diff)
gpu: nvgpu: gv11b: Enable perfmon.
t19x PMU ucode uses RPC mechanism for PERFMON commands. - Declared "pmu_init_perfmon", "pmu_perfmon_start_sampling", "pmu_perfmon_stop_sampling" and "pmu_perfmon_get_samples" in pmu ops to differenciate for chips using RPC & legacy cmd/msg mechanism. - Defined and used PERFMON RPC commands for t19x - INIT - START - STOP - QUERY - Adds RPC handler for PERFMON RPC commands. - For guerying GPU utilization/load, we need to send PERFMON_QUERY RPC command for gv11b. - Enables perfmon for gv11b. Bug 2039013 Change-Id: Ic32326f81d48f11bc772afb8fee2dee6e427a699 Signed-off-by: Deepak Goyal <dgoyal@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1614114 Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Seshendra Gadagottu <sgadagottu@nvidia.com> Tested-by: Seshendra Gadagottu <sgadagottu@nvidia.com> Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/common/linux')
-rw-r--r--drivers/gpu/nvgpu/common/linux/debug_pmu.c4
-rw-r--r--drivers/gpu/nvgpu/common/linux/platform_gv11b_tegra.c1
-rw-r--r--drivers/gpu/nvgpu/common/linux/vgpu/gp10b/vgpu_hal_gp10b.c3
-rw-r--r--drivers/gpu/nvgpu/common/linux/vgpu/gv11b/vgpu_hal_gv11b.c4
4 files changed, 10 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/common/linux/debug_pmu.c b/drivers/gpu/nvgpu/common/linux/debug_pmu.c
index ec997e28..a8a8870e 100644
--- a/drivers/gpu/nvgpu/common/linux/debug_pmu.c
+++ b/drivers/gpu/nvgpu/common/linux/debug_pmu.c
@@ -352,11 +352,11 @@ static ssize_t perfmon_events_enable_write(struct file *file,
352 if (val && !g->pmu.perfmon_sampling_enabled && 352 if (val && !g->pmu.perfmon_sampling_enabled &&
353 nvgpu_is_enabled(g, NVGPU_PMU_PERFMON)) { 353 nvgpu_is_enabled(g, NVGPU_PMU_PERFMON)) {
354 g->pmu.perfmon_sampling_enabled = true; 354 g->pmu.perfmon_sampling_enabled = true;
355 nvgpu_pmu_perfmon_start_sampling(&(g->pmu)); 355 g->ops.pmu.pmu_perfmon_start_sampling(&(g->pmu));
356 } else if (!val && g->pmu.perfmon_sampling_enabled && 356 } else if (!val && g->pmu.perfmon_sampling_enabled &&
357 nvgpu_is_enabled(g, NVGPU_PMU_PERFMON)) { 357 nvgpu_is_enabled(g, NVGPU_PMU_PERFMON)) {
358 g->pmu.perfmon_sampling_enabled = false; 358 g->pmu.perfmon_sampling_enabled = false;
359 nvgpu_pmu_perfmon_stop_sampling(&(g->pmu)); 359 g->ops.pmu.pmu_perfmon_stop_sampling(&(g->pmu));
360 } 360 }
361 gk20a_idle(g); 361 gk20a_idle(g);
362 } else { 362 } else {
diff --git a/drivers/gpu/nvgpu/common/linux/platform_gv11b_tegra.c b/drivers/gpu/nvgpu/common/linux/platform_gv11b_tegra.c
index d972b88a..a452896f 100644
--- a/drivers/gpu/nvgpu/common/linux/platform_gv11b_tegra.c
+++ b/drivers/gpu/nvgpu/common/linux/platform_gv11b_tegra.c
@@ -208,6 +208,7 @@ struct gk20a_platform t19x_gpu_tegra_platform = {
208 .can_slcg = false, 208 .can_slcg = false,
209 .can_blcg = false, 209 .can_blcg = false,
210 .can_elcg = false, 210 .can_elcg = false,
211 .enable_perfmon = true,
211 212
212 /* power management callbacks */ 213 /* power management callbacks */
213 .suspend = gv11b_tegra_suspend, 214 .suspend = gv11b_tegra_suspend,
diff --git a/drivers/gpu/nvgpu/common/linux/vgpu/gp10b/vgpu_hal_gp10b.c b/drivers/gpu/nvgpu/common/linux/vgpu/gp10b/vgpu_hal_gp10b.c
index d5fd5102..3f99eb9e 100644
--- a/drivers/gpu/nvgpu/common/linux/vgpu/gp10b/vgpu_hal_gp10b.c
+++ b/drivers/gpu/nvgpu/common/linux/vgpu/gp10b/vgpu_hal_gp10b.c
@@ -417,6 +417,9 @@ static const struct gpu_ops vgpu_gp10b_ops = {
417 .pmu_mutex_release = gk20a_pmu_mutex_release, 417 .pmu_mutex_release = gk20a_pmu_mutex_release,
418 .write_dmatrfbase = gp10b_write_dmatrfbase, 418 .write_dmatrfbase = gp10b_write_dmatrfbase,
419 .pmu_elpg_statistics = gp10b_pmu_elpg_statistics, 419 .pmu_elpg_statistics = gp10b_pmu_elpg_statistics,
420 .pmu_init_perfmon = nvgpu_pmu_init_perfmon,
421 .pmu_perfmon_start_sampling = nvgpu_pmu_perfmon_start_sampling,
422 .pmu_perfmon_stop_sampling = nvgpu_pmu_perfmon_stop_sampling,
420 .pmu_pg_init_param = gp10b_pg_gr_init, 423 .pmu_pg_init_param = gp10b_pg_gr_init,
421 .pmu_pg_supported_engines_list = gk20a_pmu_pg_engines_list, 424 .pmu_pg_supported_engines_list = gk20a_pmu_pg_engines_list,
422 .pmu_pg_engines_feature_list = gk20a_pmu_pg_feature_list, 425 .pmu_pg_engines_feature_list = gk20a_pmu_pg_feature_list,
diff --git a/drivers/gpu/nvgpu/common/linux/vgpu/gv11b/vgpu_hal_gv11b.c b/drivers/gpu/nvgpu/common/linux/vgpu/gv11b/vgpu_hal_gv11b.c
index 132ce6e5..c8752f91 100644
--- a/drivers/gpu/nvgpu/common/linux/vgpu/gv11b/vgpu_hal_gv11b.c
+++ b/drivers/gpu/nvgpu/common/linux/vgpu/gv11b/vgpu_hal_gv11b.c
@@ -461,6 +461,10 @@ static const struct gpu_ops vgpu_gv11b_ops = {
461 .pmu_mutex_release = gk20a_pmu_mutex_release, 461 .pmu_mutex_release = gk20a_pmu_mutex_release,
462 .write_dmatrfbase = gp10b_write_dmatrfbase, 462 .write_dmatrfbase = gp10b_write_dmatrfbase,
463 .pmu_elpg_statistics = gp106_pmu_elpg_statistics, 463 .pmu_elpg_statistics = gp106_pmu_elpg_statistics,
464 .pmu_init_perfmon = nvgpu_pmu_init_perfmon_rpc,
465 .pmu_perfmon_start_sampling = nvgpu_pmu_perfmon_start_sampling_rpc,
466 .pmu_perfmon_stop_sampling = nvgpu_pmu_perfmon_stop_sampling_rpc,
467 .pmu_perfmon_get_samples_rpc = nvgpu_pmu_perfmon_get_samples_rpc,
464 .pmu_pg_init_param = gv11b_pg_gr_init, 468 .pmu_pg_init_param = gv11b_pg_gr_init,
465 .pmu_pg_supported_engines_list = gk20a_pmu_pg_engines_list, 469 .pmu_pg_supported_engines_list = gk20a_pmu_pg_engines_list,
466 .pmu_pg_engines_feature_list = gk20a_pmu_pg_feature_list, 470 .pmu_pg_engines_feature_list = gk20a_pmu_pg_feature_list,