Re: [PATCH v4 2/3] PCI: Allow specifying devices using a base bus and path of devfns
From: Randy Dunlap <hidden>
Date: 2018-06-22 20:02:31
Also in:
linux-pci, lkml
Hi, On 06/22/2018 12:43 PM, Logan Gunthorpe wrote:
When specifying PCI devices on the kernel command line using a BDF, the bus numbers can change when adding or replacing a device, changing motherboard firmware, or applying kernel parameters like pci=assign-buses. When this happens, it is usually undesirable to apply whatever command line tweak 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>:<slot>.<func>[/<slot>.<func>]*
Please explain the trailing '*'. I looked thru the code and it doesn't seem to look for it or care.
quoted hunk ↗ jump to hunk
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> Reviewed-by: Stephen Bates <redacted> Acked-by: Christian König <christian.koenig@amd.com> Reviewed-by: Alex Williamson <redacted> --- Documentation/admin-guide/kernel-parameters.txt | 8 +- drivers/pci/pci.c | 117 ++++++++++++++++++++---- 2 files changed, 103 insertions(+), 22 deletions(-)diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index e783bcefadac..a69947d9e14e 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt@@ -3000,7 +3000,7 @@ or a set of devices (<pci_dev>). These are specified in one of the following formats: - [<domain>:]<bus>:<slot>.<func> + [<domain>:]<bus>:<slot>.<func>[/<slot>.<func>]* pci:<vendor>:<device>[:<subvendor>:<subdevice>] Note: the first format specifies a PCI@@ -3009,7 +3009,11 @@ firmware changes, or due to changes caused by other kernel parameters. If the domain is left unspecified, it is - taken to be zero. The second format + taken to be zero. Optionally, a path + to a device through multiple slot/function + addresses can be specified after the base + address (this is more robust against + renumbering issues). The second format selects devices using IDs from the configuration space which may match multiple devices in the system.
thanks, -- ~Randy -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html