Compare commits
No commits in common. "c8-beta-stream-rhel" and "c8s-stream-rhel" have entirely different histories.
c8-beta-st
...
c8s-stream
@ -1,87 +0,0 @@
|
|||||||
From 27f045e2d52ee49ddbb375b5593d4fc387aad4b0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jordan Niethe <jniethe5@gmail.com>
|
|
||||||
Date: Tue, 29 Aug 2023 10:12:01 +1000
|
|
||||||
Subject: [PATCH 2/2] virtio-serial: Do not close stdout on quiesce
|
|
||||||
|
|
||||||
RH-Author: Thomas Huth <thuth@redhat.com>
|
|
||||||
RH-MergeRequest: 1: Fix SLOF crash when only using virtio console (without spapr-vty)
|
|
||||||
RH-Jira: RHEL-3709
|
|
||||||
RH-Acked-by: David Gibson (Red Hat) <dgibson@redhat.com>
|
|
||||||
RH-Acked-by: Laurent Vivier <lvivier@redhat.com>
|
|
||||||
RH-Commit: [2/2] cbde239703a11aa2676a12b8415281d37cba54a5
|
|
||||||
|
|
||||||
Commit 76fee95 ("slof: Only close stdout for virtio-serial devices")
|
|
||||||
says that commit cf28264 ("virtio-serial: Rework shutdown sequence")
|
|
||||||
fixed a hang. The problem was believed to be that it was necessary to
|
|
||||||
close stdout to shutdown the underlying virtio device.
|
|
||||||
|
|
||||||
Commit cf28264 ("virtio-serial: Rework shutdown sequence") closed stdout
|
|
||||||
on quiesce. This meant when prom_init() called write on stdout after
|
|
||||||
quiesce, there is a use after free so this is unreliable, and can also
|
|
||||||
hang (especially after reboots).
|
|
||||||
|
|
||||||
Quiescing is intended to put hardware into a safe state for the client
|
|
||||||
to take over. It is incorrect for SLOF to close ihandles that the client
|
|
||||||
could still be using, even after a quiesce.
|
|
||||||
|
|
||||||
Rather than closing the stdout device, all that needs to happen is to
|
|
||||||
ensure virtio-serial-shutdown gets called. On quiesce, close the virtio
|
|
||||||
device, but leave the stdout device itself open.
|
|
||||||
|
|
||||||
Commit 8174acd ("virtio-serial: Close device completely") handles reads
|
|
||||||
and writes as no-ops if the underlying virtio device is closed so there
|
|
||||||
is no problem with the client calling "write" on stdout after this, but
|
|
||||||
no output will be displayed.
|
|
||||||
|
|
||||||
Fixes: cf28264 ("virtio-serial: Rework shutdown sequence")
|
|
||||||
Debugged-by: Kautuk Consul <kconsul@linux.vnet.ibm.com>
|
|
||||||
Co-developed-by: Kautuk Consul <kconsul@linux.vnet.ibm.com>
|
|
||||||
Signed-off-by: Kautuk Consul <kconsul@linux.vnet.ibm.com>
|
|
||||||
Signed-off-by: Jordan Niethe <jniethe5@gmail.com>
|
|
||||||
Reviewed-by: Thomas Huth <thuth@redhat.com>
|
|
||||||
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
|
|
||||||
(cherry picked from commit dd4d4ea0add97df078d571b48192adaf7c4b0d87)
|
|
||||||
Jira: https://issues.redhat.com/browse/RHEL-3709
|
|
||||||
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
|
||||||
---
|
|
||||||
board-qemu/slof/virtio-serial.fs | 12 +++++-------
|
|
||||||
1 file changed, 5 insertions(+), 7 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/board-qemu/slof/virtio-serial.fs b/board-qemu/slof/virtio-serial.fs
|
|
||||||
index 41e2e04..de42cc7 100644
|
|
||||||
--- a/board-qemu/slof/virtio-serial.fs
|
|
||||||
+++ b/board-qemu/slof/virtio-serial.fs
|
|
||||||
@@ -33,16 +33,14 @@ virtio-setup-vd VALUE virtiodev
|
|
||||||
: virtio-serial-term-key? virtiodev virtio-serial-haschar ;
|
|
||||||
: virtio-serial-term-key BEGIN virtio-serial-term-key? UNTIL virtiodev virtio-serial-getchar ;
|
|
||||||
|
|
||||||
-: virtio-serial-close-stdout s" stdout" get-chosen IF decode-int nip nip close-dev THEN ;
|
|
||||||
-
|
|
||||||
\ Basic device initialization - which has only to be done once
|
|
||||||
: init ( -- )
|
|
||||||
virtiodev virtio-serial-init drop
|
|
||||||
TRUE to initialized?
|
|
||||||
- \ Linux closes stdin at some point in prom_init(). This internally triggers a
|
|
||||||
- \ quiesce in SLOF. We must ensure stdout gets closed as well otherwise the
|
|
||||||
- \ device cannot be reset properly and the boot will hang.
|
|
||||||
- ['] virtio-serial-close-stdout add-quiesce-xt
|
|
||||||
+ \ virtiodev must be shutdown at quiesce so the device is reset properly.
|
|
||||||
+ \ The read and write methods can be called after quiesce so must handle
|
|
||||||
+ \ virtiodev being closed.
|
|
||||||
+ ['] shutdown add-quiesce-xt
|
|
||||||
;
|
|
||||||
|
|
||||||
0 VALUE open-count
|
|
||||||
@@ -62,8 +60,8 @@ virtiodev virtio-serial-init drop
|
|
||||||
open-count 0> IF
|
|
||||||
open-count 1 - dup to open-count
|
|
||||||
0= IF shutdown THEN
|
|
||||||
+ close
|
|
||||||
THEN
|
|
||||||
- close
|
|
||||||
;
|
|
||||||
|
|
||||||
: write ( addr len -- actual )
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
@ -1,58 +0,0 @@
|
|||||||
From 67cbc16b3e6d34cf3932f88fd32323878026d6a0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kautuk Consul <kconsul@linux.vnet.ibm.com>
|
|
||||||
Date: Tue, 29 Aug 2023 10:12:00 +1000
|
|
||||||
Subject: [PATCH 1/2] virtio-serial: Make read and write methods report failure
|
|
||||||
|
|
||||||
RH-Author: Thomas Huth <thuth@redhat.com>
|
|
||||||
RH-MergeRequest: 1: Fix SLOF crash when only using virtio console (without spapr-vty)
|
|
||||||
RH-Jira: RHEL-3709
|
|
||||||
RH-Acked-by: David Gibson (Red Hat) <dgibson@redhat.com>
|
|
||||||
RH-Acked-by: Laurent Vivier <lvivier@redhat.com>
|
|
||||||
RH-Commit: [1/2] 7aee41dceade77a47edd794cab43672ff95896d0
|
|
||||||
|
|
||||||
The read and write methods return successfully even if the virtio device
|
|
||||||
is closed (virtiodev is 0) and it is not able to send or receive any
|
|
||||||
characters.
|
|
||||||
|
|
||||||
Make the read and write methods return 0 to indicate they did not
|
|
||||||
succeed in this case.
|
|
||||||
|
|
||||||
This also fixes an invalid stack access in the read method.
|
|
||||||
|
|
||||||
Fixes: 8174acd ("virtio-serial: Close device completely")
|
|
||||||
Signed-off-by: Kautuk Consul <kconsul@linux.vnet.ibm.com>
|
|
||||||
Signed-off-by: Jordan Niethe <jniethe5@gmail.com>
|
|
||||||
Reviewed-by: Thomas Huth <thuth@redhat.com>
|
|
||||||
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
|
|
||||||
(cherry picked from commit 63b66a5147069bda815989732442cb07790609db)
|
|
||||||
Jira: https://issues.redhat.com/browse/RHEL-3709
|
|
||||||
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
|
||||||
---
|
|
||||||
board-qemu/slof/virtio-serial.fs | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/board-qemu/slof/virtio-serial.fs b/board-qemu/slof/virtio-serial.fs
|
|
||||||
index 82868e2..41e2e04 100644
|
|
||||||
--- a/board-qemu/slof/virtio-serial.fs
|
|
||||||
+++ b/board-qemu/slof/virtio-serial.fs
|
|
||||||
@@ -67,7 +67,7 @@ virtiodev virtio-serial-init drop
|
|
||||||
;
|
|
||||||
|
|
||||||
: write ( addr len -- actual )
|
|
||||||
- virtiodev 0= IF nip EXIT THEN
|
|
||||||
+ virtiodev 0= IF 2drop 0 EXIT THEN
|
|
||||||
tuck
|
|
||||||
0 ?DO
|
|
||||||
dup c@ virtiodev SWAP virtio-serial-putchar
|
|
||||||
@@ -78,7 +78,7 @@ virtiodev virtio-serial-init drop
|
|
||||||
|
|
||||||
: read ( addr len -- actual )
|
|
||||||
0= IF drop 0 EXIT THEN
|
|
||||||
- virtiodev 0= IF nip EXIT THEN
|
|
||||||
+ virtiodev 0= IF drop 0 EXIT THEN
|
|
||||||
virtiodev virtio-serial-haschar 0= IF 0 swap c! -2 EXIT THEN
|
|
||||||
virtiodev virtio-serial-getchar swap c! 1
|
|
||||||
;
|
|
||||||
--
|
|
||||||
2.41.0
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
Name: SLOF
|
Name: SLOF
|
||||||
Version: %{GITDATE}
|
Version: %{GITDATE}
|
||||||
Release: 2%{?dist}
|
Release: 1%{?dist}
|
||||||
Summary: Slimline Open Firmware
|
Summary: Slimline Open Firmware
|
||||||
Group: Applications/Emulators
|
Group: Applications/Emulators
|
||||||
License: BSD
|
License: BSD
|
||||||
@ -12,10 +12,6 @@ URL: http://www.openfirmware.info/SLOF
|
|||||||
|
|
||||||
Source0: https://github.com/aik/SLOF/archive/qemu-slof-20210217.tar.gz
|
Source0: https://github.com/aik/SLOF/archive/qemu-slof-20210217.tar.gz
|
||||||
|
|
||||||
# For RHEL-3709 - SLOF regression prevents VM startup
|
|
||||||
Patch1: slof-virtio-serial-Make-read-and-write-methods-report-fai.patch
|
|
||||||
# For RHEL-3709 - SLOF regression prevents VM startup
|
|
||||||
Patch2: slof-virtio-serial-Do-not-close-stdout-on-quiesce.patch
|
|
||||||
|
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
ExclusiveArch: %{power64}
|
ExclusiveArch: %{power64}
|
||||||
@ -60,12 +56,6 @@ install -c -m 0644 boot_rom.bin $RPM_BUILD_ROOT%{_datadir}/qemu-kvm/slof.bin
|
|||||||
%{_datadir}/qemu-kvm/slof.bin
|
%{_datadir}/qemu-kvm/slof.bin
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Wed Oct 04 2023 Jon Maloy <jmaloy@redhat.com> - 20210217-2.el8
|
|
||||||
- slof-virtio-serial-Make-read-and-write-methods-report-fai.patch [RHEL-3709]
|
|
||||||
- slof-virtio-serial-Do-not-close-stdout-on-quiesce.patch [RHEL-3709]
|
|
||||||
- Resolves: RHEL-3709
|
|
||||||
(SLOF regression prevents VM startup)
|
|
||||||
|
|
||||||
* Thu Sep 2 2021 Danilo C. L. de Paula <ddepaula@redhat.com> - 20210217-1.el8
|
* Thu Sep 2 2021 Danilo C. L. de Paula <ddepaula@redhat.com> - 20210217-1.el8
|
||||||
- Resolves: bz#2000225
|
- Resolves: bz#2000225
|
||||||
(Rebase virt:rhel module:stream based on AV-8.6)
|
(Rebase virt:rhel module:stream based on AV-8.6)
|
||||||
|
Loading…
Reference in New Issue
Block a user