]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
PCI: Add Extended Tag + MRRS quirk for Xeon 6
authorIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Tue, 10 Jun 2025 11:48:02 +0000 (14:48 +0300)
committerBjorn Helgaas <bhelgaas@google.com>
Mon, 11 Aug 2025 20:00:51 +0000 (15:00 -0500)
commita22250fe933dbd1da9a9683506ae3f489ccc579d
treeb4fcf93f34778883925cff06901250812602b1a3
parentc763fae8c4231e426033f62c21be60db4b6659a9
PCI: Add Extended Tag + MRRS quirk for Xeon 6

When bifurcated to x2, Xeon 6 Root Port performance is sensitive to the
configuration of Extended Tags, Max Read Request Size (MRRS), and 10-Bit
Tag Requester (note: there is currently no 10-Bit Tag support in the
kernel). While those can be configured to the recommended values by FW,
kernel may decide to overwrite the initial values.

Add a quirk that disallows enabling Extended Tags and setting MRRS
larger than 128B for devices under Xeon 6 Root Ports if the Root Port
is bifurcated to x2. Use the host bridge's enable_device hook to
overwrite MRRS if it's set to >128B for the device to be enabled.

The earlier attempts to implement this quirk polluted PCI core code with
the checks necessary to support this quirk. Using the enable_device hook
keeps the quirk well-contained, away from the PCI core code.

Suggested-by: Lukas Wunner <lukas@wunner.de>
Link: https://cdrdv2.intel.com/v1/dl/getContent/837176
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
[bhelgaas: 2x -> x2, rename quirk]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Lukas Wunner <lukas@wunner.de>
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Link: https://patch.msgid.link/20250610114802.7460-1-ilpo.jarvinen@linux.intel.com
arch/x86/pci/fixup.c