[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 0/6] PCI hotplug improvements
From: |
Gleb Natapov |
Subject: |
Re: [Qemu-devel] [PATCH 0/6] PCI hotplug improvements |
Date: |
Wed, 7 Mar 2012 20:59:18 +0200 |
On Wed, Mar 07, 2012 at 10:20:49AM -0700, Alex Williamson wrote:
> On Wed, 2012-03-07 at 14:43 +0200, Gleb Natapov wrote:
> > On Tue, Mar 06, 2012 at 05:13:36PM -0700, Alex Williamson wrote:
> > > 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,
> > >
> > While I agree with Michael that using _STA as ack is a hack I think
> > this approach is not less of a hack. It is unlikely that this is how it
> > work on bare metal and we should follow real HW if possible.
>
> The test below is the only thing that proved to me it was less of a
> hack. Introducing a _LCK method for a slot may be another way to do
> this. Unfortunately it's not required that the OSPM call _LCK and it's
> not mentioned in the msft document referenced previously.
>
I do not understand where this requirement, that device_del should work
if non-acpi guest is running, is coming from? Because if there is no
such requirement then the hack is not needed.
> > > Tested using Linux guest:
> > > a) without acpiphp loaded:
> > > - device_add (nothing happens)
> > > - device_del (device removed directly)
> > How it works on real HW? On non ACPI compliant guest hot plug unplug is
> > not suppose to work.
>
> We're dealing with ACPI hotplug, so it's not as completely defined as
> something like SHPC. My understanding is that add and remove can be
> initiated by either an OS defined software method or via a physical
> button on the slot. What we do in qemu is more akin to the physical
> button. The user places a card in a slot, presses the button, which
> will signal the OS to power up the slot, discover the device, and start
> making use of it. An indicator LED is optional in the PCI hotplug spec,
> so the user is left to check the OS or look for device activity to
> determine if the card was inserted. If nothing happens, I suspect the
> user would likely pull the card back out, which is effectively what
> we're allowing here.
>
> > > b) without acpiphp loaded:
> > > - device_add (nothing happens)
> > > - echo 1 > /sys/bus/pci/rescan (device discovered)
> > > - device_del (nothing happens, guest owns device)
> > So guest can block a device from being ever removed?
>
> Yes, surprise removal is beyond the scope of this series. We can always
> shutdown a guest to remove the device, but surprise removal risks the
> integrity of the guest. Thanks,
Surprise removal is a guest driver issue, not ACPI AFAIK.
>
> Alex
>
> > > - 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(-)
> >
> > --
> > Gleb.
>
>
--
Gleb.
- [Qemu-devel] [PATCH 2/6] acpi_piix4: Only allow writes to PCI hotplug eject register, (continued)
- [Qemu-devel] [PATCH 2/6] acpi_piix4: Only allow writes to PCI hotplug eject register, Alex Williamson, 2012/03/06
- [Qemu-devel] [PATCH 1/6] acpi_piix4: Disallow write to up/down PCI hotplug registers, Alex Williamson, 2012/03/06
- [Qemu-devel] [PATCH 3/6] pci: Add notifier for device probing, Alex Williamson, 2012/03/06
- [Qemu-devel] [PATCH 4/6] acpi_piix4: Track PCI hotplug status and allow non-ACPI remove path, Alex Williamson, 2012/03/06
- [Qemu-devel] [PATCH 5/6] acpi_piix4: Use pci_get/set_byte, Alex Williamson, 2012/03/06
- [Qemu-devel] [PATCH 6/6] api_piix4: Remove PCI_RMV_BASE write code, Alex Williamson, 2012/03/06
- Re: [Qemu-devel] [PATCH 0/6] PCI hotplug improvements, Gleb Natapov, 2012/03/07
- Re: [Qemu-devel] [PATCH 0/6] PCI hotplug improvements, Alex Williamson, 2012/03/07
- Re: [Qemu-devel] [PATCH 0/6] PCI hotplug improvements,
Gleb Natapov <=
- Re: [Qemu-devel] [PATCH 0/6] PCI hotplug improvements, Alex Williamson, 2012/03/07
- Re: [Qemu-devel] [PATCH 0/6] PCI hotplug improvements, Gleb Natapov, 2012/03/07
- Re: [Qemu-devel] [PATCH 0/6] PCI hotplug improvements, Alex Williamson, 2012/03/07
- Re: [Qemu-devel] [PATCH 0/6] PCI hotplug improvements, Gleb Natapov, 2012/03/07
- Re: [Qemu-devel] [PATCH 0/6] PCI hotplug improvements, Alex Williamson, 2012/03/07
- Re: [Qemu-devel] [PATCH 0/6] PCI hotplug improvements, Gleb Natapov, 2012/03/08