aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2020-11-23 17:04:10 +0000
committerPeter Maydell <peter.maydell@linaro.org>2020-11-23 17:04:10 +0000
commitfb764373eaf7f65fd9e85377736f83aae09817b2 (patch)
tree058a41292419d745e41d129d7264a16039faa31f
parent272fa7491ff782588cc9cc1449fe8ca522dd4cfd (diff)
parent7a3d37a3f2335e18539e821d0c72abe0b22480bd (diff)
Merge remote-tracking branch 'remotes/huth-gitlab/tags/pull-request-2020-11-23' into staging
* Two reboot fixes for the s390-ccw bios # gpg: Signature made Mon 23 Nov 2020 10:03:17 GMT # gpg: using RSA key 27B88847EEE0250118F3EAB92ED9D774FE702DB5 # gpg: issuer "thuth@redhat.com" # gpg: Good signature from "Thomas Huth <th.huth@gmx.de>" [full] # gpg: aka "Thomas Huth <thuth@redhat.com>" [full] # gpg: aka "Thomas Huth <huth@tuxfamily.org>" [full] # gpg: aka "Thomas Huth <th.huth@posteo.de>" [unknown] # Primary key fingerprint: 27B8 8847 EEE0 2501 18F3 EAB9 2ED9 D774 FE70 2DB5 * remotes/huth-gitlab/tags/pull-request-2020-11-23: pc-bios/s390: Update the s390-ccw bios binaries pc-bios: s390x: Clear out leftover S390EP string pc-bios: s390x: Ensure Read IPL memory is clean Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r--pc-bios/s390-ccw.imgbin46704 -> 42608 bytes
-rw-r--r--pc-bios/s390-ccw/dasd-ipl.c3
-rw-r--r--pc-bios/s390-ccw/jump2ipl.c2
-rw-r--r--pc-bios/s390-ccw/main.c6
-rw-r--r--pc-bios/s390-ccw/s390-arch.h3
-rw-r--r--pc-bios/s390-netboot.imgbin71328 -> 67232 bytes
6 files changed, 13 insertions, 1 deletions
diff --git a/pc-bios/s390-ccw.img b/pc-bios/s390-ccw.img
index 4e4b3207c4..5aaeac9f79 100644
--- a/pc-bios/s390-ccw.img
+++ b/pc-bios/s390-ccw.img
Binary files differ
diff --git a/pc-bios/s390-ccw/dasd-ipl.c b/pc-bios/s390-ccw/dasd-ipl.c
index 0fc879bb8e..71cbae2f16 100644
--- a/pc-bios/s390-ccw/dasd-ipl.c
+++ b/pc-bios/s390-ccw/dasd-ipl.c
@@ -100,6 +100,9 @@ static void make_readipl(void)
{
Ccw0 *ccwIplRead = (Ccw0 *)0x00;
+ /* Clear out any existing data */
+ memset(ccwIplRead, 0, sizeof(Ccw0));
+
/* Create Read IPL ccw at address 0 */
ccwIplRead->cmd_code = CCW_CMD_READ_IPL;
ccwIplRead->cda = 0x00; /* Read into address 0x00 in main memory */
diff --git a/pc-bios/s390-ccw/jump2ipl.c b/pc-bios/s390-ccw/jump2ipl.c
index fbae45b03c..b9c70d64a5 100644
--- a/pc-bios/s390-ccw/jump2ipl.c
+++ b/pc-bios/s390-ccw/jump2ipl.c
@@ -78,7 +78,7 @@ void jump_to_low_kernel(void)
* kernel start address (when jumping to the PSW-at-zero address instead,
* the kernel startup code fails when we booted from a network device).
*/
- if (!memcmp((char *)0x10008, "S390EP", 6)) {
+ if (!memcmp((char *)S390EP, "S390EP", 6)) {
jump_to_IPL_code(KERN_IMAGE_START);
}
diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c
index fc4bfaa455..5d2b7ba94d 100644
--- a/pc-bios/s390-ccw/main.c
+++ b/pc-bios/s390-ccw/main.c
@@ -178,6 +178,12 @@ static void boot_setup(void)
memcpy(lpmsg + 10, loadparm_str, 8);
sclp_print(lpmsg);
+ /*
+ * Clear out any potential S390EP magic (see jump_to_low_kernel()),
+ * so we don't taint our decision-making process during a reboot.
+ */
+ memset((char *)S390EP, 0, 6);
+
have_iplb = store_iplb(&iplb);
}
diff --git a/pc-bios/s390-ccw/s390-arch.h b/pc-bios/s390-ccw/s390-arch.h
index 6da44d4436..a741488aaa 100644
--- a/pc-bios/s390-ccw/s390-arch.h
+++ b/pc-bios/s390-ccw/s390-arch.h
@@ -95,6 +95,9 @@ typedef struct LowCore {
extern LowCore *lowcore;
+/* Location of "S390EP" in a Linux binary (see arch/s390/boot/head.S) */
+#define S390EP 0x10008
+
static inline void set_prefix(uint32_t address)
{
asm volatile("spx %0" : : "m" (address) : "memory");
diff --git a/pc-bios/s390-netboot.img b/pc-bios/s390-netboot.img
index 3532f70f6f..120bd40ca9 100644
--- a/pc-bios/s390-netboot.img
+++ b/pc-bios/s390-netboot.img
Binary files differ