gpu: nvgpu: Disable low power features on AV+L

NVGPU does not support low power features on hypervisor
based embedded environments.Disable low power features like ELPG,
AELPG and railgating on AV+L using the nvgpu_is_hypervisor_mode().

JIRA NVGPU-7283

Change-Id: I930e06ae711ee1485109b7f519a2dacc95b7d74b
Signed-off-by: Tejal Kudav <tkudav@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2610056
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Alex Waterman <alexw@nvidia.com>
Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Tejal Kudav
2021-10-13 10:14:10 +00:00
committed by mobile promotions
parent 5d42343cbf
commit 6648cfea09

View File

@@ -204,8 +204,13 @@ static void nvgpu_init_pm_vars(struct gk20a *g)
#endif #endif
g->ptimer_src_freq = platform->ptimer_src_freq; g->ptimer_src_freq = platform->ptimer_src_freq;
if (nvgpu_is_hypervisor_mode(g)) {
nvgpu_set_enabled(g, NVGPU_CAN_RAILGATE, false);
platform->can_railgate_init = false;
} else {
nvgpu_set_enabled(g, NVGPU_CAN_RAILGATE, nvgpu_set_enabled(g, NVGPU_CAN_RAILGATE,
nvgpu_platform_is_simulation(g) ? true : platform->can_railgate_init); nvgpu_platform_is_simulation(g) ? true : platform->can_railgate_init);
}
#ifdef CONFIG_NVGPU_STATIC_POWERGATE #ifdef CONFIG_NVGPU_STATIC_POWERGATE
g->can_tpc_pg = platform->can_tpc_pg; g->can_tpc_pg = platform->can_tpc_pg;
g->can_gpc_pg = platform->can_gpc_pg; g->can_gpc_pg = platform->can_gpc_pg;
@@ -227,14 +232,20 @@ static void nvgpu_init_pm_vars(struct gk20a *g)
g->support_ls_pmu = support_gk20a_pmu(dev_from_gk20a(g)); g->support_ls_pmu = support_gk20a_pmu(dev_from_gk20a(g));
if (g->support_ls_pmu) { if (g->support_ls_pmu) {
if (nvgpu_is_hypervisor_mode(g)) {
g->elpg_enabled = false;
g->aelpg_enabled = false;
g->can_elpg = false;
} else {
g->elpg_enabled = g->elpg_enabled =
nvgpu_platform_is_silicon(g) ? platform->enable_elpg : false; nvgpu_platform_is_silicon(g) ? platform->enable_elpg : false;
g->aelpg_enabled = g->aelpg_enabled =
nvgpu_platform_is_silicon(g) ? platform->enable_aelpg : false; nvgpu_platform_is_silicon(g) ? platform->enable_aelpg : false;
g->mscg_enabled =
nvgpu_platform_is_silicon(g) ? platform->enable_mscg : false;
g->can_elpg = g->can_elpg =
nvgpu_platform_is_silicon(g) ? platform->can_elpg_init : false; nvgpu_platform_is_silicon(g) ? platform->can_elpg_init : false;
}
g->mscg_enabled =
nvgpu_platform_is_silicon(g) ? platform->enable_mscg : false;
if (nvgpu_is_enabled(g, NVGPU_SUPPORT_MIG)) { if (nvgpu_is_enabled(g, NVGPU_SUPPORT_MIG)) {
g->can_elpg = false; g->can_elpg = false;
} }