diff --git a/patch/kernel/archive/mvebu64-5.10/0001-pci-Add-Max-Payload-Size-quirk-for-ASMedia-ASM1062-SATA-controller.patch b/patch/kernel/archive/mvebu64-5.10/0001-pci-Add-Max-Payload-Size-quirk-for-ASMedia-ASM1062-SATA-controller.patch new file mode 100644 index 0000000000..9c0c9d680a --- /dev/null +++ b/patch/kernel/archive/mvebu64-5.10/0001-pci-Add-Max-Payload-Size-quirk-for-ASMedia-ASM1062-SATA-controller.patch @@ -0,0 +1,46 @@ +The ASMedia ASM1062 SATA controller causes an External Abort on +controllers which support Max Payload Size >= 512. It happens with +Aardvark PCIe controller (tested on Turris MOX) and also with DesignWare +controller (armada8k, tested on CN9130-CRB): + + ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300) + ata1.00: ATA-9: WDC WD40EFRX-68WT0N0, 80.00A80, max UDMA/133 + ata1.00: 7814037168 sectors, multi 0: LBA48 NCQ (depth 32), AA + ERROR: Unhandled External Abort received on 0x80000000 at EL3! + ERROR: exception reason=1 syndrome=0x92000210 + PANIC at PC : 0x00000000040273bc + +Limiting Max Payload Size to 256 bytes solves this problem. + +On Turris MOX this problem first appeared when the pci-aardvark +controller started using the pci-emul-bridge API, in commit 8a3ebd8de328 +("PCI: aardvark: Implement emulated root PCI bridge config space"). + +On armada8k this was always a problem because it has HW root bridge. + +Signed-off-by: Marek Behún +Reported-by: Rötti +Cc: Pali Rohár +Cc: stable@vger.kernel.org +Reviewed-by: Pali Rohár +Reviewed-by: Krzysztof Wilczyński +--- + drivers/pci/quirks.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c +index 653660e3ba9e..a561136efb08 100644 +--- a/drivers/pci/quirks.c ++++ b/drivers/pci/quirks.c +@@ -3251,6 +3251,11 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SOLARFLARE, + PCI_DEVICE_ID_SOLARFLARE_SFC4000A_1, fixup_mpss_256); + DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SOLARFLARE, + PCI_DEVICE_ID_SOLARFLARE_SFC4000B, fixup_mpss_256); ++/* ++ * For some reason DECLARE_PCI_FIXUP_HEADER does not work with pci-aardvark ++ * controller. We have to use DECLARE_PCI_FIXUP_EARLY. ++ */ ++DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ASMEDIA, 0x0612, fixup_mpss_256); + + /* + * Intel 5000 and 5100 Memory controllers have an erratum with read completion