Re: [Xen-devel] [PATCH 1/2] hvc_xen: add earlycon support
From: Andrew Cooper
Date: Wed Feb 24 2016 - 12:22:41 EST
On 24/02/16 17:18, Konrad Rzeszutek Wilk wrote:
>> I could do the same here by dropping the if (!xen_pv_domain()) check
>> above, but then if somebody specifies earlyprintk=xenboot on a non-Xen
>> environment, I expect Linux would crash.
> Nah, you made it "Work" with:
> commit eb5ef07151ba3c3cb4bcef0c8f146ff1115eaa55
> Author: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
> Date: Fri Jan 27 18:31:36 2012 +0000
>
> hvc_xen: support PV on HVM consoles
>
> But this patch:
>
> commit 04b772d2b819f0dda2163e3193fa7cd447a6245c
>
> xen/hvc: If we use xen_raw_printk let it also work on HVM guests.
>
> The xen_raw_printk works great for debugging purposes. We use
> for PV guests and we can also use it for HVM guests.
>
> However, for HVM guests we have a fallback of using the 0xe9
> port in case the hypervisor does not support an HVM guest of
> using the console_io hypercall. As such lets use 0xe9 during
> early bootup, and once the hyper-page is setup and if the
> console_io hypercall is supported - use that. Otherwise we
> will fallback to using the 0xe9 after early bootup.
>
> We also alter the return value for dom0_write_console to return
> an error value instead of zero. The HVC API has been supporting
> returning error values for quite some time.
>
> P.S.
> To use (and to see the output in the Xen ring buffer) one has to build
> the hypervisor with 'debug=y'.
>
> Should make it possible for HVM guests to actually work with HVM x86 guests
> if tweaked.
/me looks
+outb_print:
+ for (i = 0; i < len; i++)
+ outb(str[i], 0xe9);
+#endif
You already have the length to hand. Use outsb instead, for
substantially fewer vmexits.
~Andrew