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

[Xen-devel] x86/AMD: Nested VM stuck when probing ATA ports

Hi All,

I have run into another issue with nested VM on AMD system where the L2 Linux guest stuck 
waiting while booting in the async_synchronize_full() of init/main.c.

static int __ref kernel_init(void *unused)
        /* need to finish all async __init code before freeing the memory */
        async_synchronize_full();    <-- IN HERE
        system_state = SYSTEM_RUNNING;

When I boot the L2 Linux guest with "initcall_debug" opion and look through the
boot debug message, I notice that the initcall to "async_port_probe()" never return.
This function is asynchrounous scheduled as part of ATA host initialization 
(see driver/ata/libata-core.c: ata_host_register()).

	/* perform each probe asynchronously */
	for (i = 0; i < host->n_ports; i++) {
		struct ata_port *ap = host->ports[i];
		async_schedule(async_port_probe, ap);

Here, the async_port_probe is schedule twice since there are two ports, and none has returned.
When tracing this function call, both calls stuck in the 

    async_port_probe()-> ata_port_probe()->ata_port_wait_eh()

I have also attached the L2 guest serial console output.

Also, when run xentrace on L0, I can see the trace going though a series of VMENTRY/EXIT
for handling timer interrupt for L2. So, I don't think the L2 guest crashes.

At this point, I am not sure why the probe fail here and might need help further debugging the issue.

Thank you,


Attachment: L2-dmesg.txt
Description: L2-dmesg.txt

Xen-devel mailing list



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