Linux/linux a99b646drivers/pci probe.c quirks.c, include/linux pci.h

PCI: Disable PCIe Relaxed Ordering if unsupported

When bit4 is set in the PCIe Device Control register, it indicates
whether the device is permitted to use relaxed ordering.
On some platforms using relaxed ordering can have performance issues or
due to erratum can cause data-corruption. In such cases devices must avoid
using relaxed ordering.

The patch adds a new flag PCI_DEV_FLAGS_NO_RELAXED_ORDERING to indicate that
Relaxed Ordering (RO) attribute should not be used for Transaction Layer
Packets (TLP) targeted towards these affected root complexes.

This patch checks if there is any node in the hierarchy that indicates that
using relaxed ordering is not safe. In such cases the patch turns off the
relaxed ordering by clearing the capability for this device.

Signed-off-by: Casey Leedom <leedom at chelsio.com>
Signed-off-by: Ding Tianhong <dingtianhong at huawei.com>
Acked-by: Ashok Raj <ashok.raj at intel.com>
Acked-by: Alexander Duyck <alexander.h.duyck at intel.com>
Acked-by: Casey Leedom <leedom at chelsio.com>
Signed-off-by: David S. Miller <davem at davemloft.net>
DeltaFile
+43-0drivers/pci/probe.c
+11-0drivers/pci/quirks.c
+3-0include/linux/pci.h
+57-03 files

UnifiedSplitRaw