Re: [PATCH 04/15] powerpc/powernv: opal-kmsg use flush fallback from console code

From: Nicholas Piggin
Date: Mon May 07 2018 - 23:40:31 EST


On Mon, 07 May 2018 20:36:39 +1000
Michael Ellerman <mpe@xxxxxxxxxxxxxx> wrote:

> Nicholas Piggin <npiggin@xxxxxxxxx> writes:
> > On Fri, 04 May 2018 15:16:37 +1000
> > Michael Ellerman <mpe@xxxxxxxxxxxxxx> wrote:
> >> Nicholas Piggin <npiggin@xxxxxxxxx> writes:
> >> > Use the more refined and tested event polling loop from opal_put_chars
> >> > as the fallback console flush in the opal-kmsg path. This loop is used
> >> > by the console driver today, whereas the opal-kmsg fallback is not
> >> > likely to have been used for years.
> >> >
> >> > Use WARN_ONCE rather than a printk when the fallback is invoked to
> >> > prepare for moving the console flush into a common function.
> >>
> >> Do we want to add a WARN in that path? If we're panicking things might
> >> get worse if we WARN (which takes a trap).
> >
> > True, probably a good idea not to... oh there's a printk_once so
> > that'll work nicely.
>
> Cool.
>
> I have this series in a tree so you can send me an incremental diff if
> it's reasonably small.

It's a one liner (also moved location of message back to where it was
originally).

The next patch will clash because it moves this over into opal.c, so
you'd have to fix that by hand.

Thanks,
Nick

---
arch/powerpc/platforms/powernv/opal-kmsg.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/powerpc/platforms/powernv/opal-kmsg.c b/arch/powerpc/platforms/powernv/opal-kmsg.c
index fd2bbf4fd6dc..c610ef3541aa 100644
--- a/arch/powerpc/platforms/powernv/opal-kmsg.c
+++ b/arch/powerpc/platforms/powernv/opal-kmsg.c
@@ -53,12 +53,12 @@ static void force_opal_console_flush(struct kmsg_dumper *dumper,
} else {
__be64 evt;

- WARN_ONCE(1, "opal: OPAL_CONSOLE_FLUSH missing.\n");
/*
* If OPAL_CONSOLE_FLUSH is not implemented in the firmware,
* the console can still be flushed by calling the polling
* function while it has OPAL_EVENT_CONSOLE_OUTPUT events.
*/
+ printk_once(KERN_NOTICE "opal: OPAL_CONSOLE_FLUSH missing.\n");
do {
opal_poll_events(&evt);
} while (be64_to_cpu(evt) & OPAL_EVENT_CONSOLE_OUTPUT);
--
2.17.0