[PATCH v1] PM: sleep: Call pm_restore_gfp_mask() after dpm_resume()

Rafael J. Wysocki posted 1 patch 2 months, 4 weeks ago
drivers/base/power/main.c |    2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH v1] PM: sleep: Call pm_restore_gfp_mask() after dpm_resume()
Posted by Rafael J. Wysocki 2 months, 4 weeks ago
From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

Commit 12ffc3b1513e ("PM: Restrict swap use to later in the suspend
sequence") changed two pm_restore_gfp_mask() calls in enter_state()
and hibernation_restore() into one pm_restore_gfp_mask() call in
dpm_resume_end(), but it put that call before the dpm_resume()
invocation which is too early (some swap-backing devices may not be
ready at that point).

Moreover, this code ordering change was not even mentioned in the
changelog of the commit mentioned above.

Address this by moving that call after the dpm_resume() one.

Fixes: 12ffc3b1513e ("PM: Restrict swap use to later in the suspend sequence")
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
 drivers/base/power/main.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/base/power/main.c
+++ b/drivers/base/power/main.c
@@ -1254,8 +1254,8 @@
  */
 void dpm_resume_end(pm_message_t state)
 {
-	pm_restore_gfp_mask();
 	dpm_resume(state);
+	pm_restore_gfp_mask();
 	dpm_complete(state);
 }
 EXPORT_SYMBOL_GPL(dpm_resume_end);
Re: [PATCH v1] PM: sleep: Call pm_restore_gfp_mask() after dpm_resume()
Posted by Mario Limonciello 2 months, 4 weeks ago
On 7/9/2025 1:12 PM, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> 
> Commit 12ffc3b1513e ("PM: Restrict swap use to later in the suspend
> sequence") changed two pm_restore_gfp_mask() calls in enter_state()
> and hibernation_restore() into one pm_restore_gfp_mask() call in
> dpm_resume_end(), but it put that call before the dpm_resume()
> invocation which is too early (some swap-backing devices may not be
> ready at that point).
> 
> Moreover, this code ordering change was not even mentioned in the
> changelog of the commit mentioned above.
> 
> Address this by moving that call after the dpm_resume() one.
> 
> Fixes: 12ffc3b1513e ("PM: Restrict swap use to later in the suspend sequence")
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> ---
>   drivers/base/power/main.c |    2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> --- a/drivers/base/power/main.c
> +++ b/drivers/base/power/main.c
> @@ -1254,8 +1254,8 @@
>    */
>   void dpm_resume_end(pm_message_t state)
>   {
> -	pm_restore_gfp_mask();
>   	dpm_resume(state);
> +	pm_restore_gfp_mask();
>   	dpm_complete(state);
>   }
>   EXPORT_SYMBOL_GPL(dpm_resume_end);
> 
> 
> 

Thanks, I looked through the codepaths and I agree with this change. 
Thanks for catching it.

Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>