Add a way to manually invoke a fast-reboot rather than setting the NVRAM
flag. The idea is to allow userspace to invoke a fast-reboot using the
optional string argument to the reboot() system call, or using the xmon
zr command so we don't need to leave around a persistent changes on
a system to use the feature.

Signed-off-by: Oliver O'Halloran <ooh...@gmail.com>
---
Companion skiboot patch:
http://lists.ozlabs.org/pipermail/skiboot/2020-February/016420.html
---
 arch/powerpc/include/asm/opal-api.h    | 1 +
 arch/powerpc/platforms/powernv/setup.c | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/arch/powerpc/include/asm/opal-api.h 
b/arch/powerpc/include/asm/opal-api.h
index c1f25a7..1dffa3c 100644
--- a/arch/powerpc/include/asm/opal-api.h
+++ b/arch/powerpc/include/asm/opal-api.h
@@ -1067,6 +1067,7 @@ enum {
        OPAL_REBOOT_PLATFORM_ERROR      = 1,
        OPAL_REBOOT_FULL_IPL            = 2,
        OPAL_REBOOT_MPIPL               = 3,
+       OPAL_REBOOT_FAST                = 4,
 };
 
 /* Argument to OPAL_PCI_TCE_KILL */
diff --git a/arch/powerpc/platforms/powernv/setup.c 
b/arch/powerpc/platforms/powernv/setup.c
index a8fe630..3bc188d 100644
--- a/arch/powerpc/platforms/powernv/setup.c
+++ b/arch/powerpc/platforms/powernv/setup.c
@@ -237,6 +237,8 @@ static void  __noreturn pnv_restart(char *cmd)
                        rc = opal_cec_reboot2(OPAL_REBOOT_MPIPL, NULL);
                else if (strcmp(cmd, "error") == 0)
                        rc = opal_cec_reboot2(OPAL_REBOOT_PLATFORM_ERROR, NULL);
+               else if (strcmp(cmd, "fast") == 0)
+                       rc = opal_cec_reboot2(OPAL_REBOOT_FAST, NULL);
                else
                        rc = OPAL_UNSUPPORTED;
 
-- 
2.9.5

Reply via email to