提交 3a95e8eb 编写于 作者: M Michael Holzheu 提交者: Martin Schwidefsky

[S390] ipl: Reboot from alternate device does not work when booting from file

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: NMichael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
上级 4abb08c2
...@@ -1705,7 +1705,10 @@ void __init setup_ipl(void) ...@@ -1705,7 +1705,10 @@ void __init setup_ipl(void)
void __init ipl_update_parameters(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; diag308_set_works = 1;
} }
......
...@@ -159,7 +159,8 @@ enum diag308_vm_flags { ...@@ -159,7 +159,8 @@ enum diag308_vm_flags {
}; };
enum diag308_rc { enum diag308_rc {
DIAG308_RC_OK = 1, DIAG308_RC_OK = 0x0001,
DIAG308_RC_NOCONFIG = 0x0102,
}; };
extern int diag308(unsigned long subcode, void *addr); extern int diag308(unsigned long subcode, void *addr);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册