From 8256da311027176dd22885205f16869f55b79f3b Mon Sep 17 00:00:00 2001 From: Vasant Hegde Date: Tue, 24 Nov 2020 12:46:21 +0530 Subject: core/platform: Fallback to full_reboot if fast-reboot fails MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If fast reboot fails then we return to Linux with OPAL_SUCCESS. Current Linux code thinks that request succedded and enters infinite loop (see Linux pnv_restart() code). This patch fixes above issue by return OPAL_UNSUPPORTED if fast reboot fails. Alternatively we can directly call full_reboot() itself. But I think it makes sense to go back to Linux and report the failure. And Linux falls back to normal reboot request. Fixes: 10bbcd07 ("core/platform: Add an explicit fast-reboot type") Cc: Oliver O'Halloran Cc: Michael Ellerman Signed-off-by: Vasant Hegde Acked-by: Michael Ellerman Reviewed-by: Dan HorĂ¡k Signed-off-by: Vasant Hegde --- core/platform.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'core') diff --git a/core/platform.c b/core/platform.c index 8f4a3b8..320fdea 100644 --- a/core/platform.c +++ b/core/platform.c @@ -124,7 +124,8 @@ static int64_t opal_cec_reboot2(uint32_t reboot_type, char *diag) case OPAL_REBOOT_FAST: prlog(PR_NOTICE, "Reboot: Fast reboot requested by OS\n"); fast_reboot(); - break; + prlog(PR_NOTICE, "Reboot: Fast reboot failed\n"); + return OPAL_UNSUPPORTED; default: prlog(PR_NOTICE, "OPAL: Unsupported reboot request %d\n", reboot_type); return OPAL_UNSUPPORTED; -- cgit v1.1