aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVasant Hegde <hegdevasant@linux.vnet.ibm.com>2019-07-12 16:47:55 +0530
committerOliver O'Halloran <oohall@gmail.com>2019-08-15 17:54:02 +1000
commit4a669d0f49c43880aefd752a8b223eb0c3829864 (patch)
tree91c4c89a68dcaca08edfea7aa494ff3ecfb01916
parentaa694ea08c0d6350455400e69d266f1dada062c1 (diff)
downloadskiboot-4a669d0f49c43880aefd752a8b223eb0c3829864.zip
skiboot-4a669d0f49c43880aefd752a8b223eb0c3829864.tar.gz
skiboot-4a669d0f49c43880aefd752a8b223eb0c3829864.tar.bz2
platform: Introduce new reboot type
Enhance reboot2 call to support MPIPL. Payload will call this interface to initiate MPIPL. Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> [oliver: rebased] Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
-rw-r--r--core/platform.c6
-rw-r--r--doc/opal-api/opal-cec-reboot-6-116.rst7
-rw-r--r--include/opal-api.h1
3 files changed, 14 insertions, 0 deletions
diff --git a/core/platform.c b/core/platform.c
index 7220c6c..307fe67 100644
--- a/core/platform.c
+++ b/core/platform.c
@@ -9,6 +9,7 @@
* Copyright 2013-2019 IBM Corp.
*/
+#include <stdlib.h>
#include <skiboot.h>
#include <opal.h>
#include <console.h>
@@ -104,6 +105,11 @@ static int64_t opal_cec_reboot2(uint32_t reboot_type, char *diag)
case OPAL_REBOOT_FULL_IPL:
disable_fast_reboot("full IPL reboot requested");
return opal_cec_reboot();
+ case OPAL_REBOOT_MPIPL:
+ prlog(PR_NOTICE, "Reboot: OS reported error. Performing MPIPL\n");
+ console_complete_flush();
+ _abort("Reboot: OS reported error. Performing MPIPL\n");
+ break;
default:
prlog(PR_NOTICE, "OPAL: Unsupported reboot request %d\n", reboot_type);
return OPAL_UNSUPPORTED;
diff --git a/doc/opal-api/opal-cec-reboot-6-116.rst b/doc/opal-api/opal-cec-reboot-6-116.rst
index ba31e7a..9a5c794 100644
--- a/doc/opal-api/opal-cec-reboot-6-116.rst
+++ b/doc/opal-api/opal-cec-reboot-6-116.rst
@@ -127,6 +127,13 @@ OPAL_REBOOT_FULL_IPL = 2
On platforms that don't support fast reboot, this is equivalent to a
normal reboot.
+OPAL_REBOOT_MPIPL = 3
+ Request for MPIPL reboot. Firmware will reboot the system and collect
+ dump.
+
+ On platforms that don't support MPIPL, this is equivalent to a
+ normal assert.
+
Unsupported Reboot type
For unsupported reboot type, this function will return with
OPAL_UNSUPPORTED and no reboot will be triggered.
diff --git a/include/opal-api.h b/include/opal-api.h
index 0134ee1..1a1f380 100644
--- a/include/opal-api.h
+++ b/include/opal-api.h
@@ -1123,6 +1123,7 @@ enum {
OPAL_REBOOT_NORMAL = 0,
OPAL_REBOOT_PLATFORM_ERROR,
OPAL_REBOOT_FULL_IPL,
+ OPAL_REBOOT_MPIPL,
};
/* Argument to OPAL_PCI_TCE_KILL */