linux/drivers/pci
Huacai Chen 8b3517f88f PCI: loongson: Prevent LS7A MRRS increases
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>
2023-02-01 12:49:29 -06:00
..
controller PCI: loongson: Prevent LS7A MRRS increases 2023-02-01 12:49:29 -06:00
endpoint Merge branch 'remotes/lorenzo/pci/misc' 2022-12-10 10:36:40 -06:00
hotplug PCI: pciehp: Enable Command Completed Interrupt only if supported 2022-12-07 08:27:20 -06:00
msi PCI/MSI: Provide pci_ims_alloc/free_irq() 2022-12-05 22:22:35 +01:00
pcie PCI/portdrv: Prevent LS7A Bus Master clearing on shutdown 2023-02-01 12:05:28 -06:00
switch
access.c
ats.c
bus.c PCI: Skip allocate_resource() if too little space available 2022-12-10 10:31:47 -06:00
doe.c PCI/DOE: Fix maximum data object length miscalculation 2022-11-16 14:26:46 -06:00
ecam.c
host-bridge.c
iov.c
irq.c PCI: Check for alloc failure in pci_request_irq() 2022-11-21 16:55:18 -06:00
Kconfig genirq: Get rid of GENERIC_MSI_IRQ_DOMAIN 2022-11-17 15:15:20 +01:00
Makefile
mmap.c
of.c
p2pdma.c for-6.2/block-2022-12-08 2022-12-13 10:43:59 -08:00
pci-acpi.c
pci-bridge-emul.c
pci-bridge-emul.h
pci-driver.c
pci-label.c
pci-mid.c
pci-pf-stub.c
pci-stub.c
pci-sysfs.c pci-v6.2-changes 2022-12-14 09:54:10 -08:00
pci.c PCI: loongson: Prevent LS7A MRRS increases 2023-02-01 12:49:29 -06:00
pci.h
probe.c pci-v6.2-changes 2022-12-14 09:54:10 -08:00
proc.c
quirks.c
remove.c
rom.c
search.c
setup-bus.c
setup-irq.c
setup-res.c
slot.c
syscall.c
vc.c
vgaarb.c
vpd.c
xen-pcifront.c