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

[Xen-devel] [PATCH, RFC]: qemu: hang-free/error-tolerant PCI hot-plug protocol



Hi,

The interface for PCI hotplug is flexible enough to shoot ones-self in
the foot. It is possible to try to insert a PCI device in to a slot
already occupied by a qemu emulated device (NIC, PIIX, ISA-bridge, etc.)
In this case qemu (wisely) refuses to do the hotplug. Since there is no
way for a toolstack to query qemu's pci device layout there is no way to
check for this ahead of time. In this case the toolstack must wait for
device-model state to change to pci-inserted which never happens.

I propose that when qemu decides not to hot-plug a device that it raise
the "pci-inserted" status anyway. The tools must then check the
"parameter" key in xenbus for a non-error string. In other words:

send_command("pci-ins")
wait_for_device_model("pci-inserted")
if parameter[0-2] == "0x" {
        /* success */
}else{
        /* fail */
}

Unless there is some other way of dealing with this that I am missing?

Thanks

diff --git a/hw/piix4acpi.c b/hw/piix4acpi.c
index 1efa77d..4d59ad4 100644
--- a/hw/piix4acpi.c
+++ b/hw/piix4acpi.c
@@ -620,6 +620,7 @@ void acpi_php_add(int devfn)
         if ( strlen(ret_str) > 0 )
             xenstore_record_dm("parameter", ret_str);
 
+        xenstore_record_dm_state("pci-inserted");
         return;
     }
 



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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