Re: [PATCH 4.19 11/37] PM: hibernate: Freeze kernel threads in software_resume()
From: Pavel Machek
Date: Tue May 05 2020 - 08:10:00 EST
Hi!
> commit 2351f8d295ed63393190e39c2f7c1fee1a80578f upstream.
>
> Currently the kernel threads are not frozen in software_resume(), so
> between dpm_suspend_start(PMSG_QUIESCE) and resume_target_kernel(),
> system_freezable_power_efficient_wq can still try to submit SCSI
> commands and this can cause a panic since the low level SCSI driver
> (e.g. hv_storvsc) has quiesced the SCSI adapter and can not accept
> any SCSI commands: https://lkml.org/lkml/2020/4/10/47
>
> At first I posted a fix (https://lkml.org/lkml/2020/4/21/1318) trying
> to resolve the issue from hv_storvsc, but with the help of
> Bart Van Assche, I realized it's better to fix software_resume(),
> since this looks like a generic issue, not only pertaining to SCSI.
I believe it is too soon to merge this into stable. It is rather big
hammer. Yes, it is right thing to do. But I'd wait for 5.7 to be
released before merging it to stable.
It needs some testing and it did not get any.
Best regards,
Pavel
> Cc: All applicable <stable@xxxxxxxxxxxxxxx>
> Signed-off-by: Dexuan Cui <decui@xxxxxxxxxxxxx>
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
>
> ---
> kernel/power/hibernate.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> --- a/kernel/power/hibernate.c
> +++ b/kernel/power/hibernate.c
> @@ -901,6 +901,13 @@ static int software_resume(void)
> error = freeze_processes();
> if (error)
> goto Close_Finish;
> +
> + error = freeze_kernel_threads();
> + if (error) {
> + thaw_processes();
> + goto Close_Finish;
> + }
> +
> error = load_image_and_restore();
> thaw_processes();
> Finish:
>
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Attachment:
signature.asc
Description: Digital signature