Messages in this thread | | | From | "Rafael J. Wysocki" <> | Date | Wed, 6 Oct 2021 18:33:34 +0200 | Subject | Re: [PATCH] PM / suspend: Abort suspend if somebody holds wakelock |
| |
On Wed, Oct 6, 2021 at 6:27 PM Mukesh Ojha <mojha@codeaurora.org> wrote: > > There could be a scenario, where request_firmware() call results in > user land process trying to load firmwares into memory and > parallely one miscellaneous process is trying to invoke manual > suspend and due to which user mode helper gets disabled during > freezing of processes and that aborts loading of firmware even > though request_firmware() thread has taken wakelock. > > Although, we are checking for any wakeup event inside > try_to_freeze_tasks() but that could be too late for the > above scenario. > > Let's add a check before freezing/disable user land process in > suspend path.
If a laptop lid is closed and the system is expected to suspend, it must suspend.
This takes precedence over the loading of firmware. Sorry.
> Signed-off-by: Mukesh Ojha <mojha@codeaurora.org> > --- > kernel/power/process.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/kernel/power/process.c b/kernel/power/process.c > index 37401c9..3e0d3d6 100644 > --- a/kernel/power/process.c > +++ b/kernel/power/process.c > @@ -124,6 +124,9 @@ int freeze_processes(void) > { > int error; > > + if (pm_wakeup_pending()) > + return -EBUSY; > + > error = __usermodehelper_disable(UMH_FREEZING); > if (error) > return error; > -- > Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center, > Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project >
| |