drm/panfrost: Fix possible suspend in panfrost_remove
Calls to panfrost_device_fini() access the h/w, but we already done a pm_runtime_put_sync_autosuspend() beforehand. This only works if the autosuspend delay is long enough. A 0ms delay will hang the system when removing the device. Fix this by moving the pm_runtime_put_sync_suspend() after the panfrost_device_fini() call. Cc: Tomeu Vizoso <tomeu.vizoso@collabora.com> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> Signed-off-by: Rob Herring <robh@kernel.org> Reviewed-by: Steven Price <steven.price@arm.com> Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190823021216.5862-2-robh@kernel.org
This commit is contained in:
		
							parent
							
								
									c90f30812a
								
							
						
					
					
						commit
						aebe8c22a9
					
				| @ -570,11 +570,13 @@ static int panfrost_remove(struct platform_device *pdev) | ||||
| 
 | ||||
| 	drm_dev_unregister(ddev); | ||||
| 	panfrost_gem_shrinker_cleanup(ddev); | ||||
| 
 | ||||
| 	pm_runtime_get_sync(pfdev->dev); | ||||
| 	pm_runtime_put_sync_autosuspend(pfdev->dev); | ||||
| 	pm_runtime_disable(pfdev->dev); | ||||
| 	panfrost_devfreq_fini(pfdev); | ||||
| 	panfrost_device_fini(pfdev); | ||||
| 	pm_runtime_put_sync_suspend(pfdev->dev); | ||||
| 	pm_runtime_disable(pfdev->dev); | ||||
| 
 | ||||
| 	drm_dev_put(ddev); | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user