[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH v1 4/7] pci/pcie: route unplug via the hotplug handler
From: |
David Hildenbrand |
Subject: |
[Qemu-ppc] [PATCH v1 4/7] pci/pcie: route unplug via the hotplug handler |
Date: |
Wed, 24 Oct 2018 12:19:27 +0200 |
Preparation for multi-stage hotplug handlers.
Signed-off-by: David Hildenbrand <address@hidden>
---
hw/pci/pcie.c | 10 +++++++++-
hw/pci/pcie_port.c | 1 +
include/hw/pci/pcie.h | 2 ++
3 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c
index 02a7bf3af5..744727dc0b 100644
--- a/hw/pci/pcie.c
+++ b/hw/pci/pcie.c
@@ -364,11 +364,19 @@ void pcie_cap_slot_hotplug_cb(HotplugHandler
*hotplug_dev, DeviceState *dev,
}
}
-static void pcie_unplug_device(PCIBus *bus, PCIDevice *dev, void *opaque)
+void pcie_cap_slot_hot_unplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev,
+ Error **errp)
{
object_unparent(OBJECT(dev));
}
+static void pcie_unplug_device(PCIBus *bus, PCIDevice *dev, void *opaque)
+{
+ HotplugHandler *hotplug_ctrl = qdev_get_hotplug_handler(DEVICE(dev));
+
+ hotplug_handler_unplug(hotplug_ctrl, DEVICE(dev), &error_abort);
+}
+
void pcie_cap_slot_hot_unplug_request_cb(HotplugHandler *hotplug_dev,
DeviceState *dev, Error **errp)
{
diff --git a/hw/pci/pcie_port.c b/hw/pci/pcie_port.c
index 13fe6c6945..6e993da603 100644
--- a/hw/pci/pcie_port.c
+++ b/hw/pci/pcie_port.c
@@ -156,6 +156,7 @@ static void pcie_slot_class_init(ObjectClass *oc, void
*data)
dc->props = pcie_slot_props;
hc->pre_plug = pcie_cap_slot_pre_plug_cb;
hc->plug = pcie_cap_slot_hotplug_cb;
+ hc->unplug = pcie_cap_slot_hot_unplug_cb;
hc->unplug_request = pcie_cap_slot_hot_unplug_request_cb;
}
diff --git a/include/hw/pci/pcie.h b/include/hw/pci/pcie.h
index 001d230d7d..b6f05a0e43 100644
--- a/include/hw/pci/pcie.h
+++ b/include/hw/pci/pcie.h
@@ -135,6 +135,8 @@ void pcie_cap_slot_pre_plug_cb(HotplugHandler *hotplug_dev,
DeviceState *dev,
Error **errp);
void pcie_cap_slot_hotplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev,
Error **errp);
+void pcie_cap_slot_hot_unplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev,
+ Error **errp);
void pcie_cap_slot_hot_unplug_request_cb(HotplugHandler *hotplug_dev,
DeviceState *dev, Error **errp);
#endif /* QEMU_PCIE_H */
--
2.17.2
- [Qemu-ppc] [PATCH v1 0/7] pci: hotplug handler reworks, David Hildenbrand, 2018/10/24
- [Qemu-ppc] [PATCH v1 1/7] pcihp: perform check for bus capability in pre_plug handler, David Hildenbrand, 2018/10/24
- [Qemu-ppc] [PATCH v1 2/7] pcihp: overwrite hotplug handler recursively from the start, David Hildenbrand, 2018/10/24
- [Qemu-ppc] [PATCH v1 3/7] pcihp: route unplug via the hotplug handler, David Hildenbrand, 2018/10/24
- [Qemu-ppc] [PATCH v1 4/7] pci/pcie: route unplug via the hotplug handler,
David Hildenbrand <=
- [Qemu-ppc] [PATCH v1 5/7] pci/shpc: move hotplug checks to preplug handler, David Hildenbrand, 2018/10/24
- [Qemu-ppc] [PATCH v1 6/7] pci/shpc: route unplug via the hotplug handler, David Hildenbrand, 2018/10/24
- [Qemu-ppc] [PATCH v1 7/7] spapr_pci: route unplug via the hotplug handler, David Hildenbrand, 2018/10/24
- Re: [Qemu-ppc] [PATCH v1 0/7] pci: hotplug handler reworks, David Hildenbrand, 2018/10/31