summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/common/pmu/pmu_fw.c
diff options
context:
space:
mode:
authorSagar Kamble <skamble@nvidia.com>2021-08-11 05:24:22 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2021-08-12 08:39:59 -0400
commit5fb06d03ca25a207b9378a7155c0ac3e91b378ee (patch)
tree72787d85bfc78ce4f6255f0ff544c4351e625f6c /drivers/gpu/nvgpu/common/pmu/pmu_fw.c
parentce8548ec056022c4feccacc9eb09a4e8619bdefa (diff)
gpu: nvgpu: stop ELPG init thread during unload
ELPG initialization thread creation can fail when the process is killed. That leads to driver resume failure. That thread was stopped on suspend and re-created on resume. To avoid the issue above, don't stop the ELPG thread in suspend and let the first created thread handle the ELPG state transitions always. And stop the ELPG thread during unload. bug 3345977 bug 200685277 Change-Id: I8952edf8d1664ed258f238e265002e716d1bf5c2 Signed-off-by: Sagar Kamble <skamble@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2573763 (cherry picked from commit f4571194b02094c7d447052bf0b411a44582ef09) Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2574436 Tested-by: mobile promotions <svcmobile_promotions@nvidia.com> Reviewed-by: Konsta Holtta <kholtta@nvidia.com> Reviewed-by: Bibek Basu <bbasu@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/common/pmu/pmu_fw.c')
-rw-r--r--drivers/gpu/nvgpu/common/pmu/pmu_fw.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/common/pmu/pmu_fw.c b/drivers/gpu/nvgpu/common/pmu/pmu_fw.c
index da77f984..d71238a3 100644
--- a/drivers/gpu/nvgpu/common/pmu/pmu_fw.c
+++ b/drivers/gpu/nvgpu/common/pmu/pmu_fw.c
@@ -1651,6 +1651,8 @@ static void nvgpu_remove_pmu_support(struct nvgpu_pmu *pmu)
1651 1651
1652 nvgpu_dma_unmap_free(vm, &pmu->super_surface_buf); 1652 nvgpu_dma_unmap_free(vm, &pmu->super_surface_buf);
1653 1653
1654 nvgpu_kill_task_pg_init(g);
1655
1654 nvgpu_mutex_destroy(&pmu->elpg_mutex); 1656 nvgpu_mutex_destroy(&pmu->elpg_mutex);
1655 nvgpu_mutex_destroy(&pmu->pg_mutex); 1657 nvgpu_mutex_destroy(&pmu->pg_mutex);
1656 nvgpu_mutex_destroy(&pmu->isr_mutex); 1658 nvgpu_mutex_destroy(&pmu->isr_mutex);