From: Igor Mammedov <imammedo@redhat.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: qemu-devel@nongnu.org, kraxel@redhat.com
Subject: Re: [PATCH 0/4] Fix broken PCIe device after migration
Date: Fri, 25 Feb 2022 14:18:23 +0100 [thread overview]
Message-ID: <20220225141823.5ee12954@redhat.com> (raw)
In-Reply-To: <20220225045327-mutt-send-email-mst@kernel.org>
On Fri, 25 Feb 2022 04:58:46 -0500
"Michael S. Tsirkin" <mst@redhat.com> wrote:
> On Thu, Feb 24, 2022 at 12:44:07PM -0500, Igor Mammedov wrote:
> > Currently ACPI PCI hotplug is enabled by default for Q35 machine
> > type and overrides native PCIe hotplug. It works as expected when
> > a PCIe device is hotplugged into slot, however the device becomes
> > in-operational after migration. Which is caused by BARs being
> > disabled on target due to powered off status of the slot.
> >
> > Proposed fix disables power control on PCIe slot when ACPI pcihp
> > takes over hotplug control and makes PCIe slot check if power
> > control is enabled before trying to change slot's power. Which
> > leaves slot always powered on and that makes PCI core keep BARs
> > enabled.
>
>
> I thought some more about this. One of the reasons we
> did not remove the hotplug capability is really so
> it's easier to layer acpi on top of pcihp if we
> want to do it down the road. And it would be quite annoying
> if we had to add more hack to go back to having capability.
>
> How about instead of patch 3 we call pci_set_power(dev, true) for all
> devices where ACPI is managing hotplug immediately on plug? This will
> fix the bug avoiding headache with migration.
true it would be more migration friendly (v6.2 still broken
but that can't be helped), since we won't alter pci_config at all.
Although it's still more hackish compared to disabling SLTCAP_PCP
(though it seems guest OSes have no issues with SLTCAP_PCP being
present but not really operational, at least for ~6months the thing
was released (6.1-6.2-now)).
Let me play with this idea and see if it works and at what cost,
though I still prefer cleaner SLTCAP_PCP disabling to make sure
guest OS won't get wrong idea about power control being present
when it's not actually not.
> Patch 2 does seem like a good idea.
>
> > PS:
> > it's still hacky approach as all ACPI PCI hotplug is, but it's
> > the least intrusive one. Alternative, I've considered, could be
> > chaining hotplug callbacks and making pcihp ones call overriden
> > native callbacks while inhibiting hotplug event in native callbacks
> > somehow. But that were a bit more intrusive and spills over to SHPC
> > if implemented systematically, so I ditched that for now. It could
> > be resurrected later on if current approach turns out to be
> > insufficient.
> >
> > RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=2053584
> > CC: mst@redhat.com
> > CC: kraxel@redhat.com
> >
> > Igor Mammedov (4):
> > pci: expose TYPE_XIO3130_DOWNSTREAM name
> > pcie: update slot power status only is power control is enabled
> > acpi: pcihp: disable power control on PCIe slot
> > q35: compat: keep hotplugged PCIe device broken after migration for
> > 6.2-older machine types
> >
> > include/hw/acpi/pcihp.h | 4 +++-
> > include/hw/pci-bridge/xio3130_downstream.h | 15 +++++++++++++++
> > hw/acpi/acpi-pci-hotplug-stub.c | 3 ++-
> > hw/acpi/ich9.c | 21 ++++++++++++++++++++-
> > hw/acpi/pcihp.c | 16 +++++++++++++++-
> > hw/acpi/piix4.c | 3 ++-
> > hw/core/machine.c | 4 +++-
> > hw/pci-bridge/xio3130_downstream.c | 3 ++-
> > hw/pci/pcie.c | 5 ++---
> > 9 files changed, 64 insertions(+), 10 deletions(-)
> > create mode 100644 include/hw/pci-bridge/xio3130_downstream.h
> >
> > --
> > 2.31.1
>
next prev parent reply other threads:[~2022-02-25 13:54 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-24 17:44 [PATCH 0/4] Fix broken PCIe device after migration Igor Mammedov
2022-02-24 17:44 ` [PATCH 1/4] pci: expose TYPE_XIO3130_DOWNSTREAM name Igor Mammedov
2022-02-24 17:44 ` [PATCH 2/4] pcie: update slot power status only is power control is enabled Igor Mammedov
2022-02-24 18:05 ` Michael S. Tsirkin
2022-02-25 8:18 ` Igor Mammedov
2022-02-25 9:51 ` Michael S. Tsirkin
2022-02-25 10:05 ` Michael S. Tsirkin
2022-02-25 10:12 ` Gerd Hoffmann
2022-02-25 10:35 ` Michael S. Tsirkin
2022-02-25 13:02 ` Igor Mammedov
2022-02-25 13:08 ` Michael S. Tsirkin
2022-02-25 13:35 ` Igor Mammedov
2022-02-25 13:48 ` Michael S. Tsirkin
2022-02-25 15:39 ` Igor Mammedov
2022-02-28 7:39 ` Gerd Hoffmann
2022-02-28 8:55 ` Igor Mammedov
2022-02-24 17:44 ` [PATCH 3/4] acpi: pcihp: disable power control on PCIe slot Igor Mammedov
2022-02-24 17:44 ` [PATCH 4/4] q35: compat: keep hotplugged PCIe device broken after migration for 6.2-older machine types Igor Mammedov
2022-02-24 18:11 ` Michael S. Tsirkin
2022-02-25 8:25 ` Igor Mammedov
2022-02-24 18:08 ` [PATCH 0/4] Fix broken PCIe device after migration Michael S. Tsirkin
2022-02-25 9:01 ` Igor Mammedov
2022-02-25 9:58 ` Michael S. Tsirkin
2022-02-25 13:18 ` Igor Mammedov [this message]
2022-02-25 13:50 ` Michael S. Tsirkin
2022-02-25 15:50 ` Igor Mammedov
2022-02-27 10:22 ` Michael S. Tsirkin
2022-02-28 7:49 ` Gerd Hoffmann
2022-02-25 14:32 ` Igor Mammedov
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=20220225141823.5ee12954@redhat.com \
--to=imammedo@redhat.com \
--cc=kraxel@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).