mbox series

[0/4] PCI/hotplug: Fix interrupt / event handling problems

Message ID 20250313142333.5792-1-ilpo.jarvinen@linux.intel.com (mailing list archive)
Headers show
Series PCI/hotplug: Fix interrupt / event handling problems | expand

Message

Ilpo Järvinen March 13, 2025, 2:23 p.m. UTC
Hi all,

It was reported introducing bwctrl broke attaching a PCI device into
VM. I tracked this down to problems in hotplug interrupt and event
handling where hotplug code assumed all events are for it without
proper checking. As a result, the extra interrupts that occurred due to
bwctrl caused hotplug pick events during slot reset due to shared irq
and eventually hotplug unconfigured the card spuriously.

This series fixes the hotplug slot reset so that no hotplug events can
be picked up during slot reset which was the original intention of the
reset code but it failed to synchronize its intention with the
interrupt and event handling.

I've intentionally split the three patches because to be careful and
allow bisect to detect if the two follow up changes make assumptions
that do not hold water, but logically they belong to the same single
change altering the synchronization between the reset slot and hotplug
event handling. It should be technically possible to fold them into the
same change, but I feel there are benefits of keeping them as separate
so bisect can see them as separate changes.

The fourth patch fixes an oversight I found while reading the HPIE
related code and is unrelated to the other three patches.

As there were small changes into the first patch since Joel's test
to address Lukas' comments in the bugzilla thread. I'd prefer him
to test it again, just in case, so I dropped the tested-by tag until
that happens.

Ilpo Järvinen (4):
  PCI/hotplug: Disable HPIE over reset
  PCI/hotplug: Clearing HPIE for the duration of reset is enough
  PCI/hotplug: reset_lock is not required synchronizing with irq thread
  PCI/hotplug: Don't enabled HPIE in poll mode

 drivers/pci/hotplug/pciehp_hpc.c | 39 +++++++++++++++++++++++---------
 1 file changed, 28 insertions(+), 11 deletions(-)


base-commit: 2014c95afecee3e76ca4a56956a936e23283f05b