Commit bba2ec41 authored by Rodrigo Vivi's avatar Rodrigo Vivi

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: default avatarAnshuman Gupta <anshuman.gupta@intel.com>
Tested-by: default avatarAnshuman Gupta <anshuman.gupta@intel.com>
Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
parent e07aa913
......@@ -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)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment