Re: [PATCH AUTOSEL 4.14 02/15] s390/hibernate: fix error handling when suspend cpu != resume cpu

From: Greg KH
Date: Fri Oct 26 2018 - 05:22:22 EST


On Fri, Oct 26, 2018 at 11:05:43AM +0200, Pavel Machek wrote:
> On Mon 2018-10-22 06:20:13, Sasha Levin wrote:
> > From: Gerald Schaefer <gerald.schaefer@xxxxxxxxxx>
> >
> > [ Upstream commit 55a5542a546238354d1f209f794414168cf8c71d ]
> >
> > The resume code checks if the resume cpu is the same as the suspend cpu.
> > If not, and if it is also not possible to switch to the suspend cpu, an
> > error message should be printed and the resume process should be stopped
> > by loading a disabled wait psw.
> >
> > The current logic is broken in multiple ways, the message is never printed,
> > and the disabled wait psw never loaded because the kernel panics before that:
> > - sam31 and SIGP_SET_ARCHITECTURE to ESA mode is wrong, this will break
> > on the first 64bit instruction in sclp_early_printk().
> > - The init stack should be used, but the stack pointer is not set up correctly
> > (missing aghi %r15,-STACK_FRAME_OVERHEAD).
> > - __sclp_early_printk() checks the sclp_init_state. If it is not
> > sclp_init_state_uninitialized, it simply returns w/o printing anything.
> > In the resumed kernel however, sclp_init_state will never be uninitialized.
>
> Stable patches should fix one bug, and one bug only.

So should upstream patches, but the rule of "stable patches match
upstream identically" overrules this :)