From 471bbf3788bea90282042a3e1641ba9aab8c9a3d Mon Sep 17 00:00:00 2001 From: Isaku Yamahata Date: Mon, 6 Sep 2010 16:46:18 +0900 Subject: [PATCH] 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 --- hw/acpi_piix4.c | 3 +++ hw/pci.c | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/hw/acpi_piix4.c b/hw/acpi_piix4.c index bfa1d9a..24dfcf2 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 754ffb3..bb9ddea 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); -- 2.7.4