On 2021-07-23 5:32 a.m., Leon Romanovsky wrote: > On Fri, Jul 23, 2021 at 07:06:41PM +0800, Dongdong Liu wrote: >> 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 <liudongdong3@xxxxxxxxxx> >> --- >> 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