From: Benjamin Block <bblock@linux.ibm.com>
To: Alexander Gordeev <agordeev@linux.ibm.com>,
Gerd Bayer <gbayer@linux.ibm.com>,
Bjorn Helgaas <bhelgaas@google.com>,
Niklas Schnelle <schnelle@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Heiko Carstens <hca@linux.ibm.com>
Cc: Gerald Schaefer <gerald.schaefer@linux.ibm.com>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Andreas Krebbel <krebbel@linux.ibm.com>,
linux-pci <linux-pci@vger.kernel.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
Ionut Nechita <ionut_n2001@yahoo.com>,
Tobias Schumacher <ts@linux.ibm.com>,
Sven Schnelle <svens@linux.ibm.com>,
Matthew Rosato <mjrosato@linux.ibm.com>,
linux-s390 <linux-s390@vger.kernel.org>,
Julian Ruess <julianr@linux.ibm.com>,
Ionut Nechita <ionut.nechita@windriver.com>,
Farhan Ali <alifm@linux.ibm.com>,
Benjamin Block <bblock@linux.ibm.com>
Subject: [PATCH v2 0/3] PCI: s390/pci: Fix deadlocks on s390 when releasing zPCI-bus or -device objects
Date: Wed, 11 Mar 2026 14:27:47 +0100 [thread overview]
Message-ID: <cover.1773235561.git.bblock@linux.ibm.com> (raw)
v1 -> v2:
* combine patch 02 and 04 - fix and use of guards [Ilpo, Niklas]
* rephrase description of patch 01 to point out that it is already possible
today to lock/unlock `pci_rescan_remove_lock` anywhere
* added Fixes: tags to patch 03 - the fix
Niklas already mentioned it in his recent comments on discussions about
`pci_rescan_remove_lock` here
https://lore.kernel.org/linux-pci/286d0488aa72b1741f93f900fd5db5c4334a6f50.camel@linux.ibm.com/
and here
https://lore.kernel.org/linux-pci/2b6a844619892ecaa11031705808667e0886d8b2.camel@linux.ibm.com/
; we recently found a couple of deadlocks in the s390 architecture PCI
implementation with hotplug events on our platform.
So far these have not been observed because on s390 it was not usual to have
both PF and attached VFs in the same Linux instance. So far PCI devices have
largely been either available as PF without SR-IOV, or as VF without the PF
being visible in the same instance. This left us with some blind spots w.r.t.
the locking issues here.
This is now changing, and with that we started running into these
deadlocks.
Please Note:
This patchset strictly depends on Ionut Nechita's patch that makes
`pci_lock_rescan_remove()` reentrant:
https://lore.kernel.org/linux-pci/20260310074303.17480-2-ionut.nechita@windriver.com/
Since the discussion so far sounded positive towards the change I decided
to base some of the changes in this patchset on the assumption that his
patch gets merged before mine. Otherwise there will be recursive deadlocks.
Patch 01 helps us insofar it enables us to use lockdep annotations in the
architecture code.
Patch 02 makes it possible to use lock guards for `pci_rescan_remove_lock`.
Patch 03 goes into detail what deadlocks exactly exist today, and fixes them.
I've run a /lot/ of tests with affected PCI adapters:
* enable/disable SR-IOV on the PF;
* run FLR reset on PF and VF;
* run Bus reset on PF and VF;
* run s390's recover SysFS attribute on PF and VF;
* disable/enable power with the hotplug SysFS attribute on PF and VF;
* run `zpcictl` with `--reset`/`--reset-fw` on PF and VF;
* run Configure Off and Configure On on both the PF and VF from a Service
Element.
There is no more deadlocks and no other lockdep warnings I've witnessed.
Benjamin Block (3):
PCI: Move declaration of pci_rescan_remove_lock into public pci.h
PCI: Provide lock guard for pci_rescan_remove_lock
s390/pci: Fix circular/recursive deadlocks in PCI-bus and -device
release
arch/s390/pci/pci.c | 11 ++++++++---
arch/s390/pci/pci_bus.c | 15 ++++++++-------
arch/s390/pci/pci_event.c | 28 +++++++++++++++++++---------
arch/s390/pci/pci_iov.c | 3 +--
arch/s390/pci/pci_sysfs.c | 9 +++------
drivers/pci/pci.h | 2 --
drivers/pci/probe.c | 1 +
include/linux/pci.h | 5 +++++
8 files changed, 45 insertions(+), 29 deletions(-)
base-commit: b29fb8829bff243512bb8c8908fd39406f9fd4c3
--
2.53.0
next reply other threads:[~2026-03-11 13:27 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-11 13:27 Benjamin Block [this message]
2026-03-11 13:27 ` [PATCH v2 1/3] PCI: Move declaration of pci_rescan_remove_lock into public pci.h Benjamin Block
2026-03-12 19:41 ` Niklas Schnelle
2026-03-13 13:32 ` Benjamin Block
2026-03-11 13:27 ` [PATCH v2 2/3] PCI: Provide lock guard for pci_rescan_remove_lock Benjamin Block
2026-03-12 19:44 ` Niklas Schnelle
2026-03-13 13:32 ` Benjamin Block
2026-03-11 13:27 ` [PATCH v2 3/3] s390/pci: Fix circular/recursive deadlocks in PCI-bus and -device release Benjamin Block
2026-03-12 21:02 ` Niklas Schnelle
2026-03-13 13:59 ` Benjamin Block
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=cover.1773235561.git.bblock@linux.ibm.com \
--to=bblock@linux.ibm.com \
--cc=agordeev@linux.ibm.com \
--cc=alifm@linux.ibm.com \
--cc=bhelgaas@google.com \
--cc=borntraeger@linux.ibm.com \
--cc=gbayer@linux.ibm.com \
--cc=gerald.schaefer@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=ionut.nechita@windriver.com \
--cc=ionut_n2001@yahoo.com \
--cc=julianr@linux.ibm.com \
--cc=krebbel@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=mjrosato@linux.ibm.com \
--cc=schnelle@linux.ibm.com \
--cc=svens@linux.ibm.com \
--cc=ts@linux.ibm.com \
/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