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