Re: [RFC PATCH] firewire: ohci: disable MSI on Agere/LSI FW643 rev 8
Takashi Sakamoto <[email protected]> Mon, 13 Jul 2026 19:45:40 +0900
| Newsgroups | gmane.linux.kernel.firewire.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi, On Sat, Jul 11, 2026 at 10:52:22AM -0400, Tchirek Afra wrote: > Sent as RFC because the failure is so far characterized on a single > machine; if scoping the quirk to Apple systems is preferred, I am > happy to rework it. When I faced the issue caused by a specific combination of hardware[1], I utilized CPU feature flag (X86_FEATURE_ZEN), the PCI ID for the specific 1394 OHCI hardware (PCI_VENDOR_ID_VIA/PCI_DEVICE_ID_VIA_VT630X), and the PCI ID for bus bridge (PCI_VENDOR_ID_ASMEDIA/PCI_DEVICE_ID_ASMEDIA_ASM108X). I don't know exactly how to predict your issue on runtime, however the combination of hardware ID check would be more preferable change than the change applied widely. Does the machine (Apple MacBookPro 9.1) have any specific PCIe bus hardware? [1]https://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394.git/commit/?id=ac9184fbb847 Regards Takashi Sakamoto > The system also reports an incomplete firmware DMAR table: > > DMAR-IR: [Firmware Bug]: ioapic 2 has no mapping iommu, > interrupt remapping will be disabled > > Therefore, a platform-specific interaction cannot yet be excluded. > > Tested on: > Apple MacBookPro9,1, Debian 13, kernel 6.12.85+deb13-amd64, > default kernel parameters (IOMMU enabled) > 03:00.0 FireWire (IEEE 1394) [0c00]: LSI Corporation FW643 [TrueFire] > PCIe 1394b Controller [11c1:5901] (rev 08) > > Failure signature while MSI is enabled: > IntEvent = 0x04738071 (busReset, selfIDComplete, RQPkt pending) > firewire_ohci count in /proc/interrupts frozen (78079 -> 78079 / 4s) > PhyControl register reads and writes keep completing > > During all three tests the local recovery scripts deployed on this > machine were present but took no action (their logs show only > "already healthy"), so the results are attributable to the quirk > alone. > > With firewire_ohci.quirks=0x10 (INTx): > cold boot enumeration: pass (device visible within 7s) > cable unplug/replug re-enumeration: pass (about 1s) > suspend/resume rediscovery: pass > > Based on mainline commit dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3. > > drivers/firewire/ohci.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c > index 8153d62..175d6ad 100644 > --- a/drivers/firewire/ohci.c > +++ b/drivers/firewire/ohci.c > @@ -3624,6 +3624,10 @@ static int pci_probe(struct pci_dev *dev, > ohci->quirks = ohci_quirks[i].flags; > break; > } > + if (dev->vendor == PCI_VENDOR_ID_ATT && > + dev->device == PCI_DEVICE_ID_AGERE_FW643 && > + dev->revision == 8) > + ohci->quirks |= QUIRK_NO_MSI; > if (param_quirks) > ohci->quirks = param_quirks; > > -- > 2.47.3