diff options
author | Jan Beulich <jbeulich@suse.com> | 2021-09-30 14:17:41 +0200 |
---|---|---|
committer | Juergen Gross <jgross@suse.com> | 2021-10-05 08:36:00 +0200 |
commit | adf330a7cd64a8bb959dc48a9c282285c1d5b4d5 (patch) | |
tree | 5388e0c7393cba01e0c544dcb5cc75bbe35642b8 | |
parent | cae7d81a3730dfe08623f8c1083230c8d0987639 (diff) | |
download | linux-adf330a7cd64a8bb959dc48a9c282285c1d5b4d5.tar.bz2 |
xen/x86: make "earlyprintk=xen" work better for PVH Dom0
The xen_hvm_early_write() path better wouldn't be taken in this case;
while port 0xE9 can be used, the hypercall path is quite a bit more
efficient. Put that first, as it may also work for DomU-s (see also
xen_raw_console_write()).
While there also bail from the function when the first
domU_write_console() failed - later ones aren't going to succeed.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Link: https://lore.kernel.org/r/4fd89dcb-cfc5-c740-2e94-bb271e432d3e@suse.com
Signed-off-by: Juergen Gross <jgross@suse.com>
-rw-r--r-- | drivers/tty/hvc/hvc_xen.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/tty/hvc/hvc_xen.c b/drivers/tty/hvc/hvc_xen.c index 92c9a476defc..ee7ea8d762fa 100644 --- a/drivers/tty/hvc/hvc_xen.c +++ b/drivers/tty/hvc/hvc_xen.c @@ -621,17 +621,16 @@ static void xenboot_write_console(struct console *console, const char *string, unsigned int linelen, off = 0; const char *pos; + if (dom0_write_console(0, string, len) >= 0) + return; + if (!xen_pv_domain()) { xen_hvm_early_write(0, string, len); return; } - dom0_write_console(0, string, len); - - if (xen_initial_domain()) + if (domU_write_console(0, "(early) ", 8) < 0) return; - - domU_write_console(0, "(early) ", 8); while (off < len && NULL != (pos = strchr(string+off, '\n'))) { linelen = pos-string+off; if (off + linelen > len) |