Re: [PATCH V6 7/8] PCI: Add "pci=disable_10bit_tag=" parameter for peer-to-peer support
From: Logan Gunthorpe <logang@deltatee.com>
Date: 2021-07-23 16:21:21
Also in:
linux-media, netdev
On 2021-07-23 5:32 a.m., Leon Romanovsky wrote:
On Fri, Jul 23, 2021 at 07:06:41PM +0800, Dongdong Liu wrote:quoted
PCIe spec 5.0 r1.0 section 2.2.6.2 says that if an Endpoint supports sending Requests to other Endpoints (as opposed to host memory), the Endpoint must not send 10-Bit Tag Requests to another given Endpoint unless an implementation-specific mechanism determines that the Endpoint supports 10-Bit Tag Completer capability. Add "pci=disable_10bit_tag=" parameter to disable 10-Bit Tag Requester if the peer device does not support the 10-Bit Tag Completer. This will make P2P traffic safe. Signed-off-by: Dongdong Liu <redacted> --- Documentation/admin-guide/kernel-parameters.txt | 7 ++++ drivers/pci/pci.c | 56 +++++++++++++++++++++++++ drivers/pci/pci.h | 1 + drivers/pci/pcie/portdrv_pci.c | 13 +++--- drivers/pci/probe.c | 9 ++-- 5 files changed, 78 insertions(+), 8 deletions(-)diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index bdb2200..c2c4585 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt@@ -4019,6 +4019,13 @@ bridges without forcing it upstream. Note: this removes isolation between devices and may put more devices in an IOMMU group. + disable_10bit_tag=<pci_dev>[; ...] + Specify one or more PCI devices (in the format + specified above) separated by semicolons. + Disable 10-Bit Tag Requester if the peer + device does not support the 10-Bit Tag + Completer.This will make P2P traffic safe.I can't imagine more awkward user experience than such kernel parameter. As a user, I will need to boot the system, hope for the best that system works, write down all PCI device numbers, guess which one doesn't work properly, update grub with new command line argument and reboot the system. Any HW change and this dance should be repeated.
There are already two such PCI parameters with this pattern and they are not that awkward. pci_dev may be specified with either vendor/device IDS or with a path of BDFs (which protects against renumbering). This flag is only useful in P2PDMA traffic, and if the user attempts such a transfer, it prints a warning (see the next patch) with the exact parameter that needs to be added to the command line. This has worked well for disable_acs_redir and was used for resource_alignment before that for quite some time. So save a better suggestion I think this is more than acceptable. Logan