regressions.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
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

  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).