Device set same 256 bytes maximum read request size equal MAX_READ_REQ_SIZE was find some issue with HDMI scrambled picture and nvme devices at intensive writing... [ 4.798971] nvme 0000:01:00.0: fix MRRS from 512 to 256 This quirk setup same MRRS if we try solve this problem with pci=pcie_bus_perf kernel command line param Signed-off-by: Artem Lapkin <art@xxxxxxxxxx> --- drivers/pci/controller/dwc/pci-meson.c | 27 ++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/drivers/pci/controller/dwc/pci-meson.c b/drivers/pci/controller/dwc/pci-meson.c index 686ded034f22..e2d40e5c2661 100644 --- a/drivers/pci/controller/dwc/pci-meson.c +++ b/drivers/pci/controller/dwc/pci-meson.c @@ -466,6 +466,33 @@ static int meson_pcie_probe(struct platform_device *pdev) return ret; } +static void meson_pcie_quirk(struct pci_dev *dev) +{ + int mrrs; + + /* no need quirk */ + if (pcie_bus_config != PCIE_BUS_DEFAULT) + return; + + /* no need for root bus */ + if (pci_is_root_bus(dev->bus)) + return; + + mrrs = pcie_get_readrq(dev); + + /* + * set same 256 bytes maximum read request size equal MAX_READ_REQ_SIZE + * was find some issue with HDMI scrambled picture and nvme devices + * at intensive writing... + */ + + if (mrrs != MAX_READ_REQ_SIZE) { + dev_info(&dev->dev, "fix MRRS from %d to %d\n", mrrs, MAX_READ_REQ_SIZE); + pcie_set_readrq(dev, MAX_READ_REQ_SIZE); + } +} +DECLARE_PCI_FIXUP_ENABLE(PCI_ANY_ID, PCI_ANY_ID, meson_pcie_quirk); + static const struct of_device_id meson_pcie_of_match[] = { { .compatible = "amlogic,axg-pcie", -- 2.25.1