Re: [Xen-devel] [PATCH 1/2] hvc_xen: add earlycon support

From: Stefano Stabellini
Date: Thu Feb 25 2016 - 07:01:51 EST


On Wed, 24 Feb 2016, Andrew Cooper wrote:
> 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.

I'll take the opportunity to make that change as well