Re: [PATCH] ath10k: qmi: Skip host capability request for Xiaomi Poco F1
From: Amit Pundir
Date: Mon Sep 21 2020 - 06:39:05 EST
On Thu, 17 Sep 2020 at 21:35, Bjorn Andersson
<bjorn.andersson@xxxxxxxxxx> wrote:
>
> On Thu 17 Sep 02:41 CDT 2020, Amit Pundir wrote:
>
> > Workaround to get WiFi working on Xiaomi Poco F1 (sdm845)
> > phone. We get a non-fatal QMI_ERR_MALFORMED_MSG_V01 error
> > message in ath10k_qmi_host_cap_send_sync(), but we can still
> > bring up WiFi services successfully on AOSP if we ignore it.
> >
> > We suspect either the host cap is not implemented or there
> > may be firmware specific issues. Firmware version is
> > QC_IMAGE_VERSION_STRING=WLAN.HL.2.0.c3-00257-QCAHLSWMTPLZ-1
> >
> > qcom,snoc-host-cap-8bit-quirk didn't help. If I use this
> > quirk, then the host capability request does get accepted,
> > but we run into fatal "msa info req rejected" error and
> > WiFi interface doesn't come up.
> >
>
> What happens if you skip sending the host-cap message? I had one
> firmware version for which I implemented a
> "qcom,snoc-host-cap-skip-quirk".
>
> But testing showed that the link was pretty unusable - pushing any real
> amount of data would cause it to silently stop working - and I realized
> that I could use the linux-firmware wlanmdsp.mbn instead, which works
> great on all my devices...
I skipped the ath10k_qmi_host_cap_send_sync block altogether
(if that is what you meant by qcom,snoc-host-cap-skip-quirk) and
so far did not run into any issues with youtube auto-playback loop
(3+ hours and counting). Does that count as a valid use case?
Otherwise let me know how could I reproduce a reasonable test
setup?
>
> > Attempts are being made to debug the failure reasons but no
> > luck so far. Hence this device specific workaround instead
> > of checking for QMI_ERR_MALFORMED_MSG_V01 error message.
> > Tried ath10k/WCN3990/hw1.0/wlanmdsp.mbn from the upstream
> > linux-firmware project but it didn't help and neither did
> > building board-2.bin file from stock bdwlan* files.
> >
>
> "Didn't work" as in the wlanmdsp.mbn from linux-firmware failed to load
> or some laer problem?
While using the wlanmdsp.mbn from linux-firmware, I run into
the following crash 4 times before tqftpserv service gets killed
eventually:
[ 46.504502] qcom-q6v5-mss 4080000.remoteproc: fatal error received:
dog_virtual_root.c:89:User-PD grace timer expired for wlan_process
(ASID: 1)
[ 46.504527] remoteproc remoteproc0: crash detected in
4080000.remoteproc: type fatal error
[ 46.504558] remoteproc remoteproc0: handling crash #1 in 4080000.remoteproc
[ 46.504563] remoteproc remoteproc0: recovering 4080000.remoteproc
[ 56.542400] 4080000.remoteproc:glink-edge: intent request timed out
[ 56.644617] qcom-q6v5-mss 4080000.remoteproc: port failed halt
[ 56.652321] remoteproc remoteproc0: stopped remote processor
4080000.remoteproc
[ 59.017963] qcom-q6v5-mss 4080000.remoteproc: MBA booted without
debug policy, loading mpss
[ 61.514552] remoteproc remoteproc0: remote processor
4080000.remoteproc is now up
<.... snip ....>
[ 214.161946] failed to send del client cmd
[ 214.161952] failed while handling packet from 1:16689
[ 214.185826] failed to send del client cmd
[ 214.185832] failed while handling packet from 1:16688
[ 214.201951] failed to send del client cmd
<.... snip ....>
[ 219.682148] failed to send del client cmd
[ 219.682154] failed while handling packet from 1:16394
[ 219.714707] init: Service 'tqftpserv' (pid 321) received signal 6
oneshot service took 215.852005 seconds in background
[ 219.714754] init: Sending signal 9 to service 'tqftpserv' (pid 321)
process group...
Regards,
Amit Pundir
>
> Regards,
> Bjorn
>
> > This workaround will be removed once we have a viable fix.
> > Thanks to postmarketOS guys for catching this.
> >
> > Signed-off-by: Amit Pundir <amit.pundir@xxxxxxxxxx>
> > ---
> > Device-tree for Xiaomi Poco F1(Beryllium) got merged in
> > qcom/arm64-for-5.10 last week
> > https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git/commit/?id=77809cf74a8c
> >
> > drivers/net/wireless/ath/ath10k/qmi.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/wireless/ath/ath10k/qmi.c b/drivers/net/wireless/ath/ath10k/qmi.c
> > index 0dee1353d395..37c5350eb8b1 100644
> > --- a/drivers/net/wireless/ath/ath10k/qmi.c
> > +++ b/drivers/net/wireless/ath/ath10k/qmi.c
> > @@ -651,7 +651,8 @@ static int ath10k_qmi_host_cap_send_sync(struct ath10k_qmi *qmi)
> >
> > /* older FW didn't support this request, which is not fatal */
> > if (resp.resp.result != QMI_RESULT_SUCCESS_V01 &&
> > - resp.resp.error != QMI_ERR_NOT_SUPPORTED_V01) {
> > + resp.resp.error != QMI_ERR_NOT_SUPPORTED_V01 &&
> > + !of_machine_is_compatible("xiaomi,beryllium")) { /* Xiaomi Poco F1 workaround */
> > ath10k_err(ar, "host capability request rejected: %d\n", resp.resp.error);
> > ret = -EINVAL;
> > goto out;
> > --
> > 2.7.4
> >