[S390] ipl: Reboot from alternate device does not work when booting from file
authorMichael Holzheu <holzheu@linux.vnet.ibm.com>
Fri, 1 Aug 2008 14:39:10 +0000 (16:39 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Fri, 1 Aug 2008 14:39:30 +0000 (16:39 +0200)
During startup we check if diag308 works using diag 308 subcode 6,
which stores the actual ipl information. This fails with rc = 0x102, if
the system has been ipled from the HMC using load from CD or load from file.
In the case of rc = 0x102 we have to assume that diag 308 is working,
since it still can be used to ipl from an alternative device.

Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/ipl.c
include/asm-s390/ipl.h

index 54b2779..2dcf590 100644 (file)
@@ -1705,7 +1705,10 @@ void __init setup_ipl(void)
 
 void __init ipl_update_parameters(void)
 {
-       if (diag308(DIAG308_STORE, &ipl_block) == DIAG308_RC_OK)
+       int rc;
+
+       rc = diag308(DIAG308_STORE, &ipl_block);
+       if ((rc == DIAG308_RC_OK) || (rc == DIAG308_RC_NOCONFIG))
                diag308_set_works = 1;
 }
 
index eaca6df..1171e6d 100644 (file)
@@ -159,7 +159,8 @@ enum diag308_vm_flags {
 };
 
 enum diag308_rc {
-       DIAG308_RC_OK   = 1,
+       DIAG308_RC_OK           = 0x0001,
+       DIAG308_RC_NOCONFIG     = 0x0102,
 };
 
 extern int diag308(unsigned long subcode, void *addr);