From patchwork Tue Dec 8 12:52:10 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [ANNOUNCE,Call-For-Testing] Release 0.12.0-rc1 of QEMU From: Gerd Hoffmann X-Patchwork-Id: 40634 Message-Id: <4B1E4BFA.4010207@redhat.com> To: "Daniel P. Berrange" Cc: Anthony Liguori , "qemu-devel@nongnu.org" Date: Tue, 08 Dec 2009 13:52:10 +0100 On 12/08/09 11:52, Daniel P. Berrange wrote: > On Tue, Dec 08, 2009 at 11:40:54AM +0100, Gerd Hoffmann wrote: >> "worked" as in "guest actually sees the new device (without reboot)" or >> "worked" as in "qemu didn't abort" ? > > The latter. The guest does not see it, but it at least does not abort. > It is the 'does not abort' behaviour I'm interested in - quite OK with > this returning an error to the monitor client when acpi is disabled. Does the attached patch fix it for you? cheers, Gerd >From c87a20bc8c0347770f55c8267ec10667cd2ba24c Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Tue, 8 Dec 2009 13:50:16 +0100 Subject: [PATCH] fix pci hotplug Signed-off-by: Gerd Hoffmann --- hw/pci-hotplug.c | 17 ++++++++++++++++- 1 files changed, 16 insertions(+), 1 deletions(-) diff --git a/hw/pci-hotplug.c b/hw/pci-hotplug.c index 081d6d1..7e5c51d 100644 --- a/hw/pci-hotplug.c +++ b/hw/pci-hotplug.c @@ -40,7 +40,18 @@ static PCIDevice *qemu_pci_hot_add_nic(Monitor *mon, const char *opts_str) { QemuOpts *opts; - int ret; + PCIBus *bus; + int ret, devfn; + + bus = pci_get_bus_devfn(&devfn, devaddr); + if (!bus) { + monitor_printf(mon, "Invalid PCI device address %s\n", devaddr); + return NULL; + } + if (!((BusState*)bus)->allow_hotplug) { + monitor_printf(mon, "PCI bus doesn't support hotplug\n"); + return NULL; + } opts = qemu_opts_parse(&qemu_net_opts, opts_str ? opts_str : "", NULL); if (!opts) { @@ -179,6 +190,10 @@ static PCIDevice *qemu_pci_hot_add_storage(Monitor *mon, monitor_printf(mon, "Invalid PCI device address %s\n", devaddr); return NULL; } + if (!((BusState*)bus)->allow_hotplug) { + monitor_printf(mon, "PCI bus doesn't support hotplug\n"); + return NULL; + } switch (type) { case IF_SCSI: