State of multiple PCI(e) modules since 2022
Mihai Moldovan
ionic at ionic.de
Sun Oct 27 07:11:57 PDT 2024
Hi
I'm quite sorry for also raising the issue on this list, but this is where it
was last discussed.
For the past 15 years (or longer), I've been using two ath9k-based cards in a
machine, without issues. Granted, they didn't need external firmware, and didn't
use a complicated layered PCI/MHI/QRTR/QMI setup.
It's time to upgrade, so I put a QCA6390 (ath11k) and a WCN7850 (ath12k) card
into a machine, assuming that it will probably work as well (especially since
they are driven by different drivers, although ath12k started as a fork of
ath11k) and quickly noticed that... it doesn't.
Wrote to the ath12k mailing list[0], got zero responses.
Created a bug report on the kernel bug tracker[1], because it's arguably a bug,
switched to the ath.git kernel because that's what other developers work with.
Got zero response, of course. Started debugging this myself and came to the
conclusion that the qrtr stuff tries to bind to both cards with the same
parameters and everything fails.
This isn't made easier by the fact that the documentation for the whole
MHI/QRTR/QMI stack is very sparse (e.g., MHI, mostly documented for
Android-based SoCs, but there's hardly any explanation of what MHI states are,
how they are transitioned and what it all does) to non-existent (e.g., QRTR!)
and especially how they work together on top of each other is arcane magic.
Meanwhile, a different user created another bug report[2] for essentially the
same issue and even this mailing list had another request regarding this just a
few days ago[3].
So far, so suspicious. Unfortunately, I only noticed yesterday that this issue
has been known for almost 2 years now! Robert Mako even hacked together
something[4] to work around it, but that only worked by accident (the
BHI_ERRDBG2 register is actually supposed to be read-only and only some hardware
uses it in the first place, so it can't be regarded as a generic fix).
There were talks[5] about pursuing Qualcomm to modify the firmware, so that a
special register can be used to communicate an instance ID based on the PCI
domain number and the bus number, which currently works for some firmware (and
hence modules) and doesn't work for others, but aside from an RFC, this hasn't
gained any traction. To be fair, this patch looks more like a generic solution
to the issue, although it does require special firmware support. It's not even
all that difficult to port it from other firmware, given that it only requires
reading a host register and exposing the capability.
I'll actually try to pull this patch into my kernel and also port it to ath12k
to see if it would work with my QCA6390 + WCN7850 combination, but even if it
does, it's incredibly frustrating that this issue has been known for so long,
users are actually looking for solutions to it and there seems to be no movement
on it. Even more frustrating is that inquiries regarding this are essentially
all but ignored.
Sorry for the rant, but I really hope that I can get some traction for this again.
Mihai
[0] https://lists.infradead.org/pipermail/ath12k/2024-October/003915.html
[1] https://bugzilla.kernel.org/show_bug.cgi?id=219380
[2] https://bugzilla.kernel.org/show_bug.cgi?id=218480
[3] https://lists.infradead.org/pipermail/ath11k/2024-October/006467.html
[4]
https://patchwork.kernel.org/project/linux-wireless/patch/20221105194943.826847-2-robimarko@gmail.com/
[5]
https://patchwork.kernel.org/project/linux-wireless/patch/20230111170033.32454-1-kvalo@kernel.org/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/ath11k/attachments/20241027/e9a2cb50/attachment.sig>
More information about the ath11k
mailing list