PCI: Allow specifying devices using a base bus and path of devfns
authorLogan Gunthorpe <logang@deltatee.com>
Mon, 30 Jul 2018 16:18:38 +0000 (10:18 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 9 Aug 2018 21:24:39 +0000 (16:24 -0500)
commit45db33709ccc7330c55fc6751c96468de407f2ac
tree157e69c9e097e133761083b632d1458ed0bd5464
parent07d8d7e57c28ca9a07dab4efd75dad3a654aeb85
PCI: Allow specifying devices using a base bus and path of devfns

When specifying PCI devices on the kernel command line using a
bus/device/function address, bus numbers can change when adding or
replacing a device, changing motherboard firmware, or applying kernel
parameters like "pci=assign-buses".  When bus numbers change, it's likely
the command line tweak will be applied to the wrong device.

Therefore, it is useful to be able to specify devices with a base bus
number and the path of devfns needed to get to it, similar to the "device
scope" structure in the Intel VT-d spec, Section 8.3.1.

Thus, we add an option to specify devices in the following format:

  [<domain>:]<bus>:<device>.<func>[/<device>.<func>]*

The path can be any segment within the PCI hierarchy of any length and
determined through the use of 'lspci -t'.  When specified this way, it is
less likely that a renumbered bus will result in a valid device
specification and the tweak won't be applied to the wrong device.

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
[bhelgaas: use "device" instead of "slot" in documentation since that's the
usual language in the PCI specs]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Stephen Bates <sbates@raithlin.com>
Reviewed-by: Alex Williamson <alex.williamson@redhat.com>
Acked-by: Christian König <christian.koenig@amd.com>
Documentation/admin-guide/kernel-parameters.txt
drivers/pci/pci.c