aboutsummaryrefslogtreecommitdiff
path: root/arch/powerpc/platforms/powernv/opal-kmsg.c
diff options
context:
space:
mode:
authorRussell Currey <ruscur@russell.cc>2016-01-13 12:04:32 +1100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-03-16 08:43:01 -0700
commit6175c8fd13cd61d7a17868aed1c332e6e7a855ea (patch)
treed085b12ea838b98855d1073f6777c789b76961a8 /arch/powerpc/platforms/powernv/opal-kmsg.c
parentb2cd42d38981cd6d43cf3332017c768a212fb65c (diff)
powerpc/powernv: Fix OPAL_CONSOLE_FLUSH prototype and usages
commit c88c5d43732a0356f99e5e4d1ad62ab1ea516b81 upstream. The recently added OPAL API call, OPAL_CONSOLE_FLUSH, originally took no parameters and returned nothing. The call was updated to accept the terminal number to flush, and returned various values depending on the state of the output buffer. The prototype has been updated and its usage in the OPAL kmsg dumper has been modified to support its new behaviour as an incremental flush. Signed-off-by: Russell Currey <ruscur@russell.cc> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch/powerpc/platforms/powernv/opal-kmsg.c')
-rw-r--r--arch/powerpc/platforms/powernv/opal-kmsg.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/powerpc/platforms/powernv/opal-kmsg.c b/arch/powerpc/platforms/powernv/opal-kmsg.c
index bd3b2ee1ba1d..6f1214d4de92 100644
--- a/arch/powerpc/platforms/powernv/opal-kmsg.c
+++ b/arch/powerpc/platforms/powernv/opal-kmsg.c
@@ -27,6 +27,7 @@ static void force_opal_console_flush(struct kmsg_dumper *dumper,
enum kmsg_dump_reason reason)
{
int i;
+ int64_t ret;
/*
* Outside of a panic context the pollers will continue to run,
@@ -36,7 +37,13 @@ static void force_opal_console_flush(struct kmsg_dumper *dumper,
return;
if (opal_check_token(OPAL_CONSOLE_FLUSH)) {
- opal_console_flush();
+ ret = opal_console_flush(0);
+
+ if (ret == OPAL_UNSUPPORTED || ret == OPAL_PARAMETER)
+ return;
+
+ /* Incrementally flush until there's nothing left */
+ while (opal_console_flush(0) != OPAL_SUCCESS);
} else {
/*
* If OPAL_CONSOLE_FLUSH is not implemented in the firmware,