qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: William Dauchy <wdauchy@gmail.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: Isaku Yamahata <yamahata@valinux.co.jp>,
	qemu-devel@nongnu.org, Gerd Hoffmann <kraxel@redhat.com>
Subject: Re: [Qemu-devel] [PATCH] `qdev_free` when unplug a pci device
Date: Wed, 23 Feb 2011 10:32:28 +0100	[thread overview]
Message-ID: <AANLkTimG-_do7d1P9XYHkQnq-=Rqy87LUcViRe-TMWuC@mail.gmail.com> (raw)
In-Reply-To: <m3hbbvm9uo.fsf@blackfin.pond.sub.org>

Hi Markus,

On Wed, Feb 23, 2011 at 9:30 AM, Markus Armbruster <armbru@redhat.com> wrote:
> I don't think this patch is correct.  Let me explain.
>
> Device hot unplug is *not* guaranteed to succeed.
>
> For some buses, such as USB, it always succeeds immediately, i.e. when
> the device_del monitor command finishes, the device is gone.  Live is
> good.
>
> But for PCI, device_del merely initiates the ACPI unplug rain dance.  It
> doesn't wait for the dance to complete.  Why?  The dance can take an
> unpredictable amount of time, including forever.
>
> Problem: Subsequent device_add can fail if it reuses the qdev ID or PCI
> slot, and the unplug has not yet completed (race condition), or it
> failed.  Yes, Virginia, PCI hotplug *can* fail.
>
> When unplug succeeds, the qdev is automatically destroyed.
> pciej_write() does that for PIIX4.  Looks like pcie_cap_slot_event()
> does it for PCIE.
>
> Your patch adds a *second* qdev_free().  No good.

Thanks for the complete explanation. I now understand my mistake and
find out why it wasn't working as expected.
On a Linux virtual machine I forgot to load the `acpiphp` module which
makes the pci device disappear when doing a detach. I thought that,
even without this module the detach should have freed the
corresponding device on qemu side, regardless if the virtual machine
was supporting or not acpi signals.
Please ignore my patch.

Regards,
-- 
William

  reply	other threads:[~2011-02-23  9:32 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-02-22 17:36 [Qemu-devel] [PATCH] `qdev_free` when unplug a pci device William Dauchy
2011-02-23  2:50 ` Isaku Yamahata
2011-02-23  8:30   ` Markus Armbruster
2011-02-23  9:32     ` William Dauchy [this message]
2011-02-28  2:52     ` Wen Congyang
2011-03-01  4:11       ` Isaku Yamahata
2011-03-01  6:58         ` Wen Congyang
2011-03-01  7:13           ` Isaku Yamahata
2011-03-01  7:32             ` Wen Congyang
2011-03-01  9:49               ` Isaku Yamahata
2011-03-09  4:08       ` Ryan Harper
2011-03-09  5:04         ` Wen Congyang
2011-03-09  6:12           ` Ryan Harper
2011-03-09  7:19             ` Wen Congyang
2011-03-10  4:31               ` Ryan Harper
2011-03-10  5:28                 ` Wen Congyang

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='AANLkTimG-_do7d1P9XYHkQnq-=Rqy87LUcViRe-TMWuC@mail.gmail.com' \
    --to=wdauchy@gmail.com \
    --cc=armbru@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=yamahata@valinux.co.jp \
    /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).