diff options
author | Nathan Lynch <nathanl@linux.ibm.com> | 2021-05-14 16:44:22 -0500 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2021-05-23 20:51:36 +1000 |
commit | 027f55e87c3094270a3223f7331d033fe15a2b3f (patch) | |
tree | 47edc7a5436d55ec6e70c78f3f6d41ea65b6d8db /drivers/tty/hvc/hvc_vio.c | |
parent | 2cec178e35baf57d307c0982fd2e53055bd1e9bb (diff) |
tty: hvc: udbg_hvc: retry putc on -EAGAIN
hvterm_raw_put_chars() calls hvc_put_chars(), which may return -EAGAIN
when the underlying hcall returns a "busy" status, but udbg_hvc_putc()
doesn't handle this. When using xmon on a PowerVM guest, this can
result in incomplete or garbled output when printing relatively large
amounts of data quickly, such as when dumping the kernel log buffer.
Call again on -EAGAIN.
Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20210514214422.3019105-1-nathanl@linux.ibm.com
Diffstat (limited to 'drivers/tty/hvc/hvc_vio.c')
-rw-r--r-- | drivers/tty/hvc/hvc_vio.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/tty/hvc/hvc_vio.c b/drivers/tty/hvc/hvc_vio.c index 798f27f40cc2..72b11aa7e0a6 100644 --- a/drivers/tty/hvc/hvc_vio.c +++ b/drivers/tty/hvc/hvc_vio.c @@ -249,7 +249,7 @@ static void udbg_hvc_putc(char c) count = hvterm_hvsi_put_chars(0, &c, 1); break; } - } while(count == 0); + } while (count == 0 || count == -EAGAIN); } static int udbg_hvc_getc_poll(void) |