drm/xe: Fix the runtime_idle call and d3cold.allowed decision.
According to Documentation/power/runtime_pm.txt: int pm_runtime_put(struct device *dev); - decrement the device's usage counter; if the result is 0 then run pm_request_idle(dev) and return its result int pm_runtime_put_autosuspend(struct device *dev); - decrement the device's usage counter; if the result is 0 then run pm_request_autosuspend(dev) and return its result We need to ensure that the idle function is called before suspending so we take the right d3cold.allowed decision and respect the values set on vram_d3cold_threshold sysfs. So we need pm_runtime_put() instead of pm_runtime_put_autosuspend(). Cc: Anshuman Gupta <anshuman.gupta@intel.com> Reviewed-by: Anshuman Gupta <anshuman.gupta@intel.com> Tested-by: Anshuman Gupta <anshuman.gupta@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
parent
e07aa91316
commit
bba2ec4144
@ -133,7 +133,7 @@ static void xe_pm_runtime_init(struct xe_device *xe)
|
||||
pm_runtime_set_active(dev);
|
||||
pm_runtime_allow(dev);
|
||||
pm_runtime_mark_last_busy(dev);
|
||||
pm_runtime_put_autosuspend(dev);
|
||||
pm_runtime_put(dev);
|
||||
}
|
||||
|
||||
void xe_pm_init(struct xe_device *xe)
|
||||
@ -289,7 +289,7 @@ int xe_pm_runtime_get(struct xe_device *xe)
|
||||
int xe_pm_runtime_put(struct xe_device *xe)
|
||||
{
|
||||
pm_runtime_mark_last_busy(xe->drm.dev);
|
||||
return pm_runtime_put_autosuspend(xe->drm.dev);
|
||||
return pm_runtime_put(xe->drm.dev);
|
||||
}
|
||||
|
||||
int xe_pm_runtime_get_if_active(struct xe_device *xe)
|
||||
|
Loading…
x
Reference in New Issue
Block a user