mbox series

[SRU,B,0/1] Ubuntu 18.04 kernel 4.15.0-194 crashes on IPL (LP: 1994601)

Message ID 20221027152921.448751-1-frank.heimes@canonical.com
Headers show
Series Ubuntu 18.04 kernel 4.15.0-194 crashes on IPL (LP: 1994601) | expand

Message

Frank Heimes Oct. 27, 2022, 3:29 p.m. UTC
BugLink: https://bugs.launchpad.net/bugs/1994601

SRU Justification:

[ Impact ] 

 * Ubuntu 18.04 / bionic installations with latest kernel 4.15.0-194
   are no longer able to IPL (boot) on IBM z14 or newer hardware.

 * This issue got introduced by upstream commit e4f74400308c
   "s390/archrandom: simplify back to earlier design and initialize earlier"
   that was SRUed to 18.04/bionic based on LP#1989625,
   which made changes in the s390s IPL/boot area of kernel/arch/random.

 * The reason seems to be that the bad patch moves the decision about
   if arch randomness is available to setup.c function setup_randomness().
   This code uses a static_key s390_arch_random_available.
   But in the Canonical kernel the initialization function
   for the jump labels (where the static keys are based on)
   jump_label_init() is called in generic start_kernel()
   wheres in the upstream kernel the init function is
   called early in setup_arch().

 * Reverting this commit from bionic master-next makes bionic systems
   again bootable.
   (https://launchpad.net/~fheimes/+archive/ubuntu/test/)

[ Test Plan ]

 * An IBM z14 or LinuxONE II or newer system is needed.

 * Now install latest bionic on that system - doesn't if it's on LPAR, 
   z/VM or KVM.

 * After the installation (an the trigger of the post install reboot),
   the system will not come up.

 * To test a patched kernel with e4f74400308c can be tested in the
   following way:

 * Install 18.04 GA and prevent it from doing any kernel updates.

 * Means, install in 'island' mode
   or select in d-i 'Advanced Installation'
   and explicitly choose '4.15.0-50 generic' to install.

 * That allows the system to come up and to update the kernel to
   a modified one.

 * Then reboot and verify if the system comes up properly.

[ Where problems could occur ]

 * Problems could occur due to the fact that the commit
   was not cleanly reversible because of minor context changes.

 * Adjustments that were needed might break other things if not
   done carefully.

 * Further commits (applied after e4f74400308c) may still rely
   on the bad e4f74400308c commit - or even further patches
   (from upstream stable).

 * In worst case IPL / boot might get broken,
   even on hardware older than z14.

 * If the revert works fine can be easily tested and was tested based on
   https://launchpad.net/~fheimes/+archive/ubuntu/test/
   and the above test plan.

[ Other Info ]
 
 * Ubuntu 20.04 (focal, using legacy image with virt-install)
   was tested as well, but is not affected by this issue.

Frank Heimes (1):
  Revert "s390/archrandom: simplify back to earlier design and
    initialize earlier"

 arch/s390/crypto/arch_random.c     | 111 ++++++++++++++++++++++++++++-
 arch/s390/include/asm/archrandom.h |  27 +++----
 arch/s390/kernel/setup.c           |   5 --
 3 files changed, 121 insertions(+), 22 deletions(-)

Comments

Tim Gardner Oct. 27, 2022, 3:45 p.m. UTC | #1
On 10/27/22 9:29 AM, frank.heimes@canonical.com wrote:
> BugLink: https://bugs.launchpad.net/bugs/1994601
> 
> SRU Justification:
> 
> [ Impact ]
> 
>   * Ubuntu 18.04 / bionic installations with latest kernel 4.15.0-194
>     are no longer able to IPL (boot) on IBM z14 or newer hardware.
> 
>   * This issue got introduced by upstream commit e4f74400308c
>     "s390/archrandom: simplify back to earlier design and initialize earlier"
>     that was SRUed to 18.04/bionic based on LP#1989625,
>     which made changes in the s390s IPL/boot area of kernel/arch/random.
> 
>   * The reason seems to be that the bad patch moves the decision about
>     if arch randomness is available to setup.c function setup_randomness().
>     This code uses a static_key s390_arch_random_available.
>     But in the Canonical kernel the initialization function
>     for the jump labels (where the static keys are based on)
>     jump_label_init() is called in generic start_kernel()
>     wheres in the upstream kernel the init function is
>     called early in setup_arch().
> 
>   * Reverting this commit from bionic master-next makes bionic systems
>     again bootable.
>     (https://launchpad.net/~fheimes/+archive/ubuntu/test/)
> 
> [ Test Plan ]
> 
>   * An IBM z14 or LinuxONE II or newer system is needed.
> 
>   * Now install latest bionic on that system - doesn't if it's on LPAR,
>     z/VM or KVM.
> 
>   * After the installation (an the trigger of the post install reboot),
>     the system will not come up.
> 
>   * To test a patched kernel with e4f74400308c can be tested in the
>     following way:
> 
>   * Install 18.04 GA and prevent it from doing any kernel updates.
> 
>   * Means, install in 'island' mode
>     or select in d-i 'Advanced Installation'
>     and explicitly choose '4.15.0-50 generic' to install.
> 
>   * That allows the system to come up and to update the kernel to
>     a modified one.
> 
>   * Then reboot and verify if the system comes up properly.
> 
> [ Where problems could occur ]
> 
>   * Problems could occur due to the fact that the commit
>     was not cleanly reversible because of minor context changes.
> 
>   * Adjustments that were needed might break other things if not
>     done carefully.
> 
>   * Further commits (applied after e4f74400308c) may still rely
>     on the bad e4f74400308c commit - or even further patches
>     (from upstream stable).
> 
>   * In worst case IPL / boot might get broken,
>     even on hardware older than z14.
> 
>   * If the revert works fine can be easily tested and was tested based on
>     https://launchpad.net/~fheimes/+archive/ubuntu/test/
>     and the above test plan.
> 
> [ Other Info ]
>   
>   * Ubuntu 20.04 (focal, using legacy image with virt-install)
>     was tested as well, but is not affected by this issue.
> 
> Frank Heimes (1):
>    Revert "s390/archrandom: simplify back to earlier design and
>      initialize earlier"
> 
>   arch/s390/crypto/arch_random.c     | 111 ++++++++++++++++++++++++++++-
>   arch/s390/include/asm/archrandom.h |  27 +++----
>   arch/s390/kernel/setup.c           |   5 --
>   3 files changed, 121 insertions(+), 22 deletions(-)
> 
Acked-by: Tim Gardner <tim.gardner@canonical.com>
Luke Nowakowski-Krijger Oct. 27, 2022, 3:47 p.m. UTC | #2
Acked-by: Luke Nowakowski-Krijger <luke.nowakowskikrijger@canonical.com>

On Thu, Oct 27, 2022 at 8:30 AM <frank.heimes@canonical.com> wrote:

> BugLink: https://bugs.launchpad.net/bugs/1994601
>
> SRU Justification:
>
> [ Impact ]
>
>  * Ubuntu 18.04 / bionic installations with latest kernel 4.15.0-194
>    are no longer able to IPL (boot) on IBM z14 or newer hardware.
>
>  * This issue got introduced by upstream commit e4f74400308c
>    "s390/archrandom: simplify back to earlier design and initialize
> earlier"
>    that was SRUed to 18.04/bionic based on LP#1989625,
>    which made changes in the s390s IPL/boot area of kernel/arch/random.
>
>  * The reason seems to be that the bad patch moves the decision about
>    if arch randomness is available to setup.c function setup_randomness().
>    This code uses a static_key s390_arch_random_available.
>    But in the Canonical kernel the initialization function
>    for the jump labels (where the static keys are based on)
>    jump_label_init() is called in generic start_kernel()
>    wheres in the upstream kernel the init function is
>    called early in setup_arch().
>
>  * Reverting this commit from bionic master-next makes bionic systems
>    again bootable.
>    (https://launchpad.net/~fheimes/+archive/ubuntu/test/)
>
> [ Test Plan ]
>
>  * An IBM z14 or LinuxONE II or newer system is needed.
>
>  * Now install latest bionic on that system - doesn't if it's on LPAR,
>    z/VM or KVM.
>
>  * After the installation (an the trigger of the post install reboot),
>    the system will not come up.
>
>  * To test a patched kernel with e4f74400308c can be tested in the
>    following way:
>
>  * Install 18.04 GA and prevent it from doing any kernel updates.
>
>  * Means, install in 'island' mode
>    or select in d-i 'Advanced Installation'
>    and explicitly choose '4.15.0-50 generic' to install.
>
>  * That allows the system to come up and to update the kernel to
>    a modified one.
>
>  * Then reboot and verify if the system comes up properly.
>
> [ Where problems could occur ]
>
>  * Problems could occur due to the fact that the commit
>    was not cleanly reversible because of minor context changes.
>
>  * Adjustments that were needed might break other things if not
>    done carefully.
>
>  * Further commits (applied after e4f74400308c) may still rely
>    on the bad e4f74400308c commit - or even further patches
>    (from upstream stable).
>
>  * In worst case IPL / boot might get broken,
>    even on hardware older than z14.
>
>  * If the revert works fine can be easily tested and was tested based on
>    https://launchpad.net/~fheimes/+archive/ubuntu/test/
>    and the above test plan.
>
> [ Other Info ]
>
>  * Ubuntu 20.04 (focal, using legacy image with virt-install)
>    was tested as well, but is not affected by this issue.
>
> Frank Heimes (1):
>   Revert "s390/archrandom: simplify back to earlier design and
>     initialize earlier"
>
>  arch/s390/crypto/arch_random.c     | 111 ++++++++++++++++++++++++++++-
>  arch/s390/include/asm/archrandom.h |  27 +++----
>  arch/s390/kernel/setup.c           |   5 --
>  3 files changed, 121 insertions(+), 22 deletions(-)
>
> --
> 2.25.1
>
>
> --
> kernel-team mailing list
> kernel-team@lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
>