Hi all! v4: rework the API after discussion in the mailing list
---- The main patches are the last two ones: - introduce HOTPLUG_STATE event, that inform when hotplug controller change it's state, especially indicator leds - query-hotplug command, that provides same information as event on demand - DEVICE_ON event - a kind of counterpart for DEVICE_DELETED, signals when device is finally accepted by guest, power indicator is on and so on. That's all for smarter handling of SHPC and PCIe-native hotplug. If you want to test new events, don't forget -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off flag, to disable ACPI hotplug default. Vladimir Sementsov-Ogievskiy (16): pci/shpc: set attention led to OFF on reset pci/shpc: change shpc_get_status() return type to uint8_t pci/shpc: shpc_slot_command(): handle PWRONLY -> ENABLED transition pci/shpc: more generic handle hot-unplug in shpc_slot_command() pci/shpc: pass PCIDevice pointer to shpc_slot_command() pci/shpc: refactor shpc_device_plug_common() pcie: pcie_cap_slot_write_config(): use correct macro pcie_regs: drop duplicated indicator value macros pcie: drop unused PCIExpressIndicator pcie: pcie_cap_slot_enable_power() use correct helper pcie: introduce pcie_sltctl_powered_off() helper pcie: set power indicator to off on reset by default pci: introduce pci_find_the_only_child() qapi: deprecate "device" field of DEVICE_* events qapi: add HOTPLUG_STATE event qapi: introduce DEVICE_ON event docs/about/deprecated.rst | 9 ++ qapi/qdev.json | 200 ++++++++++++++++++++++++++++- include/hw/hotplug.h | 12 ++ include/hw/pci/pci.h | 4 + include/hw/pci/pci_bridge.h | 2 + include/hw/pci/pcie.h | 10 +- include/hw/pci/pcie_regs.h | 14 --- include/hw/pci/shpc.h | 2 + include/monitor/qdev.h | 5 + hw/core/hotplug.c | 13 ++ hw/pci-bridge/pci_bridge_dev.c | 14 +++ hw/pci-bridge/pcie_pci_bridge.c | 1 + hw/pci/pci.c | 33 +++++ hw/pci/pcie.c | 122 ++++++++++++++++-- hw/pci/pcie_port.c | 1 + hw/pci/shpc.c | 215 ++++++++++++++++++++++++-------- softmmu/qdev-monitor.c | 39 ++++++ 17 files changed, 608 insertions(+), 88 deletions(-) -- 2.34.1