From: Isaku Yamahata Date: Mon, 6 Sep 2010 07:46:18 +0000 (+0900) Subject: pci: call hotplug callback even when not hotplug case for later use. X-Git-Tag: v0.14.0-rc0~500^2^2~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5beb8ad503c88a76f2b8106c3b74b4ce485a60e1;p=thirdparty%2Fqemu.git pci: call hotplug callback even when not hotplug case for later use. call hotplug callback even when not hotplug case for later use. And move hotplug check into hotplug callback. PCIE slot needs this for card presence detection. Signed-off-by: Isaku Yamahata Signed-off-by: Michael S. Tsirkin --- diff --git a/hw/acpi_piix4.c b/hw/acpi_piix4.c index bfa1d9a1aed..24dfcf2039d 100644 --- a/hw/acpi_piix4.c +++ b/hw/acpi_piix4.c @@ -611,6 +611,9 @@ static int piix4_device_hotplug(DeviceState *qdev, PCIDevice *dev, int state) PIIX4PMState *s = DO_UPCAST(PIIX4PMState, dev, DO_UPCAST(PCIDevice, qdev, qdev)); + if (!dev->qdev.hotplugged) + return 0; + s->pci0_status.up = 0; s->pci0_status.down = 0; if (state) { diff --git a/hw/pci.c b/hw/pci.c index 754ffb3c3dd..bb9ddea7331 100644 --- a/hw/pci.c +++ b/hw/pci.c @@ -1514,7 +1514,8 @@ static int pci_qdev_init(DeviceState *qdev, DeviceInfo *base) pci_dev->romfile = qemu_strdup(info->romfile); pci_add_option_rom(pci_dev); - if (qdev->hotplugged) { + if (bus->hotplug) { + /* lower layer must check qdev->hotplugged */ rc = bus->hotplug(bus->hotplug_qdev, pci_dev, 1); if (rc != 0) { int r = pci_unregister_device(&pci_dev->qdev);