Thread (18 messages) 18 messages, 4 authors, 2021-09-14

Re: QCA6174 pcie wifi: Add pci quirks

From: Bjorn Helgaas <helgaas@kernel.org>
Date: 2021-09-14 21:11:28
Also in: lkml

On Fri, Apr 09, 2021 at 11:26:33AM +0200, Ingmar Klein wrote:
Edit: Retry, as I did not consider, that my mail-client would make this
party html.

Dear maintainers,
I recently encountered an issue on my Proxmox server system, that
includes a Qualcomm QCA6174 m.2 PCIe wifi module.
https://deviwiki.com/wiki/AIRETOS_AFX-QCA6174-NX

On system boot and subsequent virtual machine start (with passed-through
QCA6174), the VM would just freeze/hang, at the point where the ath10k
driver loads.
Quick search in the proxmox related topics, brought me to the following
discussion, which suggested a PCI quirk entry for the QCA6174 in the kernel:
https://forum.proxmox.com/threads/pcie-passthrough-freezes-proxmox.27513/

I then went ahead, got the Proxmox kernel source (v5.4.106) and applied
the attached patch.
Effect was as hoped, that the VM hangs are now gone. System boots and
runs as intended.

Judging by the existing quirk entries for Atheros, I would think, that
my proposed "fix" could be included in the vanilla kernel.
As far as I saw, there is no entry yet, even in the latest kernel sources.

Thank you very much!
Best regards,
Ingmar
I wrote a commit log and applied this to pci/virtualization for v5.16
with Pali's reviewed-by and your signed-off-by from
https://lore.kernel.org/r/408e5b45-3eaa-fa13-318d-48f7d1ecdacf@web.de (local)

    PCI: Mark Atheros QCA6174 to avoid bus reset
    
    When passing the Atheros QCA6174 through to a virtual machine, the VM hangs
    at the point where the ath10k driver loads.
    
    Add a quirk to avoid bus resets on this device, which avoids the hang.
    
    [bhelgaas: commit log]
    Link: https://lore.kernel.org/r/08982e05-b6e8-5a8d-24ab-da1488ee50a8@web.de (local)
    Signed-off-by: Ingmar Klein [off-list ref]
    Signed-off-by: Bjorn Helgaas [off-list ref]
    Reviewed-by: Pali Rohár [off-list ref]
    Cc: stable@vger.kernel.org

Thank you!
quoted hunk ↗ jump to hunk
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 706f27a86a8e..ecfe80ec5b9c 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -3584,6 +3584,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0032, quirk_no_bus_reset);
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x003c, quirk_no_bus_reset);
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0033, quirk_no_bus_reset);
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0034, quirk_no_bus_reset);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x003e, quirk_no_bus_reset);
 
 /*
  * Root port on some Cavium CN8xxx chips do not successfully complete a bus
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help