aboutsummaryrefslogtreecommitdiff
path: root/hw/sbe-p9.c
diff options
context:
space:
mode:
authorVasant Hegde <hegdevasant@linux.vnet.ibm.com>2020-06-17 12:46:09 +0530
committerOliver O'Halloran <oohall@gmail.com>2020-06-30 12:07:23 +1000
commit9f5374b46aab4a2980d5bf745d79fa9d7bb609e1 (patch)
tree5f829a103e5bf2d6cc7815ece8b53fb673ab6d3b /hw/sbe-p9.c
parent53e4d7358c8f28f0338cad20ce6aac425b22da4c (diff)
downloadskiboot-9f5374b46aab4a2980d5bf745d79fa9d7bb609e1.zip
skiboot-9f5374b46aab4a2980d5bf745d79fa9d7bb609e1.tar.gz
skiboot-9f5374b46aab4a2980d5bf745d79fa9d7bb609e1.tar.bz2
mpipl: Delay MPIPL registration until OPAL init is complete
If OPAL boot fails after MPIPL init (opal_mpipl_init()) then we call MPIPL boot instead of reboot. BMC is not aware of MPIPL. Hence it may result in continuous MPIPL loop (boot -> crash -> MPIPL -> boot). If OPAL boot fails (before loading kernel) then its better to call reboot. So that BMC can detect `n` number of boot failures (generally n = 3) and stop booting. That way we can avoid continuous loop. This patch moves MPIPL init to the end of init process (just before starting kernel). So that if we fail to boot OPAL we call normal reboot. Also this patch introduces new function to detect MPIPL is enabled or not (is_mpipl_enabled()). And in assert() path we check for this function instead of `dump` DT node. So that it will make sure we will not call MPIPL until opal_mpipl_init is complete. Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
Diffstat (limited to 'hw/sbe-p9.c')
-rw-r--r--hw/sbe-p9.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/hw/sbe-p9.c b/hw/sbe-p9.c
index 18caa0a..24ed91b 100644
--- a/hw/sbe-p9.c
+++ b/hw/sbe-p9.c
@@ -949,7 +949,7 @@ void p9_sbe_terminate(void)
struct proc_chip *chip;
/* Return if MPIPL is not supported */
- if (!dt_find_by_path(opal_node, "dump"))
+ if (!is_mpipl_enabled())
return;
/* Unregister flash. It will request BMC MBOX reset */