linux/drivers/pci
Huacai Chen baec889a81 PCI: loongson: Prevent LS7A MRRS increases
[ Upstream commit 8b3517f88f ]

Except for isochronous-configured devices, software may set
Max_Read_Request_Size (MRRS) to any value up to 4096.  If a device issues a
read request with size greater than the completer's Max_Payload_Size (MPS),
the completer is required to break the response into multiple completions.

Instead of correctly responding with multiple completions to a large read
request, some LS7A Root Ports respond with a Completer Abort.  To prevent
this, the MRRS must be limited to an implementation-specific value.

The OS cannot detect that value, so rely on BIOS to configure MRRS before
booting, and quirk the Root Ports so we never set an MRRS larger than that
BIOS value for any downstream device.

N.B. Hot-added devices are not configured by BIOS, and they power up with
MRRS = 512 bytes, so these devices will be limited to 512 bytes.  If the
LS7A limit is smaller, those hot-added devices may not work correctly, but
per [1], hotplug is not supported with this chipset revision.

[1] https://lore.kernel.org/r/073638a7-ae68-2847-ac3d-29e5e760d6af@loongson.cn

[bhelgaas: commit log]
Link: https://bugzilla.kernel.org/show_bug.cgi?id=216884
Link: https://lore.kernel.org/r/20230201043018.778499-3-chenhuacai@loongson.cn
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-03-11 13:57:35 +01:00
..
controller PCI: loongson: Prevent LS7A MRRS increases 2023-03-11 13:57:35 +01:00
endpoint PCI: pci-epf-test: Register notifier if only core_init_notifier is enabled 2022-12-31 13:14:22 +01:00
hotplug PCI: pciehp: Ignore Link Down/Up caused by error-induced Hot Reset 2022-07-12 16:34:52 +02:00
pcie Revert "PCI/portdrv: Don't disable AER reporting in get_port_device_capability()" 2022-09-05 10:30:06 +02:00
switch PCI: switchtec: Return -EFAULT for copy_to_user() errors 2023-03-10 09:39:37 +01:00
access.c
ats.c
bus.c
ecam.c
host-bridge.c
iov.c PCI/IOV: Enlarge virtfn sysfs name buffer 2023-03-10 09:39:37 +01:00
irq.c PCI: Check for alloc failure in pci_request_irq() 2022-12-31 13:14:24 +01:00
Kconfig
Makefile
mmap.c
msi.c
of.c
p2pdma.c memremap: remove support for external pgmap refcounts 2022-08-17 14:23:43 +02:00
pci-acpi.c PCI/ACPI: Allow D3 only if Root Port can signal and wake from D3 2022-06-09 10:23:04 +02:00
pci-bridge-emul.c PCI: pci-bridge-emul: Add definitions for missing capabilities registers 2022-05-12 12:30:27 +02:00
pci-bridge-emul.h
pci-driver.c
pci-label.c
pci-mid.c
pci-pf-stub.c
pci-stub.c
pci-sysfs.c PCI/sysfs: Fix double free in error path 2023-01-12 11:58:58 +01:00
pci.c PCI: loongson: Prevent LS7A MRRS increases 2023-03-11 13:57:35 +01:00
pci.h PCI: hotplug: Allow marking devices as disconnected during bind/unbind 2023-03-10 09:40:13 +01:00
probe.c
proc.c
quirks.c PCI: Avoid FLR for AMD FCH AHCI adapters 2023-03-10 09:40:13 +01:00
remove.c
rom.c
search.c
setup-bus.c
setup-irq.c
setup-res.c PCI: Sanitise firmware BAR assignments behind a PCI-PCI bridge 2022-10-26 12:34:24 +02:00
slot.c
syscall.c
vc.c
vpd.c
xen-pcifront.c