diff options
author | Niklas Schnelle <schnelle@linux.ibm.com> | 2022-11-09 17:29:01 +0300 |
---|---|---|
committer | Joerg Roedel <jroedel@suse.de> | 2022-11-19 12:28:16 +0300 |
commit | 2ba8336dab5fb81452aea9c21dfc870050a017f3 (patch) | |
tree | 28cf21630a2a43438e63a6b8001f32ebd9abc8b8 /arch/s390/pci/pci.c | |
parent | c228f5a043370ef02867e4f0aab1bdc8422500e6 (diff) | |
download | linux-2ba8336dab5fb81452aea9c21dfc870050a017f3.tar.xz |
iommu/s390: Use RCU to allow concurrent domain_list iteration
The s390_domain->devices list is only added to when new devices are
attached but is iterated through in read-only fashion for every mapping
operation as well as for I/O TLB flushes and thus in performance
critical code causing contention on the s390_domain->list_lock.
Fortunately such a read-mostly linked list is a standard use case for
RCU. This change closely follows the example fpr RCU protected list
given in Documentation/RCU/listRCU.rst.
Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
Link: https://lore.kernel.org/r/20221109142903.4080275-4-schnelle@linux.ibm.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Diffstat (limited to 'arch/s390/pci/pci.c')
-rw-r--r-- | arch/s390/pci/pci.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/s390/pci/pci.c b/arch/s390/pci/pci.c index a703dcd94a68..ef38b1514c77 100644 --- a/arch/s390/pci/pci.c +++ b/arch/s390/pci/pci.c @@ -996,7 +996,7 @@ void zpci_release_device(struct kref *kref) break; } zpci_dbg(3, "rem fid:%x\n", zdev->fid); - kfree(zdev); + kfree_rcu(zdev, rcu); } int zpci_report_error(struct pci_dev *pdev, |