diff --git a/cputype b/cputype index 50abf92..7520b58 100644 --- a/cputype +++ b/cputype @@ -60,7 +60,8 @@ case "${machine}" in 2965) echo "${machine} = z13s IBM z13s (single frame)" ;; 3906) echo "${machine} = z14 IBM z14" ;; 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 "Please file a bug report with this output:" >&2 /bin/cat /proc/cpuinfo >&2 diff --git a/read_values.c b/read_values.c index aec3f39..c064df4 100644 --- a/read_values.c +++ b/read_values.c @@ -72,8 +72,10 @@ struct machinetype { { QC_TYPE_FAMILY_LINUXONE, "3906", "3906 = IBM LinuxONE Emperor II" }, { QC_TYPE_FAMILY_IBMZ, "3907", "3907 = z14 ZR1 IBM z14 ZR1" }, { QC_TYPE_FAMILY_LINUXONE, "3907", "3907 = IBM LinuxONE Rockhopper II" }, - { QC_TYPE_FAMILY_IBMZ, "8561", "8561 = z15 IBM z15" }, - { QC_TYPE_FAMILY_LINUXONE, "8561", "8561 = IBM LinuxONE III" }, + { QC_TYPE_FAMILY_IBMZ, "8561", "8561 = z15 T01 IBM z15 T01" }, + { 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; diff --git a/s390-tools-sles15sp2-01-zipl-libc-libc_stop-move-noreturn-to-declaration.patch b/s390-tools-sles15sp2-01-zipl-libc-libc_stop-move-noreturn-to-declaration.patch new file mode 100644 index 0000000..2d4324a --- /dev/null +++ b/s390-tools-sles15sp2-01-zipl-libc-libc_stop-move-noreturn-to-declaration.patch @@ -0,0 +1,72 @@ +Subject: [PATCH] [BZ 186940] zipl/libc: libc_stop move 'noreturn' to declaration +From: Stefan Haberland + +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 + Signed-off-by: Marc Hartmayer + + +Signed-off-by: Stefan Haberland +--- + 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 + +-#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); diff --git a/s390-tools-sles15sp2-02-zipl-stage3-correctly-handle-diag308-response-code.patch b/s390-tools-sles15sp2-02-zipl-stage3-correctly-handle-diag308-response-code.patch new file mode 100644 index 0000000..ed1c4b9 --- /dev/null +++ b/s390-tools-sles15sp2-02-zipl-stage3-correctly-handle-diag308-response-code.patch @@ -0,0 +1,87 @@ +Subject: [PATCH] [BZ 186940] zipl/stage3: correctly handle diag308 response code +From: Stefan Haberland + +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 + Signed-off-by: Stefan Haberland + Reviewed-by: Marc Hartmayer + Reviewed-by: Philipp Rudo + Tested-by: Marc Hartmayer + + +Signed-off-by: Stefan Haberland +--- + 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; diff --git a/s390-tools-sles15sp2-lsluns-try-harder-to-find-udevadm.patch b/s390-tools-sles15sp2-lsluns-try-harder-to-find-udevadm.patch new file mode 100644 index 0000000..5d6bad9 --- /dev/null +++ b/s390-tools-sles15sp2-lsluns-try-harder-to-find-udevadm.patch @@ -0,0 +1,59 @@ +From e679a4002ecea6d8177430d6efde2b3ef2b89d0e Mon Sep 17 00:00:00 2001 +From: Julian Wiedmann +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 +Reviewed-by: Steffen Maier +Reviewed-by: Fedor Loshakov +Signed-off-by: Jan Höppner +--- + 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 + diff --git a/s390-tools-sles15sp2-mon_tools-update-udevadm-location.patch b/s390-tools-sles15sp2-mon_tools-update-udevadm-location.patch new file mode 100644 index 0000000..d7741fd --- /dev/null +++ b/s390-tools-sles15sp2-mon_tools-update-udevadm-location.patch @@ -0,0 +1,64 @@ +From 2215ba672e2f1e69b21b8b852db566b87df7adf7 Mon Sep 17 00:00:00 2001 +From: Gerald Schaefer +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 +Signed-off-by: Jan Höppner +--- + 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 + diff --git a/s390-tools-sles15sp2-vmcp-exit-code.patch b/s390-tools-sles15sp2-vmcp-exit-code.patch new file mode 100644 index 0000000..e24ed8e --- /dev/null +++ b/s390-tools-sles15sp2-vmcp-exit-code.patch @@ -0,0 +1,73 @@ +Subject: [PATCH] [BZ 186342] vmcp: Change sequence of failed exit +From: Thomas Richter + +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 + Signed-off-by: Jan Hoeppner + + +Signed-off-by: Thomas Richter +--- + 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; + } diff --git a/s390-tools-sles15sp2-zipl-check-for-valid-ipl-parmblock-lowcore-pointer.patch b/s390-tools-sles15sp2-zipl-check-for-valid-ipl-parmblock-lowcore-pointer.patch new file mode 100644 index 0000000..6abb67b --- /dev/null +++ b/s390-tools-sles15sp2-zipl-check-for-valid-ipl-parmblock-lowcore-pointer.patch @@ -0,0 +1,81 @@ +Subject: [PATCH] [BZ 186938] zipl: check for valid ipl parmblock lowcore pointer +From: Stefan Haberland + +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 +--- + 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) diff --git a/s390-tools-sles15sp2-zipl-prevent-endless-loop-during-IPL.patch b/s390-tools-sles15sp2-zipl-prevent-endless-loop-during-IPL.patch new file mode 100644 index 0000000..5046ef3 --- /dev/null +++ b/s390-tools-sles15sp2-zipl-prevent-endless-loop-during-IPL.patch @@ -0,0 +1,33 @@ +Subject: [PATCH] [BZ 186939] zipl: prevent endless loop during secure IPL +From: Stefan Haberland + +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 +--- + 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 && diff --git a/s390-tools-sles15sp2-znetconf-introduce-better-ways-to-locate-udevadm.patch b/s390-tools-sles15sp2-znetconf-introduce-better-ways-to-locate-udevadm.patch new file mode 100644 index 0000000..1247c79 --- /dev/null +++ b/s390-tools-sles15sp2-znetconf-introduce-better-ways-to-locate-udevadm.patch @@ -0,0 +1,89 @@ +From 1003d8141209fdbd50d02aec2cad4690aec48702 Mon Sep 17 00:00:00 2001 +From: Guevenc Guelce +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 +Signed-off-by: Jan Höppner +--- + 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 + diff --git a/s390-tools.changes b/s390-tools.changes index 4486cc9..b90f475 100644 --- a/s390-tools.changes +++ b/s390-tools.changes @@ -1,3 +1,47 @@ +------------------------------------------------------------------- +Fri Jul 24 21:17:36 UTC 2020 - Mark Post + +- 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 + +- 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 + +- 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 + +- 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 diff --git a/s390-tools.spec b/s390-tools.spec index 2f24683..ed42ab9 100644 --- a/s390-tools.spec +++ b/s390-tools.spec @@ -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 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 +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 Patch900: s390-tools-sles12-zipl_boot_msg.patch