Here's a re-work of the patch that added _STA for the purpose of using it as an ack from the guest. Instead of that, add a notifier for device access. Once the guest reads from device config space, it owns it. Until that point, we can remove it directly. As pointed out by MST, this passes test b) below, which the _STA method would not. As a bonus, no bios change is required for this. Patches 5 & 6 are just cleanups that can be applied independently. Thanks,
Alex Tested using Linux guest: a) without acpiphp loaded: - device_add (nothing happens) - device_del (device removed directly) b) without acpiphp loaded: - device_add (nothing happens) - echo 1 > /sys/bus/pci/rescan (device discovered) - device_del (nothing happens, guest owns device) - modprobe acpiphp - device_del (guest releases device) c) with acpiphp loaded: - device_add/del behave as expected (automatic add + coordinated removal) Tested using WinXP guest: - device_add/del behave as expected (automatic add + coordinated removal) --- Alex Williamson (6): api_piix4: Remove PCI_RMV_BASE write code acpi_piix4: Use pci_get/set_byte acpi_piix4: Track PCI hotplug status and allow non-ACPI remove path pci: Add notifier for device probing acpi_piix4: Only allow writes to PCI hotplug eject register acpi_piix4: Disallow write to up/down PCI hotplug registers hw/acpi_piix4.c | 175 ++++++++++++++++++++++++++++--------------------------- hw/pci_host.c | 19 ++++++ hw/pci_host.h | 2 + 3 files changed, 111 insertions(+), 85 deletions(-)