[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [XTF 3/4] Enabled serial writing for hvm guests



> On 16. Apr 2020, at 12:32, Andrew Cooper <andrew.cooper3@xxxxxxxxxx> wrote:
> 
> CAUTION: This email originated from outside of the organization. Do not click 
> links or open attachments unless you can confirm the sender and know the 
> content is safe.
> 
> 
> 
> On 16/04/2020 10:41, Pawel Wieczorkiewicz wrote:
>> From: Paul Semel <phentex@xxxxxxxxx>
>> 
>> setup.c: PV console writing is not working in Xen 4.2 for hvm
>> guests,
> 
> What is not working about it?
> 

Honestly I am little short on details here, I would have to ask Paul or refresh 
my memory.

>> so we make xtf write to COM1 serial port to get its output
>> 
>> Signed-off-by: Paul Semel <phentex@xxxxxxxxx>
>> Signed-off-by: Pawel Wieczorkiewicz <wipawel@xxxxxxxxx>
>> ---
>> arch/x86/setup.c | 14 ++++++++++++++
>> 1 file changed, 14 insertions(+)
>> 
>> diff --git a/arch/x86/setup.c b/arch/x86/setup.c
>> index 3c84e96..f6fa4df 100644
>> --- a/arch/x86/setup.c
>> +++ b/arch/x86/setup.c
>> @@ -238,6 +238,13 @@ static void qemu_console_write(const char *buf, size_t 
>> len)
>>                  : "d" (0x12));
>> }
>> 
>> +static void com1_write(const char *buf, size_t len)
>> +{
>> +    asm volatile("rep; outsb"
>> +                 : "+S" (buf), "+c" (len)
>> +                 : "d" (0x3f8));
> 
> Despite being 0x3f8, this really isn't uart-compatible COM1.  I presume
> it only works because Qemu doesn't have any real THR delays in its
> emulation.
> 

That can be. Nevertheless, it works for me[tm].

>> +}
>> +
>> static void xen_console_write(const char *buf, size_t len)
>> {
>>     hypercall_console_write(buf, len);
>> @@ -246,7 +253,14 @@ static void xen_console_write(const char *buf, size_t 
>> len)
>> void arch_setup(void)
>> {
>>     if ( IS_DEFINED(CONFIG_HVM) && !pvh_start_info )
>> +    {
>>         register_console_callback(qemu_console_write);
>> +    }
>> +
>> +    if ( IS_DEFINED(CONFIG_HVM) )
>> +    {
>> +        register_console_callback(com1_write);
> 
> This wires up 0x3f8 even for PVH guests, which I'm guessing isn't
> intentional?  This should be part of the previous if(), but does beg the
> question what is wrong with the existing qemu console?
> 

It turns out that both PVH and HVM guests are PVH ABI compatible,
but PVH does not need qemu console. As per:

01e16ceb arch/x86/hvm/head.S      (Andrew Cooper        2018-01-26 16:39:15 
+0000 36) /* All HVM XTF guests are compatible with the PVH ABI. */

In order to get serial console via qemu working, I always register com1
handler for both HVM and PVH. Register qemu console only for HVM guests.

> ~Andrew

I use the com1 to make qemu write console output to a file via: 
serial=“file:/tmp/…”

Best Regards,
Pawel Wieczorkiewicz
wipawel@xxxxxxxxxx



Amazon Development Center Germany GmbH
Krausenstr. 38
10117 Berlin
Geschaeftsfuehrung: Christian Schlaeger, Jonathan Weiss
Eingetragen am Amtsgericht Charlottenburg unter HRB 149173 B
Sitz: Berlin
Ust-ID: DE 289 237 879



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.