linux/drivers/pci
Marek Vasut dc6b698a86 PCI: sysfs: Ignore lockdep for remove attribute
With CONFIG_PROVE_LOCKING=y, using sysfs to remove a bridge with a device
below it causes a lockdep warning, e.g.,

  # echo 1 > /sys/class/pci_bus/0000:00/device/0000:00:00.0/remove
  ============================================
  WARNING: possible recursive locking detected
  ...
  pci_bus 0000:01: busn_res: [bus 01] is released

The remove recursively removes the subtree below the bridge.  Each call
uses a different lock so there's no deadlock, but the locks were all
created with the same lockdep key so the lockdep checker can't tell them
apart.

Mark the "remove" sysfs attribute with __ATTR_IGNORE_LOCKDEP() as it is
safe to ignore the lockdep check between different "remove" kernfs
instances.

There's discussion about a similar issue in USB at [1], which resulted in
356c05d58a ("sysfs: get rid of some lockdep false positives") and
e9b526fe70 ("i2c: suppress lockdep warning on delete_device"), which do
basically the same thing for USB "remove" and i2c "delete_device" files.

[1] https://lore.kernel.org/r/Pine.LNX.4.44L0.1204251436140.1206-100000@iolanthe.rowland.org
Link: https://lore.kernel.org/r/20190526225151.3865-1-marek.vasut@gmail.com
Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
[bhelgaas: trim commit log, details at above links]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Cc: Geert Uytterhoeven <geert+renesas@glider.be>
Cc: Phil Edworthy <phil.edworthy@renesas.com>
Cc: Simon Horman <horms+renesas@verge.net.au>
Cc: Tejun Heo <tj@kernel.org>
Cc: Wolfram Sang <wsa@the-dreams.de>
2019-06-21 09:40:13 -05:00
..
controller pci-v5.2-changes 2019-05-14 10:30:10 -07:00
endpoint Merge branch 'remotes/lorenzo/pci/misc' 2019-05-13 18:34:44 -05:00
hotplug pci-v5.2-changes 2019-05-14 10:30:10 -07:00
pcie pci-v5.2-changes 2019-05-14 10:30:10 -07:00
switch pci-v5.2-changes 2019-05-14 10:30:10 -07:00
access.c PCI: Uninline PCI bus accessors for better ftracing 2018-10-04 16:37:37 -05:00
ats.c PCI/ATS: Add pci_ats_page_aligned() interface 2019-02-26 11:08:07 +01:00
bus.c PCI: Replace dev_printk(KERN_DEBUG) with dev_info(), etc 2019-05-09 07:49:58 -05:00
ecam.c
host-bridge.c
iov.c PCI/IOV: Add flag so platforms can skip VF scanning 2019-01-01 19:04:37 -06:00
irq.c PCI: Use IRQF_ONESHOT if pci_request_irq() called with no handler 2018-07-31 10:43:43 -05:00
Kconfig PCI: Fix PCI kconfig menu organization 2019-01-14 17:01:20 -06:00
Makefile PCI: OF: Allow of_pci_get_max_link_speed() to be used by PCI Endpoint drivers 2019-04-15 13:24:02 +01:00
mmap.c
msi.c PCI: Add pci_dev_id() helper 2019-04-29 16:12:05 -05:00
of.c Merge branch 'remotes/lorenzo/pci/keystone' 2019-05-13 18:34:41 -05:00
p2pdma.c PCI/P2PDMA: Allow P2P DMA between any devices under AMD ZEN Root Complex 2019-05-01 16:53:39 -05:00
pci-acpi.c Merge branch 'pci/printk' 2019-05-13 18:34:46 -05:00
pci-bridge-emul.c PCI: pci-bridge-emul: Extend pci_bridge_emul_init() with flags 2019-02-22 10:51:14 +00:00
pci-bridge-emul.h PCI: pci-bridge-emul: Extend pci_bridge_emul_init() with flags 2019-02-22 10:51:14 +00:00
pci-driver.c PCI: Always allow probing with driver_override 2019-06-13 16:49:06 -05:00
pci-label.c
pci-mid.c x86/cpu: Sanitize FAM6_ATOM naming 2018-10-02 10:14:32 +02:00
pci-pf-stub.c
pci-stub.c PCI: Replace printk(KERN_INFO) with pr_info(), etc 2019-05-09 07:49:54 -05:00
pci-sysfs.c PCI: sysfs: Ignore lockdep for remove attribute 2019-06-21 09:40:13 -05:00
pci.c PCI: Decode PCIe 32 GT/s link speed 2019-06-13 16:49:45 -05:00
pci.h pci-v5.2-changes 2019-05-14 10:30:10 -07:00
probe.c PCI: Decode PCIe 32 GT/s link speed 2019-06-13 16:49:45 -05:00
proc.c PCI: Mark expected switch fall-throughs 2019-03-20 15:11:11 -05:00
quirks.c pci-v5.2-changes 2019-05-14 10:30:10 -07:00
remove.c PCI/ASPM: Fix link_state teardown on device removal 2018-09-17 16:32:23 -05:00
rom.c PCI: Make pci_get_rom_size() static 2018-06-29 21:17:26 -05:00
search.c PCI: Add pci_dev_id() helper 2019-04-29 16:12:05 -05:00
setup-bus.c Merge branch 'pci/trivial' 2019-05-13 18:34:48 -05:00
setup-irq.c
setup-res.c
slot.c PCI: Decode PCIe 32 GT/s link speed 2019-06-13 16:49:45 -05:00
syscall.c
vc.c
vpd.c PCI/VPD: Check for VPD access completion before checking for timeout 2018-08-14 16:04:46 -05:00
xen-pcifront.c Merge branch 'pci/printk' 2019-05-13 18:34:46 -05:00