Suravee Suthikulanit
2013-Aug-06 17:35 UTC
x86/AMD: Nested VM stuck when probing ATA ports
Hi All,
I have run into another issue withnested VM on AMD systemwhere theL2 Linux
guest stuck
waiting while booting inthe async_synchronize_full() of init/main.c.
static int __ref kernel_init(void *unused)
{
kernel_init_freeable();
/* need to finish all async __init code before freeing the memory */
async_synchronize_full(); <-- INHERE
free_initmem();
mark_rodata_ro();
system_state = SYSTEM_RUNNING;
When Iboot the L2 Linux guest with "initcall_debug"opion and look
through the
boot debugmessage, I notice thatthe initcall to "async_port_probe()"
neverreturn.
This function isasynchrounous 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,theasync_port_probeis schedule twice since there are two ports, and none
has returned.
When tracing this function call, bothcalls stuckin the
async_port_probe()-> ata_port_probe()->ata_port_wait_eh()
I have also attached the L2guest serial consoleoutput.
Also,when run xentrace on L0,I can see the trace going thougha series of
VMENTRY/EXIT
for handling timer interrupt for L2. So, I don''t think theL2
guestcrashes.
At this point, I am not sure why the probe fail here and might need help
further debuggingthe issue.
Thank you,
Suravee
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel