From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:42955) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S54Vh-0003ox-F2 for qemu-devel@nongnu.org; Tue, 06 Mar 2012 19:13:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S54Vf-00059P-NQ for qemu-devel@nongnu.org; Tue, 06 Mar 2012 19:13:41 -0500 Received: from mx1.redhat.com ([209.132.183.28]:8171) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S54Vf-00059J-FU for qemu-devel@nongnu.org; Tue, 06 Mar 2012 19:13:39 -0500 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q270DaBY031132 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 6 Mar 2012 19:13:37 -0500 From: Alex Williamson Date: Tue, 06 Mar 2012 17:13:36 -0700 Message-ID: <20120307000340.3079.87515.stgit@bling.home> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] [PATCH 0/6] PCI hotplug improvements List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: alex.williamson@redhat.com, ddutile@redhat.com, gleb@redhat.com, mst@redhat.com 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(-)