mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-22 17:36:20 +03:00
gpu: nvgpu: skip suspend if gpu already removed
On nvgpu module unload, platform_driver_unregister() detaches driver from device (driver_detach()). As part of this, __device_release_driver() results a race between driver's .runtime_resume(), .remove() and .runtime_suspend(). As nvgpu's .remove() is handling all steps of cleaning up driver state and shutting down gpu, .runtime_suspend() shall have no work. So skip .runtime_suspend() is gk20a *g has already been processed. Bug 1987855 Change-Id: I024ac63d321689ea04c64b1ffc125da943d482f9 Signed-off-by: Nitin Kumbhar <nkumbhar@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1770803 Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Seshendra Gadagottu <sgadagottu@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
1d82693cef
commit
0b7fbc1ff4
@@ -936,6 +936,9 @@ static int gk20a_pm_runtime_suspend(struct device *dev)
|
|||||||
int err = 0;
|
int err = 0;
|
||||||
struct gk20a *g = get_gk20a(dev);
|
struct gk20a *g = get_gk20a(dev);
|
||||||
|
|
||||||
|
if (!g)
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (gk20a_gpu_is_virtual(dev))
|
if (gk20a_gpu_is_virtual(dev))
|
||||||
err = vgpu_pm_prepare_poweroff(dev);
|
err = vgpu_pm_prepare_poweroff(dev);
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user