All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] PCI: Avoid FLR for AMD Matisse HD Audio and USB Controllers
@ 2020-05-16 13:37 Marcos Scriven
  2020-05-16 15:19 ` Marcos Scriven
  2020-05-18 16:17 ` Bjorn Helgaas
  0 siblings, 2 replies; 7+ messages in thread
From: Marcos Scriven @ 2020-05-16 13:37 UTC (permalink / raw)
  To: linux-pci

This patch fixes an FLR bug on the following two devices:

AMD Matisse HD Audio Controller 0x1487
AMD Matisse USB 3.0 Host Controller 0x149c

As there was already such a quirk for an Intel network device, I have
renamed that method and updated the comments, trying to make it
clearer what the specific original devices that were affected are
(based on the commit message this was original done:
https://git.thm.de/mhnn55/eco32-linux-ba/commit/f65fd1aa4f9881d5540192d11f7b8ed2fec936db).

I have ordered them by hex product ID.

I have verified this works on a X570 I AORUS PRO WIFI (rev. 1.0) motherboard.


From 651176ab164ae51e37d5bb86f5948da558744930 Mon Sep 17 00:00:00 2001
From: Marcos Scriven <marcos@scriven.org>
Date: Sat, 16 May 2020 14:23:26 +0100
Subject: [PATCH] PCI: Avoid FLR for:

    AMD Matisse HD Audio Controller 0x1487
    AMD Matisse USB 3.0 Host Controller 0x149c

These devices advertise a Function Level Reset (FLR) capability, but hang
when an FLR is triggered.

To reproduce the problem, attach the device to a VM, then detach and try to
attach again.

Add a quirk to prevent the use of FLR on these devices.

Signed-off-by: Marcos Scriven <marcos@scriven.org>
---
 drivers/pci/quirks.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 28c9a2409c50..ff310f0cac22 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -5129,13 +5129,23 @@ static void quirk_intel_qat_vf_cap(struct pci_dev *pdev)
 }
 DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x443, quirk_intel_qat_vf_cap);

-/* FLR may cause some 82579 devices to hang */
-static void quirk_intel_no_flr(struct pci_dev *dev)
+/*
+ * FLR may cause the following to devices to hang:
+ *
+ * AMD Starship/Matisse HD Audio Controller 0x1487
+ * AMD Matisse USB 3.0 Host Controller 0x149c
+ * Intel 82579LM Gigabit Ethernet Controller 0x1502
+ * Intel 82579V Gigabit Ethernet Controller 0x1503
+ *
+ */
+static void quirk_no_flr(struct pci_dev *dev)
 {
     dev->dev_flags |= PCI_DEV_FLAGS_NO_FLR_RESET;
 }
-DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1502, quirk_intel_no_flr);
-DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1503, quirk_intel_no_flr);
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x1487, quirk_no_flr);
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x149c, 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);

 static void quirk_no_ext_tags(struct pci_dev *pdev)
 {
--
2.25.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-05-21  7:06 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-16 13:37 [PATCH] PCI: Avoid FLR for AMD Matisse HD Audio and USB Controllers Marcos Scriven
2020-05-16 15:19 ` Marcos Scriven
2020-05-18 16:17 ` Bjorn Helgaas
2020-05-18 19:26   ` Marcos Scriven
2020-05-20  9:41     ` Marcos Scriven
2020-05-20 23:29       ` Bjorn Helgaas
2020-05-21  7:05         ` Marcos Scriven

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.