Accepting request 823200 from home:markkp:branches:Base:System
- The location of the udevadm binary was changed from /sbin/ to /usr/bin a while back. A symbolic link was added for compatibility. In the latest versions, that symbolic link has been removed, requiring changes to scripts that were depending on that. Added the following patches for bsc#1171587 * s390-tools-sles15sp2-lsluns-try-harder-to-find-udevadm.patch * s390-tools-sles15sp2-znetconf-introduce-better-ways-to-locate-udevadm.patch *s390-tools-sles15sp2-mon_tools-update-udevadm-location.patch - Added s390-tools-sles15sp2-zipl-prevent-endless-loop-during-IPL.patch (bsc#1174309) zipl: prevent endless loop during secure IPL - Added s390-tools-sles15sp2-zipl-check-for-valid-ipl-parmblock-lowcore-pointer.patch (bsc#1174310) zipl: check for valid ipl parmblock lowcore pointer - Added s390-tools-sles15sp2-01-zipl-libc-libc_stop-move-noreturn-to-declaration.patch s390-tools-sles15sp2-02-zipl-stage3-correctly-handle-diag308-response-code.patch (bsc1174311) zipl: Fix KVM IPL without bootindex - Updated cputype and read_values to recognize the new z15 models. - Added s390-tools-sles15sp2-zipl-prevent-endless-loop-during-IPL.patch (bsc#1174309) zipl: prevent endless loop during secure IPL - Added s390-tools-sles15sp2-zipl-check-for-valid-ipl-parmblock-lowcore-pointer.patch (bsc#1174310) zipl: check for valid ipl parmblock lowcore pointer - Added s390-tools-sles15sp2-01-zipl-libc-libc_stop-move-noreturn-to-declaration.patch s390-tools-sles15sp2-02-zipl-stage3-correctly-handle-diag308-response-code.patch (bsc1174311) zipl: Fix KVM IPL without bootindex - Updated cputype and read_values to recognize the new z15 models. - Added s390-tools-sles15sp2-vmcp-exit-code.patch (bsc#1173481) Change the vmcp exit code and return 'CP command failed' when both "CP command failed" and "response buffer is too small" error conditions are true. OBS-URL: https://build.opensuse.org/request/show/823200 OBS-URL: https://build.opensuse.org/package/show/Base:System/s390-tools?expand=0&rev=97
This commit is contained in:
parent
ce4e84587f
commit
58e312617d
3
cputype
3
cputype
@ -60,7 +60,8 @@ case "${machine}" in
|
|||||||
2965) echo "${machine} = z13s IBM z13s (single frame)" ;;
|
2965) echo "${machine} = z13s IBM z13s (single frame)" ;;
|
||||||
3906) echo "${machine} = z14 IBM z14" ;;
|
3906) echo "${machine} = z14 IBM z14" ;;
|
||||||
3907) echo "${machine} = z14 ZR1 IBM z14 ZR1" ;;
|
3907) echo "${machine} = z14 ZR1 IBM z14 ZR1" ;;
|
||||||
8561) echo "${machine} = z15 IBM z15" ;;
|
8561) echo "${machine} = z15 T01 IBM z15 T01" ;;
|
||||||
|
8562) echo "${machine} = z15 T02 IBM z15 T02" ;;
|
||||||
*) echo "An unknown machine type was reported: ${machine}" >&2
|
*) echo "An unknown machine type was reported: ${machine}" >&2
|
||||||
echo "Please file a bug report with this output:" >&2
|
echo "Please file a bug report with this output:" >&2
|
||||||
/bin/cat /proc/cpuinfo >&2
|
/bin/cat /proc/cpuinfo >&2
|
||||||
|
@ -72,8 +72,10 @@ struct machinetype {
|
|||||||
{ QC_TYPE_FAMILY_LINUXONE, "3906", "3906 = IBM LinuxONE Emperor II" },
|
{ QC_TYPE_FAMILY_LINUXONE, "3906", "3906 = IBM LinuxONE Emperor II" },
|
||||||
{ QC_TYPE_FAMILY_IBMZ, "3907", "3907 = z14 ZR1 IBM z14 ZR1" },
|
{ QC_TYPE_FAMILY_IBMZ, "3907", "3907 = z14 ZR1 IBM z14 ZR1" },
|
||||||
{ QC_TYPE_FAMILY_LINUXONE, "3907", "3907 = IBM LinuxONE Rockhopper II" },
|
{ QC_TYPE_FAMILY_LINUXONE, "3907", "3907 = IBM LinuxONE Rockhopper II" },
|
||||||
{ QC_TYPE_FAMILY_IBMZ, "8561", "8561 = z15 IBM z15" },
|
{ QC_TYPE_FAMILY_IBMZ, "8561", "8561 = z15 T01 IBM z15 T01" },
|
||||||
{ QC_TYPE_FAMILY_LINUXONE, "8561", "8561 = IBM LinuxONE III" },
|
{ QC_TYPE_FAMILY_LINUXONE, "8561", "8561 = IBM LinuxONE III LT1" },
|
||||||
|
{ QC_TYPE_FAMILY_IBMZ, "8562", "8562 = z15 T02 IBM z15 T02" },
|
||||||
|
{ QC_TYPE_FAMILY_LINUXONE, "8562", "8562 = IBM LinuxONE III LT2" },
|
||||||
};
|
};
|
||||||
|
|
||||||
int debug = 0;
|
int debug = 0;
|
||||||
|
@ -0,0 +1,72 @@
|
|||||||
|
Subject: [PATCH] [BZ 186940] zipl/libc: libc_stop move 'noreturn' to declaration
|
||||||
|
From: Stefan Haberland <sth@linux.ibm.com>
|
||||||
|
|
||||||
|
Description: zipl: Fix KVM IPL without bootindex
|
||||||
|
Symptom: Failed IPL on KVM when no bootindex is specified.
|
||||||
|
Problem: Without bootindex specified there is no IPL parmblock
|
||||||
|
on KVM which can be read by the stage3 loader.
|
||||||
|
Solution: In case diag308 gives a response code 0x102 the stage3
|
||||||
|
loader can safely assume that no secure IPL is required
|
||||||
|
since no IPL report block exists.
|
||||||
|
Reproduction: IPL on KVM without 'bootindex=' attached.
|
||||||
|
Upstream-ID: c9066bf5497300db5e0ba11bf111683ea225d8c8
|
||||||
|
Problem-ID: 186940
|
||||||
|
|
||||||
|
Upstream-Description:
|
||||||
|
|
||||||
|
zipl/libc: libc_stop move 'noreturn' to declaration
|
||||||
|
|
||||||
|
Commit 86856f98dbe3 ("zipl: Make use of __noreturn macro") moved the
|
||||||
|
'noreturn' attribute from declaration to definition. With this the
|
||||||
|
compiler can no longer optimize when the function is called in a
|
||||||
|
separate source file. Move the attribute back to the declaration
|
||||||
|
|
||||||
|
Reviewed-by: Stefan Haberland <sth@linux.ibm.com>
|
||||||
|
Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>
|
||||||
|
|
||||||
|
|
||||||
|
Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
|
||||||
|
---
|
||||||
|
zipl/boot/libc.c | 3 +--
|
||||||
|
zipl/boot/libc.h | 4 +++-
|
||||||
|
2 files changed, 4 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
--- a/zipl/boot/libc.c
|
||||||
|
+++ b/zipl/boot/libc.c
|
||||||
|
@@ -13,7 +13,6 @@
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
-#include "lib/zt_common.h"
|
||||||
|
#include "boot/s390.h"
|
||||||
|
|
||||||
|
#include "error.h"
|
||||||
|
@@ -501,7 +500,7 @@ void initialize(void)
|
||||||
|
/*
|
||||||
|
* Load disabled wait PSW with reason code in address field
|
||||||
|
*/
|
||||||
|
-void __noreturn libc_stop(unsigned long reason)
|
||||||
|
+void libc_stop(unsigned long reason)
|
||||||
|
{
|
||||||
|
struct psw_t psw;
|
||||||
|
|
||||||
|
--- a/zipl/boot/libc.h
|
||||||
|
+++ b/zipl/boot/libc.h
|
||||||
|
@@ -15,6 +15,8 @@
|
||||||
|
|
||||||
|
#define NULL ((void *) 0)
|
||||||
|
|
||||||
|
+#include "lib/zt_common.h"
|
||||||
|
+
|
||||||
|
#define EPERM 1 /* Operation not permitted */
|
||||||
|
#define ENOENT 2 /* No such file or directory */
|
||||||
|
#define ESRCH 3 /* No such process */
|
||||||
|
@@ -56,7 +58,7 @@ char *strcpy(char *, const char *);
|
||||||
|
unsigned long get_zeroed_page(void);
|
||||||
|
void free_page(unsigned long);
|
||||||
|
void initialize(void);
|
||||||
|
-void libc_stop(unsigned long);
|
||||||
|
+void libc_stop(unsigned long) __noreturn;
|
||||||
|
void start(void);
|
||||||
|
void pgm_check_handler(void);
|
||||||
|
void pgm_check_handler_fn(void);
|
@ -0,0 +1,87 @@
|
|||||||
|
Subject: [PATCH] [BZ 186940] zipl/stage3: correctly handle diag308 response code
|
||||||
|
From: Stefan Haberland <sth@linux.ibm.com>
|
||||||
|
|
||||||
|
Description: zipl: Fix KVM IPL without bootindex
|
||||||
|
Symptom: Failed IPL on KVM when no bootindex is specified.
|
||||||
|
Problem: Without bootindex specified there is no IPL parmblock
|
||||||
|
on KVM which can be read by the stage3 loader.
|
||||||
|
Solution: In case diag308 gives a response code 0x102 the stage3
|
||||||
|
loader can safely assume that no secure IPL is required
|
||||||
|
since no IPL report block exists.
|
||||||
|
Reproduction: IPL on KVM without 'bootindex=' attached.
|
||||||
|
Upstream-ID: b7f1977d3f9332f82e7f388fb18076b89b83944e
|
||||||
|
Problem-ID: 186940
|
||||||
|
|
||||||
|
Upstream-Description:
|
||||||
|
|
||||||
|
zipl/stage3: correctly handle diag308 response code
|
||||||
|
|
||||||
|
In case diag308 gives a response code 0x102 the stage3 loader can
|
||||||
|
safely assume that no secure IPL is required since no IPL report
|
||||||
|
block exists.
|
||||||
|
|
||||||
|
Suggested-by: Marc Hartmayer <mhartmay@linux.ibm.com>
|
||||||
|
Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
|
||||||
|
Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com>
|
||||||
|
Reviewed-by: Philipp Rudo <prudo@linux.ibm.com>
|
||||||
|
Tested-by: Marc Hartmayer <mhartmay@linux.ibm.com>
|
||||||
|
|
||||||
|
|
||||||
|
Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
|
||||||
|
---
|
||||||
|
include/boot/s390.h | 1 +
|
||||||
|
zipl/boot/stage3.c | 25 +++++++++++--------------
|
||||||
|
2 files changed, 12 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
--- a/include/boot/s390.h
|
||||||
|
+++ b/include/boot/s390.h
|
||||||
|
@@ -279,6 +279,7 @@ enum diag308_subcode {
|
||||||
|
|
||||||
|
enum diag308_rc {
|
||||||
|
DIAG308_RC_OK = 0x0001,
|
||||||
|
+ DIAG308_RC_NO_CONF = 0x0102,
|
||||||
|
};
|
||||||
|
|
||||||
|
static __always_inline unsigned long diag308(unsigned long subcode, void *addr)
|
||||||
|
--- a/zipl/boot/stage3.c
|
||||||
|
+++ b/zipl/boot/stage3.c
|
||||||
|
@@ -55,18 +55,6 @@ static inline void __noreturn start_kern
|
||||||
|
while (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
-unsigned int store_ipl_parmblock(struct ipl_pl_hdr *pl_hdr)
|
||||||
|
-{
|
||||||
|
- int rc;
|
||||||
|
-
|
||||||
|
- rc = diag308(DIAG308_STORE, pl_hdr);
|
||||||
|
- if (rc == DIAG308_RC_OK &&
|
||||||
|
- pl_hdr->version <= IPL_MAX_SUPPORTED_VERSION)
|
||||||
|
- return 0;
|
||||||
|
-
|
||||||
|
- return 1;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
unsigned int
|
||||||
|
is_verified_address(unsigned long image_addr)
|
||||||
|
{
|
||||||
|
@@ -124,9 +112,18 @@ secure_boot_enabled()
|
||||||
|
unsigned int rc;
|
||||||
|
|
||||||
|
pl_hdr = (void *)get_zeroed_page();
|
||||||
|
- if (!pl_hdr || store_ipl_parmblock(pl_hdr))
|
||||||
|
+ switch (diag308(DIAG308_STORE, pl_hdr)) {
|
||||||
|
+ case DIAG308_RC_OK:
|
||||||
|
+ rc = pl_hdr->version <= IPL_MAX_SUPPORTED_VERSION &&
|
||||||
|
+ !!(pl_hdr->flags & IPL_FLAG_SECURE);
|
||||||
|
+ break;
|
||||||
|
+ case DIAG308_RC_NO_CONF:
|
||||||
|
+ rc = 0;
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
panic(ESECUREBOOT, "%s", msg_sipl_noparm);
|
||||||
|
- rc = !!(pl_hdr->flags & IPL_FLAG_SECURE);
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
free_page((unsigned long) pl_hdr);
|
||||||
|
|
||||||
|
return rc;
|
59
s390-tools-sles15sp2-lsluns-try-harder-to-find-udevadm.patch
Normal file
59
s390-tools-sles15sp2-lsluns-try-harder-to-find-udevadm.patch
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
From e679a4002ecea6d8177430d6efde2b3ef2b89d0e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Julian Wiedmann <jwi@linux.ibm.com>
|
||||||
|
Date: Wed, 13 May 2020 18:19:35 +0200
|
||||||
|
Subject: [PATCH] lsluns: try harder to find udevadm
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Hard-coding udevadm's location isn't robust enough - for instance,
|
||||||
|
Ubuntu 20.04 moved it to /usr/bin.
|
||||||
|
|
||||||
|
First see if we can reach it through $PATH, then fall back to hard-coded
|
||||||
|
locations that we know about.
|
||||||
|
Also when finally falling back to udevsettle, check that it exists.
|
||||||
|
Otherwise we end up throwing tons of "No such file or directory" error
|
||||||
|
messages at the user.
|
||||||
|
|
||||||
|
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
|
||||||
|
Reviewed-by: Steffen Maier <maier@linux.ibm.com>
|
||||||
|
Reviewed-by: Fedor Loshakov <loshakov@linux.ibm.com>
|
||||||
|
Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
|
||||||
|
---
|
||||||
|
zconf/lsluns | 17 +++++++++++++----
|
||||||
|
1 file changed, 13 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/zconf/lsluns b/zconf/lsluns
|
||||||
|
index bfe48f1..7144c78 100755
|
||||||
|
--- a/zconf/lsluns
|
||||||
|
+++ b/zconf/lsluns
|
||||||
|
@@ -24,13 +24,22 @@ my $wlun = "0xc101000000000000";
|
||||||
|
my $lun0 = "0x0000000000000000";
|
||||||
|
my $sg_dir = "/sys/class/scsi_generic";
|
||||||
|
my $udevsettle_call;
|
||||||
|
-my $udevadm = "/sbin/udevadm";
|
||||||
|
|
||||||
|
|
||||||
|
-if (! -e $udevadm) {
|
||||||
|
- $udevsettle_call = "/sbin/udevsettle";
|
||||||
|
+# See if we can find udevadm through $PATH:
|
||||||
|
+if (!system("udevadm --version > /dev/null 2>&1")) {
|
||||||
|
+ $udevsettle_call = "udevadm settle";
|
||||||
|
+# Search udevadm in well-known locations:
|
||||||
|
+} elsif (-e "/sbin/udevadm") {
|
||||||
|
+ $udevsettle_call = "/sbin/udevadm settle";
|
||||||
|
+} elsif (-e "/usr/bin/udevadm") {
|
||||||
|
+ $udevsettle_call = "/usr/bin/udevadm settle";
|
||||||
|
+# Fall back to udevsettle:
|
||||||
|
+} elsif (-e "/sbin/udevsettle") {
|
||||||
|
+ $udevsettle_call = "/sbin/udevsettle";
|
||||||
|
} else {
|
||||||
|
- $udevsettle_call = "$udevadm settle";
|
||||||
|
+ $udevsettle_call = "";
|
||||||
|
+ print "Failed to find any candidate for udevsettle.\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
# read the first line of a sysfs-entry and compare it to a given string
|
||||||
|
--
|
||||||
|
2.26.2
|
||||||
|
|
64
s390-tools-sles15sp2-mon_tools-update-udevadm-location.patch
Normal file
64
s390-tools-sles15sp2-mon_tools-update-udevadm-location.patch
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
From 2215ba672e2f1e69b21b8b852db566b87df7adf7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Gerald Schaefer <gerald.schaefer@de.ibm.com>
|
||||||
|
Date: Mon, 6 Jul 2020 13:30:40 +0200
|
||||||
|
Subject: [PATCH] mon_tools: update udevadm location
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Modern distributions do not provide the symlink /sbin/udevadm any more.
|
||||||
|
Use /usr/bin/udevadm instead for the example init script / systemd units.
|
||||||
|
Note that those are meant for example purpose and would need to be adjusted
|
||||||
|
by distributions, so no extra effort is taken to determine the actual
|
||||||
|
location of udevadm.
|
||||||
|
|
||||||
|
Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
|
||||||
|
Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
|
||||||
|
---
|
||||||
|
etc/init.d/mon_statd | 2 +-
|
||||||
|
systemd/mon_fsstatd.service.in | 2 +-
|
||||||
|
systemd/mon_procd.service.in | 2 +-
|
||||||
|
3 files changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/etc/init.d/mon_statd b/etc/init.d/mon_statd
|
||||||
|
index 90bd565..68f6d91 100755
|
||||||
|
--- a/etc/init.d/mon_statd
|
||||||
|
+++ b/etc/init.d/mon_statd
|
||||||
|
@@ -31,7 +31,7 @@ if [ -f $CONFIG_FILE ]; then
|
||||||
|
. $CONFIG_FILE
|
||||||
|
fi
|
||||||
|
|
||||||
|
-UDEVSETTLE=/sbin/udevadm
|
||||||
|
+UDEVSETTLE=/usr/bin/udevadm
|
||||||
|
if [ ! -e $UDEVSETTLE ]
|
||||||
|
then
|
||||||
|
UDEVSETTLE=/sbin/udevsettle
|
||||||
|
diff --git a/systemd/mon_fsstatd.service.in b/systemd/mon_fsstatd.service.in
|
||||||
|
index 8620d3b..cdba480 100644
|
||||||
|
--- a/systemd/mon_fsstatd.service.in
|
||||||
|
+++ b/systemd/mon_fsstatd.service.in
|
||||||
|
@@ -29,7 +29,7 @@ EnvironmentFile=@sysconf_path@/sysconfig/mon_fsstatd
|
||||||
|
#Environment=FSSTAT_INTERVAL=30
|
||||||
|
|
||||||
|
ExecStartPre=-/sbin/modprobe monwriter
|
||||||
|
-ExecStartPre=/sbin/udevadm settle --timeout=10
|
||||||
|
+ExecStartPre=/usr/bin/udevadm settle --timeout=10
|
||||||
|
ExecStart=@usrsbin_path@/mon_fsstatd -i $FSSTAT_INTERVAL
|
||||||
|
ExecReload=/bin/kill -HUP $MAINPID
|
||||||
|
KillMode=process
|
||||||
|
diff --git a/systemd/mon_procd.service.in b/systemd/mon_procd.service.in
|
||||||
|
index 512e584..1c5b3f4 100644
|
||||||
|
--- a/systemd/mon_procd.service.in
|
||||||
|
+++ b/systemd/mon_procd.service.in
|
||||||
|
@@ -29,7 +29,7 @@ EnvironmentFile=@sysconf_path@/sysconfig/mon_procd
|
||||||
|
#Environment=PROC_INTERVAL=30
|
||||||
|
|
||||||
|
ExecStartPre=-/sbin/modprobe monwriter
|
||||||
|
-ExecStartPre=/sbin/udevadm settle --timeout=10
|
||||||
|
+ExecStartPre=/usr/bin/udevadm settle --timeout=10
|
||||||
|
ExecStart=@usrsbin_path@/mon_procd -i $PROC_INTERVAL
|
||||||
|
ExecReload=/bin/kill -HUP $MAINPID
|
||||||
|
KillMode=process
|
||||||
|
--
|
||||||
|
2.26.2
|
||||||
|
|
73
s390-tools-sles15sp2-vmcp-exit-code.patch
Normal file
73
s390-tools-sles15sp2-vmcp-exit-code.patch
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
Subject: [PATCH] [BZ 186342] vmcp: Change sequence of failed exit
|
||||||
|
From: Thomas Richter <tmricht@linux.ibm.com>
|
||||||
|
|
||||||
|
Description: vmcp: Change sequence of failed exit
|
||||||
|
Symptom: VMCP command fails to execute commands with a very large
|
||||||
|
response on a very memory constraint system. A kernel log
|
||||||
|
message appears in the kernel log file:
|
||||||
|
2020-05-29T10:57:16.543860-05:00 xdrf1 kernel: cma:
|
||||||
|
cma_alloc: alloc failed, req-size: 8 pages, ret: -16
|
||||||
|
The vmcp command fails and indicates this in the exit code.
|
||||||
|
|
||||||
|
Problem: When vmcp fails to execute a CP command with both error
|
||||||
|
conditions
|
||||||
|
- response buffer is too small
|
||||||
|
- CP command failed
|
||||||
|
then the vmcp program exits with 'response buffer too small'
|
||||||
|
indication. However, an exit code indicating
|
||||||
|
'CP command failed' would be more important in this case.
|
||||||
|
So change the vmcp exit code and return 'CP command failed'
|
||||||
|
for above error scenario.
|
||||||
|
|
||||||
|
Solution: Change the vmcp exit code and return 'CP command failed'
|
||||||
|
when both error conditions are true.
|
||||||
|
Reproduction: Issue vmcp varyoff command on system with low memory and
|
||||||
|
many DASD devices.
|
||||||
|
Upstream-ID: 53b949926f1bf0c6070650aae5f474e8df5378df
|
||||||
|
Problem-ID: 186342
|
||||||
|
|
||||||
|
Upstream-Description:
|
||||||
|
|
||||||
|
vmcp: Change sequence of failed exit
|
||||||
|
|
||||||
|
When vmcp fails to execute a CP command with both error conditions
|
||||||
|
- response buffer is too small
|
||||||
|
- CP command failed
|
||||||
|
then the vmcp program exits with 'response buffer too small' indication.
|
||||||
|
However, an exit code indicating 'CP command failed' would be more
|
||||||
|
important in this case.
|
||||||
|
So change the vmcp exit code and return 'CP command failed' for above
|
||||||
|
error scenario.
|
||||||
|
|
||||||
|
Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
|
||||||
|
Signed-off-by: Jan Hoeppner <hoeppner@linux.ibm.com>
|
||||||
|
|
||||||
|
|
||||||
|
Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
|
||||||
|
---
|
||||||
|
vmcp/vmcp.c | 10 +++++-----
|
||||||
|
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
--- a/vmcp/vmcp.c
|
||||||
|
+++ b/vmcp/vmcp.c
|
||||||
|
@@ -235,15 +235,15 @@ int main(int argc, char **argv)
|
||||||
|
write_buffer(STDOUT_FILENO, cp.response,
|
||||||
|
MIN(cp.response_size, cp.buffer_size));
|
||||||
|
free(cp.response);
|
||||||
|
- if (ret == VMCP_ERR_TOOSMALL) {
|
||||||
|
- fprintf(stderr, "Error: output (%d bytes) was truncated, try "
|
||||||
|
- "--buffer to increase size\n", cp.response_size);
|
||||||
|
- return VMCP_BUF;
|
||||||
|
- }
|
||||||
|
if (cp.cprc > 0) {
|
||||||
|
fprintf(stderr, "Error: non-zero CP response for command '%s': "
|
||||||
|
"#%d\n", command, cp.cprc);
|
||||||
|
return VMCP_CP;
|
||||||
|
}
|
||||||
|
+ if (ret == VMCP_ERR_TOOSMALL) {
|
||||||
|
+ fprintf(stderr, "Error: output (%d bytes) was truncated, try "
|
||||||
|
+ "--buffer to increase size\n", cp.response_size);
|
||||||
|
+ return VMCP_BUF;
|
||||||
|
+ }
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
@ -0,0 +1,81 @@
|
|||||||
|
Subject: [PATCH] [BZ 186938] zipl: check for valid ipl parmblock lowcore pointer
|
||||||
|
From: Stefan Haberland <sth@linux.ibm.com>
|
||||||
|
|
||||||
|
Description: zipl: check for valid ipl parmblock lowcore pointer
|
||||||
|
Symptom: For CCW type IPL the IPL might fail.
|
||||||
|
Problem: The lowcore parmblock pointer is not valid in every
|
||||||
|
case. For example it is invalid for CCW type IPL.
|
||||||
|
Solution: To have an indication if the pointer is valid do a
|
||||||
|
diag308 to store the parmblock and check if secure boot
|
||||||
|
is enabled. If it is enabled the lowcore pointer is
|
||||||
|
valid and the ipl report that is needed for secure boot
|
||||||
|
can be found right behind the ipl parmblock.
|
||||||
|
Reproduction: IPL from CCW devices.
|
||||||
|
Upstream-ID: ee9d606f800741eedeec1dcf1d2ddbfccbc21140
|
||||||
|
Problem-ID: 186938
|
||||||
|
|
||||||
|
Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
|
||||||
|
---
|
||||||
|
include/boot/ipl.h | 1 +
|
||||||
|
zipl/boot/stage3.c | 24 ++++++++++++++++++++----
|
||||||
|
2 files changed, 21 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
--- a/include/boot/ipl.h
|
||||||
|
+++ b/include/boot/ipl.h
|
||||||
|
@@ -18,6 +18,7 @@
|
||||||
|
#define IPL_RB_COMPONENT_FLAG_SIGNED 0x80
|
||||||
|
#define IPL_RB_COMPONENT_FLAG_VERIFIED 0x40
|
||||||
|
|
||||||
|
+#define IPL_MAX_SUPPORTED_VERSION 0
|
||||||
|
#define IPL_PARM_BLOCK_VERSION 0x1
|
||||||
|
|
||||||
|
/* IPL Types */
|
||||||
|
--- a/zipl/boot/stage3.c
|
||||||
|
+++ b/zipl/boot/stage3.c
|
||||||
|
@@ -26,6 +26,7 @@
|
||||||
|
|
||||||
|
static const char *msg_sipl_inval = "Secure boot failure: invalid load address";
|
||||||
|
static const char *msg_sipl_unverified = "Secure boot failure: unverified load address";
|
||||||
|
+static const char *msg_sipl_noparm = "Secure boot failure: unable to load ipl parameter";
|
||||||
|
|
||||||
|
static inline void __noreturn start_kernel(void)
|
||||||
|
{
|
||||||
|
@@ -54,6 +55,18 @@ static inline void __noreturn start_kern
|
||||||
|
while (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
+unsigned int store_ipl_parmblock(struct ipl_pl_hdr *pl_hdr)
|
||||||
|
+{
|
||||||
|
+ int rc;
|
||||||
|
+
|
||||||
|
+ rc = diag308(DIAG308_STORE, pl_hdr);
|
||||||
|
+ if (rc == DIAG308_RC_OK &&
|
||||||
|
+ pl_hdr->version <= IPL_MAX_SUPPORTED_VERSION)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
unsigned int
|
||||||
|
is_verified_address(unsigned long image_addr)
|
||||||
|
{
|
||||||
|
@@ -104,12 +117,15 @@ unsigned int
|
||||||
|
secure_boot_enabled()
|
||||||
|
{
|
||||||
|
struct ipl_pl_hdr *pl_hdr;
|
||||||
|
- unsigned long tmp;
|
||||||
|
+ unsigned int rc;
|
||||||
|
|
||||||
|
- tmp = (unsigned long) S390_lowcore.ipl_parmblock_ptr;
|
||||||
|
- pl_hdr = (struct ipl_pl_hdr *) tmp;
|
||||||
|
+ pl_hdr = (void *)get_zeroed_page();
|
||||||
|
+ if (!pl_hdr || store_ipl_parmblock(pl_hdr))
|
||||||
|
+ panic(ESECUREBOOT, "%s", msg_sipl_noparm);
|
||||||
|
+ rc = !!(pl_hdr->flags & IPL_FLAG_SECURE);
|
||||||
|
+ free_page((unsigned long) pl_hdr);
|
||||||
|
|
||||||
|
- return pl_hdr->flags & IPL_FLAG_SECURE;
|
||||||
|
+ return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
void start(void)
|
@ -0,0 +1,33 @@
|
|||||||
|
Subject: [PATCH] [BZ 186939] zipl: prevent endless loop during secure IPL
|
||||||
|
From: Stefan Haberland <sth@linux.ibm.com>
|
||||||
|
|
||||||
|
Description: zipl: prevent endless loop during secure IPL
|
||||||
|
Symptom: During IPL with secure boot enabled the loader may loop
|
||||||
|
infinitely.
|
||||||
|
Problem: In case secure boot is enabled but no components in the
|
||||||
|
IPL report are found it ends up in an endless loop in
|
||||||
|
the component verification.
|
||||||
|
Solution: To prevent this check if components are found and exit
|
||||||
|
if not.
|
||||||
|
Reproduction: IPL with secure boot enabled.
|
||||||
|
Upstream-ID: d5a88c1e56852881e8b0bb4056ffaa25bea818c5
|
||||||
|
Problem-ID: 186939
|
||||||
|
|
||||||
|
Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
|
||||||
|
---
|
||||||
|
zipl/boot/stage3.c | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
--- a/zipl/boot/stage3.c
|
||||||
|
+++ b/zipl/boot/stage3.c
|
||||||
|
@@ -104,6 +104,10 @@ is_verified_address(unsigned long image_
|
||||||
|
|
||||||
|
rb_hdr = (void *) rb_hdr + rb_hdr->len;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ if (!comps)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
for_each_rb_entry(comp, comps) {
|
||||||
|
if (image_addr == comp->addr &&
|
||||||
|
comp->flags & IPL_RB_COMPONENT_FLAG_SIGNED &&
|
@ -0,0 +1,89 @@
|
|||||||
|
From 1003d8141209fdbd50d02aec2cad4690aec48702 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Guevenc Guelce <guvenc@linux.ibm.com>
|
||||||
|
Date: Wed, 8 Jul 2020 18:31:34 +0200
|
||||||
|
Subject: [PATCH] znetconf: introduce better ways to locate udevadm
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
When udevadm is going to be used, try to locate it
|
||||||
|
in $PATH and if it fails, try to locate it in well-known
|
||||||
|
binary paths.
|
||||||
|
|
||||||
|
Signed-off-by: Guevenc Guelce <guvenc@linux.ibm.com>
|
||||||
|
Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
|
||||||
|
---
|
||||||
|
zconf/znetconf | 42 +++++++++++++++++++++++++++++++++---------
|
||||||
|
1 file changed, 33 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/zconf/znetconf b/zconf/znetconf
|
||||||
|
index ba8dec4..497e97f 100755
|
||||||
|
--- a/zconf/znetconf
|
||||||
|
+++ b/zconf/znetconf
|
||||||
|
@@ -63,14 +63,8 @@ CMD=$(basename $0)
|
||||||
|
LSZNET=/lib/s390-tools/lsznet.raw
|
||||||
|
LSZNET_ARGS=-a
|
||||||
|
LSZNET_CALL="$LSZNET $LSZNET_ARGS"
|
||||||
|
-UDEVSETTLE=/sbin/udevadm
|
||||||
|
-if [ ! -e $UDEVSETTLE ]
|
||||||
|
-then
|
||||||
|
- UDEVSETTLE=/sbin/udevsettle
|
||||||
|
- UDEVSETTLE_CALL="$UDEVSETTLE --timeout=10"
|
||||||
|
-else
|
||||||
|
- UDEVSETTLE_CALL="$UDEVSETTLE settle --timeout=10"
|
||||||
|
-fi
|
||||||
|
+UDEVSETTLE=udevadm
|
||||||
|
+UDEVSETTLE_CALL="$UDEVSETTLE settle --timeout=10"
|
||||||
|
SYSFSDIR=$(cat /proc/mounts|awk '$3=="sysfs"{print $2; exit}')
|
||||||
|
CCWGROUPBUS_DIR=$SYSFSDIR/bus/ccwgroup
|
||||||
|
CCWDEV_DIR=$SYSFSDIR/bus/ccw/devices
|
||||||
|
@@ -261,6 +255,35 @@ function lookup_lan_layer()
|
||||||
|
|
||||||
|
#==============================================================================
|
||||||
|
|
||||||
|
+function prepare_udevsettle_cmd()
|
||||||
|
+{
|
||||||
|
+ # is the command available in $PATH
|
||||||
|
+ if ! [ -x "$(command -v $UDEVSETTLE)" ]
|
||||||
|
+ then
|
||||||
|
+ # check the well known locations.
|
||||||
|
+ if [ -e "/sbin/udevadm" ]
|
||||||
|
+ then
|
||||||
|
+ UDEVSETTLE=/sbin/udevadm
|
||||||
|
+ UDEVSETTLE_CALL="$UDEVSETTLE settle --timeout=10"
|
||||||
|
+ elif [ -e "/usr/bin/udevadm" ]
|
||||||
|
+ then
|
||||||
|
+ UDEVSETTLE=/usr/bin/udevadm
|
||||||
|
+ UDEVSETTLE_CALL="$UDEVSETTLE settle --timeout=10"
|
||||||
|
+ elif [ -e "/sbin/udevsettle" ]
|
||||||
|
+ then
|
||||||
|
+ # Fallback to udevsettle
|
||||||
|
+ UDEVSETTLE=/sbin/udevsettle
|
||||||
|
+ UDEVSETTLE_CALL="$UDEVSETTLE --timeout=10"
|
||||||
|
+ else
|
||||||
|
+ UDEVSETTLE=""
|
||||||
|
+ UDEVSETTLE_CALL=""
|
||||||
|
+ echo "Failed to find any candidate for udevsettle"
|
||||||
|
+ fi
|
||||||
|
+ fi
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+#==============================================================================
|
||||||
|
+
|
||||||
|
function lookup_type_and_lan_or_vswitch_name()
|
||||||
|
{
|
||||||
|
local DEVNO="$1"
|
||||||
|
@@ -506,8 +529,9 @@ function wait_for_net_device()
|
||||||
|
local CMD_FINDNETLINK="find $CCWGROUPBUS_DEVICEDIR/$CCWGROUPDEVNO/ -type l -name net*"
|
||||||
|
local LINKNAME=""
|
||||||
|
|
||||||
|
+ prepare_udevsettle_cmd
|
||||||
|
# polling loop to wait for net device to become available
|
||||||
|
- if [ -e $UDEVSETTLE ]
|
||||||
|
+ if [ "$UDEVSETTLE" != "" ]
|
||||||
|
then
|
||||||
|
$UDEVSETTLE_CALL
|
||||||
|
fi
|
||||||
|
--
|
||||||
|
2.26.2
|
||||||
|
|
@ -1,3 +1,47 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Jul 24 21:17:36 UTC 2020 - Mark Post <mpost@suse.com>
|
||||||
|
|
||||||
|
- The location of the udevadm binary was changed from /sbin/ to /usr/bin
|
||||||
|
a while back. A symbolic link was added for compatibility. In the latest
|
||||||
|
versions, that symbolic link has been removed, requiring changes to scripts
|
||||||
|
that were depending on that.
|
||||||
|
Added the following patches for bsc#1171587
|
||||||
|
* s390-tools-sles15sp2-lsluns-try-harder-to-find-udevadm.patch
|
||||||
|
* s390-tools-sles15sp2-znetconf-introduce-better-ways-to-locate-udevadm.patch
|
||||||
|
*s390-tools-sles15sp2-mon_tools-update-udevadm-location.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jul 23 19:28:25 UTC 2020 - Mark Post <mpost@suse.com>
|
||||||
|
|
||||||
|
- Added s390-tools-sles15sp2-zipl-prevent-endless-loop-during-IPL.patch
|
||||||
|
(bsc#1174309) zipl: prevent endless loop during secure IPL
|
||||||
|
- Added s390-tools-sles15sp2-zipl-check-for-valid-ipl-parmblock-lowcore-pointer.patch
|
||||||
|
(bsc#1174310) zipl: check for valid ipl parmblock lowcore pointer
|
||||||
|
- Added s390-tools-sles15sp2-01-zipl-libc-libc_stop-move-noreturn-to-declaration.patch
|
||||||
|
s390-tools-sles15sp2-02-zipl-stage3-correctly-handle-diag308-response-code.patch
|
||||||
|
(bsc1174311) zipl: Fix KVM IPL without bootindex
|
||||||
|
- Updated cputype and read_values to recognize the new z15 models.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jul 23 19:28:25 UTC 2020 - Mark Post <mpost@suse.com>
|
||||||
|
|
||||||
|
- Added s390-tools-sles15sp2-zipl-prevent-endless-loop-during-IPL.patch
|
||||||
|
(bsc#1174309) zipl: prevent endless loop during secure IPL
|
||||||
|
- Added s390-tools-sles15sp2-zipl-check-for-valid-ipl-parmblock-lowcore-pointer.patch
|
||||||
|
(bsc#1174310) zipl: check for valid ipl parmblock lowcore pointer
|
||||||
|
- Added s390-tools-sles15sp2-01-zipl-libc-libc_stop-move-noreturn-to-declaration.patch
|
||||||
|
s390-tools-sles15sp2-02-zipl-stage3-correctly-handle-diag308-response-code.patch
|
||||||
|
(bsc1174311) zipl: Fix KVM IPL without bootindex
|
||||||
|
- Updated cputype and read_values to recognize the new z15 models.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jun 29 19:45:01 UTC 2020 - Mark Post <mpost@suse.com>
|
||||||
|
|
||||||
|
- Added s390-tools-sles15sp2-vmcp-exit-code.patch (bsc#1173481)
|
||||||
|
Change the vmcp exit code and return 'CP command failed' when both
|
||||||
|
"CP command failed" and "response buffer is too small" error
|
||||||
|
conditions are true.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Apr 7 18:52:02 UTC 2020 - Mark Post <mpost@suse.com>
|
Tue Apr 7 18:52:02 UTC 2020 - Mark Post <mpost@suse.com>
|
||||||
|
|
||||||
|
@ -188,6 +188,14 @@ Patch98: s390-tools-sles15sp2-02-zipl-allow-stand-alone-secure-option-on-
|
|||||||
Patch99: s390-tools-sles15sp2-03-zipl-correct-secure-boot-config-handling.patch
|
Patch99: s390-tools-sles15sp2-03-zipl-correct-secure-boot-config-handling.patch
|
||||||
Patch100: s390-tools-sles15sp2-04-zipl-fix-zipl.conf-man-page-example-for-secure-boot.patch
|
Patch100: s390-tools-sles15sp2-04-zipl-fix-zipl.conf-man-page-example-for-secure-boot.patch
|
||||||
Patch101: s390-tools-sles15sp2-01-cpumf-add-new-deflate-counters-for-z15.patch
|
Patch101: s390-tools-sles15sp2-01-cpumf-add-new-deflate-counters-for-z15.patch
|
||||||
|
Patch102: s390-tools-sles15sp2-vmcp-exit-code.patch
|
||||||
|
Patch103: s390-tools-sles15sp2-zipl-prevent-endless-loop-during-IPL.patch
|
||||||
|
Patch104: s390-tools-sles15sp2-zipl-check-for-valid-ipl-parmblock-lowcore-pointer.patch
|
||||||
|
Patch105: s390-tools-sles15sp2-01-zipl-libc-libc_stop-move-noreturn-to-declaration.patch
|
||||||
|
Patch106: s390-tools-sles15sp2-02-zipl-stage3-correctly-handle-diag308-response-code.patch
|
||||||
|
Patch107: s390-tools-sles15sp2-lsluns-try-harder-to-find-udevadm.patch
|
||||||
|
Patch108: s390-tools-sles15sp2-znetconf-introduce-better-ways-to-locate-udevadm.patch
|
||||||
|
Patch109: s390-tools-sles15sp2-mon_tools-update-udevadm-location.patch
|
||||||
|
|
||||||
# SUSE patches
|
# SUSE patches
|
||||||
Patch900: s390-tools-sles12-zipl_boot_msg.patch
|
Patch900: s390-tools-sles12-zipl_boot_msg.patch
|
||||||
|
Loading…
Reference in New Issue
Block a user