PCI: Convert __pci_walk_bus() to be recursive
authorKeith Busch <kbusch@kernel.org>
Tue, 22 Oct 2024 22:48:50 +0000 (15:48 -0700)
committerBjorn Helgaas <bhelgaas@google.com>
Mon, 11 Nov 2024 19:06:02 +0000 (13:06 -0600)
commitee061da777f704976c6d3fdc1707788d11a052c5
tree7cb56a23fe60b2c73dbd475540b61a66303c4102
parent4d6dcd6c2fa3a80898651d323c150e5ebc03881d
PCI: Convert __pci_walk_bus() to be recursive

The original implementation of __pci_walk_bus() chose a non-recursive walk,
presumably as a precaution on stack use. We do recursive bus walking in
other places though. For example:

  pci_bus_resettable()
  pci_stop_bus_device()
  pci_remove_bus_device()
  pci_bus_allocate_dev_resources()

So recursive pci bus walking is well tested and safe, and is easier to
follow.

Convert __pci_walk_bus() to be recursive to make it easier to introduce
finer grain locking in the future.

Link: https://lore.kernel.org/r/20241022224851.340648-5-kbusch@meta.com
Signed-off-by: Keith Busch <kbusch@kernel.org>
[bhelgaas: commit log]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drivers/pci/bus.c