From: Gleb Natapov <gleb@redhat.com>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: ddutile@redhat.com, qemu-devel@nongnu.org, mst@redhat.com
Subject: Re: [Qemu-devel] [PATCH 0/6] PCI hotplug improvements
Date: Wed, 7 Mar 2012 20:59:18 +0200 [thread overview]
Message-ID: <20120307185918.GD20128@redhat.com> (raw)
In-Reply-To: <1331140849.29701.326.camel@bling.home>
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.
next prev parent reply other threads:[~2012-03-07 18:59 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-07 0:13 [Qemu-devel] [PATCH 0/6] PCI hotplug improvements Alex Williamson
2012-03-07 0:13 ` [Qemu-devel] [PATCH 1/6] acpi_piix4: Disallow write to up/down PCI hotplug registers Alex Williamson
2012-03-07 0:14 ` [Qemu-devel] [PATCH 2/6] acpi_piix4: Only allow writes to PCI hotplug eject register Alex Williamson
2012-03-07 0:14 ` [Qemu-devel] [PATCH 3/6] pci: Add notifier for device probing Alex Williamson
2012-03-07 9:19 ` Paolo Bonzini
2012-03-07 20:12 ` Alex Williamson
2012-03-07 0:14 ` [Qemu-devel] [PATCH 4/6] acpi_piix4: Track PCI hotplug status and allow non-ACPI remove path Alex Williamson
2012-03-11 21:57 ` Michael S. Tsirkin
2012-03-07 0:15 ` [Qemu-devel] [PATCH 5/6] acpi_piix4: Use pci_get/set_byte Alex Williamson
2012-03-07 0:15 ` [Qemu-devel] [PATCH 6/6] api_piix4: Remove PCI_RMV_BASE write code Alex Williamson
2012-03-07 12:43 ` [Qemu-devel] [PATCH 0/6] PCI hotplug improvements Gleb Natapov
2012-03-07 17:20 ` Alex Williamson
2012-03-07 18:59 ` Gleb Natapov [this message]
2012-03-07 19:51 ` Alex Williamson
2012-03-07 21:00 ` Gleb Natapov
2012-03-07 21:44 ` Alex Williamson
2012-03-07 22:17 ` Gleb Natapov
2012-03-07 22:46 ` Alex Williamson
2012-03-08 12:39 ` Gleb Natapov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120307185918.GD20128@redhat.com \
--to=gleb@redhat.com \
--cc=alex.williamson@redhat.com \
--cc=ddutile@redhat.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).