From: Carl Huang <cjhuang@codeaurora.org>
To: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Cc: Kalle Valo <kvalo@codeaurora.org>,
Loic Poulain <loic.poulain@linaro.org>,
ath11k@lists.infradead.org,
linux-arm-msm <linux-arm-msm@vger.kernel.org>,
linux-wireless@vger.kernel.org, regressions@lists.linux.dev
Subject: Re: [regression] mhi: ath11k resume fails on some devices
Date: Thu, 23 Sep 2021 17:26:56 +0800 [thread overview]
Message-ID: <6912b6840858c0554922c01a0f9c47b8@codeaurora.org> (raw)
In-Reply-To: <20210923085926.GD6083@thinkpad>
On 2021-09-23 16:59, Manivannan Sadhasivam wrote:
> On Thu, Sep 23, 2021 at 04:34:43PM +0800, Carl Huang wrote:
>> On 2021-09-17 01:19, Manivannan Sadhasivam wrote:
>> > On Thu, Sep 16, 2021 at 07:42:02PM +0300, Kalle Valo wrote:
>> > > Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> writes:
>> > >
>> > > > On Thu, Sep 16, 2021 at 01:18:22PM +0200, Loic Poulain wrote:
>> > > >> Le jeu. 16 sept. 2021 à 13:12, Manivannan Sadhasivam <
>> > > >> manivannan.sadhasivam@linaro.org> a écrit :
>> > > >>
>> > > >
>> > > > [...]
>> > > >
>> > > >> > If things seems to work fine without that patch, then it implies that
>> > > >> > setting M0
>> > > >> > state works during resume. I think we should just revert that patch.
>> > > >> >
>> > > >> > Loic, did that patch fix any issue for you or it was a cosmetic fix only?
>> > > >>
>> > > >>
>> > > >> It fixes sdx modem resuming issue, without that we don’t know modem needs
>> > > >> to be reinitialized.
>> > > >>
>> > > >
>> > > > Okay. Then in that case, the recovery mechanism has to be added to the ath11k
>> > > > MHI controller.
>> > >
>> > > What does that mean in practise, do you have any pointers or
>> > > examples? I
>> > > have no clue what you are proposing :)
>> > >
>> >
>> > Take a look at the mhi_pci_recovery_work() function below:
>> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/bus/mhi/pci_generic.c#n610
>> >
>> > You need to implement something similar that basically powers up the MHI
>> > endpoint (QCA6390) in case pm_resume() fails. At minimum, you need to
>> > call
>> > below functions:
>> >
>> > # Check if the device is powered on. If yes, then power it down to bring
>> > it back
>> > mhi_power_down()
>> > mhi_unprepare_after_power_down()
>> >
>> > # Power up the device
>> > mhi_prepare_for_power_up()
>> > mhi_sync_power_up()
>> >
>> > This implies that the WLAN device has been powered off during suspend,
>> > so the
>> > resume fails and we are bringing the device back to working state.
>> >
>> This is fine for platform which doesn't provide power supply during
>> suspend.
>> But NUC has power supply in suspend state.
>
> If NUC retains power supply during suspend then it should work with
> that commit.
> During resume, the device is expected to be in M3 state and that's what
> the
> commit verifies.
>
> If the device is in a different state, then most likely the device have
> power
> cycled.
>
But the tricky thing here is that upstream QCA6390 doesn't have recovery
mechanism to download
firmware again, so QCA6390 has no way to work after a power cycle.
>> QCA6390 on NUC works after just reverting this commit also proves NUC
>> has
>> power supply in
>> suspend state.
>>
>
> That's because we allowed the device to be in any state during resume
> and if it
> responds to the M0 transition it worked.
>
>> The reason is MHI-STATUS register can't be read somehow in M3 state on
>> NUC.
>
> No, that's not correct.
>
>> Does the MHI spec state that MHI-STATUS register can be read in M3
>> state?
>>
>
> Yes, all the MHI registers are accessible in all states. During M3,
> both MHI
> host and device (if supported) will transition to D3 Cold. Then during
> resume,
> host will switch to D0 link state and will also notify the device to
> enter D0.
>
> For aid debugging, please see the state the device is in during
> mhi_pm_resume().
> You can use below diff:
>
> diff --git a/drivers/bus/mhi/core/pm.c b/drivers/bus/mhi/core/pm.c
> index fb99e3727155..482d55dd209e 100644
> --- a/drivers/bus/mhi/core/pm.c
> +++ b/drivers/bus/mhi/core/pm.c
> @@ -898,6 +898,9 @@ int mhi_pm_resume(struct mhi_controller *mhi_cntrl)
> if (MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state))
> return -EIO;
>
> + dev_info(dev, "Device state: %s\n",
> + TO_MHI_STATE_STR(mhi_get_mhi_state(mhi_cntrl)));
> +
> if (mhi_get_mhi_state(mhi_cntrl) != MHI_STATE_M3)
> return -EINVAL;
>
>
> Thanks,
> Mani
next prev parent reply other threads:[~2021-09-23 9:26 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-16 8:00 [regression] mhi: ath11k resume fails on some devices Kalle Valo
2021-09-16 10:18 ` Loic Poulain
2021-09-16 11:12 ` Manivannan Sadhasivam
[not found] ` <CAMZdPi94607mZorp+Zmkw3seWXak6p9Jr05CQ5hhfgKQoG8n7Q@mail.gmail.com>
2021-09-16 16:35 ` Manivannan Sadhasivam
2021-09-16 16:42 ` Kalle Valo
2021-09-16 17:19 ` Manivannan Sadhasivam
2021-09-23 8:34 ` Carl Huang
2021-09-23 8:59 ` Manivannan Sadhasivam
2021-09-23 9:26 ` Carl Huang [this message]
2021-09-23 10:50 ` Loic Poulain
2021-09-24 9:07 ` Kalle Valo
2021-09-24 9:57 ` Manivannan Sadhasivam
2021-10-07 9:55 ` Kalle Valo
2021-10-21 10:01 ` Manivannan Sadhasivam
2021-09-24 8:36 ` Kalle Valo
2021-09-24 9:43 ` Loic Poulain
2021-09-24 10:00 ` Manivannan Sadhasivam
2021-10-07 9:48 ` Kalle Valo
2021-10-19 12:12 ` Kalle Valo
2021-10-21 10:03 ` Manivannan Sadhasivam
2021-11-12 11:36 ` Thorsten Leemhuis
2021-11-18 17:41 ` Manivannan Sadhasivam
2021-12-01 7:34 ` Thorsten Leemhuis
2021-09-25 17:40 ` Thorsten Leemhuis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6912b6840858c0554922c01a0f9c47b8@codeaurora.org \
--to=cjhuang@codeaurora.org \
--cc=ath11k@lists.infradead.org \
--cc=kvalo@codeaurora.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=loic.poulain@linaro.org \
--cc=manivannan.sadhasivam@linaro.org \
--cc=regressions@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).