Let's look at the Reset PSW first instead of the contents of memory.
It might be leftover from an earlier system boot when processing
a chreipl.
Signed-off-by: Eric Farman <farman@linux.ibm.com>
---
pc-bios/s390-ccw/jump2ipl.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/pc-bios/s390-ccw/jump2ipl.c b/pc-bios/s390-ccw/jump2ipl.c
index fbae45b03c..67b4afb6a0 100644
--- a/pc-bios/s390-ccw/jump2ipl.c
+++ b/pc-bios/s390-ccw/jump2ipl.c
@@ -72,16 +72,6 @@ void jump_to_IPL_code(uint64_t address)
void jump_to_low_kernel(void)
{
- /*
- * If it looks like a Linux binary, i.e. there is the "S390EP" magic from
- * arch/s390/kernel/head.S here, then let's jump to the well-known Linux
- * 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)) {
- jump_to_IPL_code(KERN_IMAGE_START);
- }
-
/* Trying to get PSW at zero address */
if (*((uint64_t *)0) & RESET_PSW_MASK) {
/*
@@ -92,6 +82,16 @@ void jump_to_low_kernel(void)
jump_to_IPL_code(0);
}
+ /*
+ * If it looks like a Linux binary, i.e. there is the "S390EP" magic from
+ * arch/s390/kernel/head.S here, then let's jump to the well-known Linux
+ * 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)) {
+ jump_to_IPL_code(KERN_IMAGE_START);
+ }