From f45b0dbd6b369e7d390411ea871990aadc4e63dd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C5=81ukasz=20Kolator?= <lukasz.kolator@enigma.com.pl>
Date: Fri, 18 Dec 2020 14:14:30 +0100
Subject: [PATCH] UBUNTU: SAUCE: PCI: Avoid FLR for AMD FCH SATA Controller
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The AMD FCH SATA Controller hang when an FLR is triggered so prevent to
use FLR on this device, same problem like in BUG:
https://bugs.launchpad.net/bugs/1865988
The problem occurred when attempting to passthrough SATA Controller to VM.
System becomes unresponsive and require a hard reset:
vfio-pci 0000:84:00.0: not ready 1023ms after FLR; waiting
vfio-pci 0000:84:00.0: not ready 2047ms after FLR; waiting
vfio-pci 0000:84:00.0: not ready 4095ms after FLR; waiting
vfio-pci 0000:84:00.0: not ready 8191ms after FLR; waiting
vfio-pci 0000:84:00.0: not ready 16383ms after FLR; waiting
vfio-pci 0000:84:00.0: not ready 32767ms after FLR; waiting
vfio-pci 0000:84:00.0: not ready 65535ms after FLR; giving up
watchdog: BUG: soft lockup - CPU#1 stuck for 23s! [tee:3691]
Tested on GIGABYTE R152-Z30-00/MZ32-AR0-00, BIOS R19 06/17/2020, AMD
EPYC 7402P 24-Core Processor
Signed-off-by: Łukasz Kolator <lukasz.kolator@enigma.com.pl>
---
drivers/pci/quirks.c | 2 ++
1 file changed, 2 insertions(+)
@@ -5182,6 +5182,7 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x443, quirk_intel_qat_vf_cap);
* AMD Starship/Matisse HD Audio Controller 0x1487
* AMD Starship USB 3.0 Host Controller 0x148c
* AMD Matisse USB 3.0 Host Controller 0x149c
+ * AMD FCH SATA Controller 0x7901
* Intel 82579LM Gigabit Ethernet Controller 0x1502
* Intel 82579V Gigabit Ethernet Controller 0x1503
*
@@ -5193,6 +5194,7 @@ static void quirk_no_flr(struct pci_dev *dev)
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x1487, quirk_no_flr);
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x148c, quirk_no_flr);
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x149c, quirk_no_flr);
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x7901, quirk_no_flr);
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1502, quirk_no_flr);
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1503, quirk_no_flr);
--
2.25.1