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. Thanks