From: Keith Busch <kbusch@kernel.org>
To: Alex Williamson <alex@shazbot.org>
Cc: Keith Busch <kbusch@meta.com>,
linux-pci@vger.kernel.org, helgaas@kernel.org, lukas@wunner.de,
dan.j.williams@intel.com, guojinhui.liam@bytedance.com,
ilpo.jarvinen@linux.intel.com
Subject: Re: [PATCHv3 3/4] pci: remove slot specific lock/unlock and save/restore
Date: Wed, 11 Feb 2026 08:54:50 -0700 [thread overview]
Message-ID: <aYymSgmgSTI2D3vR@kbusch-mbp> (raw)
In-Reply-To: <20260211082229.4e746e32@shazbot.org>
On Wed, Feb 11, 2026 at 08:22:29AM -0700, Alex Williamson wrote:
> On Tue, 10 Feb 2026 17:12:13 -0700
> Keith Busch <kbusch@kernel.org> wrote:
> > No, this still calls the slot's specific reset callback via
> > pci_reset_hotplug_slot. The only thing this does is add locking, config
> > state save/restore, and driver reset prepare/complete calls for the
> > entire bus rather than matching "slots" on that bus. In the worst case
> > scenario, this patch has the kernel do a little more work than it needed
> > to.
>
> But with this change, when vfio-pci calls pci_probe_reset_slot() we
> test pci_bus_resettable() rather than pci_slot_resettable(). The
> former is a superset of the latter. Another slot on the same bus might
> have a bridge card or quirked device that previously wouldn't have
> affected the ability to reset a separate physical, conventional slot.
> The risk is small, but the semantics are different.
Thanks, good point.
> > > I've always
> > > understood these to be a subset of the bus, where we find the devices
> > > sharing the same physical PCI slot by comparing the pci_dev.slot across
> > > the bus, as done in all the code removed here. pci_create_slot()
> > > certainly is not simply a reflection of PCI_SLOT().
> >
> > pci_create_slot assigns devices that match PCI_SLOT() of the bus's
> > devices, so it certainly is a reflection of that, no? The problem is
> > that PCI_SLOT() macro doesn't actually reflect the true nature of what
> > devices belong in the slot: the devices in a particular "slot" does not
> > define the actual blast radius of resetting that "slot".
>
> struct pci_slot, the thing created by pci_create_slot(), represents a
> physical slot. PCI_SLOT() is the bus addressing. Not all pci_devs
> have a struct pci_slot, not all pci_devs within the same physical slot
> share the same B:D.F slot number (with ARI).
>
> The vfio code does assume that 'slot' defines the blast radius of a
> pci_slot_reset() and I'm confused how it should operate if we're now
> going to conflate slot and bus reset scopes.
Yes, the "struct pci_slot" is that represetation. The problem is that
its current form is missing semantics to bind to functions that don't
match PCI_SLOT(). I don't know why PCI_SLOT is that criteria, but it's
clearly the wrong criteria for pciehp, probably others too if they
support ARI devices. The previous patch in this series creates entirely
new semantics specifically for pciehp and fixes that issue. It also
makes this patch unnecessary, but *only* for pciehp.
> > > Is the error below
> > > really a reflection that pci_dev.slot isn't carried over to the full
> > > set of functions?
> >
> > Correct, the pci slot today in a pciehp hotplug slot is not getting
> > assigned to all the functions in that slot, so slot resets completely
> > miss handling those functions, which inevitably break them.
>
> Isn't this then a pciehp hotplug issue that all children of the bus
> should be linked via the struct pci_slot regardless of PCI_SLOT()?
It's not really a pciehp issue because pci_slot doesn't make it possible
to do anything else. See [PATCH 2/4] from this series.
In light of these concerns, I think the safest way forward is to drop
this patch and just enable something like what patch 2 provides.
next prev parent reply other threads:[~2026-02-11 15:54 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-05 21:25 [PATCHv3 0/4] pci slot reset handling fixes Keith Busch
2026-02-05 21:25 ` [PATCHv3 1/4] pci: rename __pci_bus_reset and __pci_slot_reset Keith Busch
2026-02-06 17:22 ` Keith Busch
2026-02-10 20:44 ` dan.j.williams
2026-02-05 21:25 ` [PATCHv3 2/4] pci: allow all bus devices to use the same slot Keith Busch
2026-02-10 20:00 ` dan.j.williams
2026-02-10 20:28 ` Keith Busch
2026-02-10 20:51 ` dan.j.williams
2026-02-05 21:25 ` [PATCHv3 3/4] pci: remove slot specific lock/unlock and save/restore Keith Busch
2026-02-10 22:03 ` dan.j.williams
2026-02-10 23:25 ` Keith Busch
2026-02-10 23:48 ` dan.j.williams
2026-02-10 23:46 ` Alex Williamson
2026-02-11 0:12 ` Keith Busch
2026-02-11 15:22 ` Alex Williamson
2026-02-11 15:54 ` Keith Busch [this message]
2026-02-05 21:25 ` [PATCHv3 4/4] pci: make reset_subordinate hotplug safe Keith Busch
2026-02-10 22:14 ` dan.j.williams
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=aYymSgmgSTI2D3vR@kbusch-mbp \
--to=kbusch@kernel.org \
--cc=alex@shazbot.org \
--cc=dan.j.williams@intel.com \
--cc=guojinhui.liam@bytedance.com \
--cc=helgaas@kernel.org \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=kbusch@meta.com \
--cc=linux-pci@vger.kernel.org \
--cc=lukas@wunner.de \
/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