public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Bhaumik Bhatt <bbhatt@codeaurora.org>
To: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Cc: linux-arm-msm@vger.kernel.org, hemantk@codeaurora.org,
	jhugo@codeaurora.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 04/12] bus: mhi: core: Move to SYS_ERROR regardless of RDDM capability
Date: Fri, 30 Oct 2020 12:29:59 -0700	[thread overview]
Message-ID: <59d5abb24e06920311719862f6e749a1@codeaurora.org> (raw)
In-Reply-To: <20201030135218.GG3818@Mani-XPS-13-9360>

Hi Mani,

On 2020-10-30 06:52, Manivannan Sadhasivam wrote:
> On Thu, Oct 29, 2020 at 09:10:49PM -0700, Bhaumik Bhatt wrote:
>> In some cases, the entry of device to RDDM execution environment
>> can occur after a significant amount of time has elapsed and a
>> SYS_ERROR state change event has already arrived.
> 
> I don't quite understand this statement. Can you elaborate? This 
> doesn't
> relate to what the patch is doing.
> 
So the mhi_intvec_threaded_handler() (BHI) MSI that fires to switch the 
EE
to RDDM may come much later than the SYS_ERROR state change event from 
the
control event ring. We currently, do not move to MHI_PM_SYS_ERR_DETECT
state if RDDM is supported i.e. mhi_cntrl->rddm_image is set. However, 
it
means that we will remain in an "active" MHI PM state for the duration 
of
time until RDDM EE (BHI) MSI comes in. We have seen it take 5 seconds in
some bad cases.
>> This can result
>> in scenarios where MHI controller and client drivers are unaware
>> of the error state of the device. Remove the check for rddm_image
>> when processing the SYS_ERROR state change as it is present in
>> mhi_pm_sys_err_handler() already and prevent further activity
>> until the expected RDDM execution environment change occurs or
>> the controller driver decides further action.
>> 
>> Signed-off-by: Bhaumik Bhatt <bbhatt@codeaurora.org>
>> ---
>>  drivers/bus/mhi/core/main.c | 12 ++++--------
>>  1 file changed, 4 insertions(+), 8 deletions(-)
>> 
>> diff --git a/drivers/bus/mhi/core/main.c b/drivers/bus/mhi/core/main.c
>> index 2cff5dd..1f32d67 100644
>> --- a/drivers/bus/mhi/core/main.c
>> +++ b/drivers/bus/mhi/core/main.c
>> @@ -733,19 +733,15 @@ int mhi_process_ctrl_ev_ring(struct 
>> mhi_controller *mhi_cntrl,
>>  				break;
>>  			case MHI_STATE_SYS_ERR:
>>  			{
>> -				enum mhi_pm_state new_state;
>> -
>> -				/* skip SYS_ERROR handling if RDDM supported */
>> -				if (mhi_cntrl->ee == MHI_EE_RDDM ||
>> -				    mhi_cntrl->rddm_image)
>> -					break;
>> +				enum mhi_pm_state state = MHI_PM_STATE_MAX;
>> 
>>  				dev_dbg(dev, "System error detected\n");
>>  				write_lock_irq(&mhi_cntrl->pm_lock);
>> -				new_state = mhi_tryset_pm_state(mhi_cntrl,
>> +				if (mhi_cntrl->ee != MHI_EE_RDDM)
> 
> But you are still checking for RDDM EE?
> 
> Please explain why you want to skip RDDM check.
> 
> Thanks,
> Mani
> 
Yes, the point is to only remove the mhi_cntrl->rddm_image check but 
still
retain the "has EE moved to become RDDM" check. This allows us to avoid 
any
extra processing of moving states to MHI_PM_SYS_ERR_DETECT state if it 
may
be unnecessary (EE already changed to RDDM). The mhi_cntrl->rddm_image 
is
also present in mhi_pm_sys_err_handler(mhi_cntrl) function so it is not
needed here.
>> +					state = mhi_tryset_pm_state(mhi_cntrl,
>>  							MHI_PM_SYS_ERR_DETECT);
>>  				write_unlock_irq(&mhi_cntrl->pm_lock);
>> -				if (new_state == MHI_PM_SYS_ERR_DETECT)
>> +				if (state == MHI_PM_SYS_ERR_DETECT)
>>  					mhi_pm_sys_err_handler(mhi_cntrl);
>>  				break;
>>  			}
>> --
>> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora 
>> Forum,
>> a Linux Foundation Collaborative Project
>> 

This is why I mention the word RDDM "capability". If controller supports 
RDDM
is not enough to skip the move to MHI_PM_SYS_ERR_DETECT state as it is 
safer
to move and stop client drivers from pushing data.

Thanks,
Bhaumik
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora 
Forum,
a Linux Foundation Collaborative Project

  reply	other threads:[~2020-10-30 19:30 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-30  4:10 [PATCH v3 00/12] Bug fixes and improvements for MHI power operations Bhaumik Bhatt
2020-10-30  4:10 ` [PATCH v3 01/12] bus: mhi: core: Use appropriate names for firmware load functions Bhaumik Bhatt
2020-10-30 13:29   ` Manivannan Sadhasivam
2020-10-30  4:10 ` [PATCH v3 02/12] bus: mhi: core: Move to using high priority workqueue Bhaumik Bhatt
2020-10-30 13:35   ` Manivannan Sadhasivam
2020-10-30  4:10 ` [PATCH v3 03/12] bus: mhi: core: Skip device wake in error or shutdown states Bhaumik Bhatt
2020-10-30  4:10 ` [PATCH v3 04/12] bus: mhi: core: Move to SYS_ERROR regardless of RDDM capability Bhaumik Bhatt
2020-10-30 13:52   ` Manivannan Sadhasivam
2020-10-30 19:29     ` Bhaumik Bhatt [this message]
2020-10-30  4:10 ` [PATCH v3 05/12] bus: mhi: core: Prevent sending multiple RDDM entry callbacks Bhaumik Bhatt
2020-10-30 13:56   ` Manivannan Sadhasivam
2020-10-30  4:10 ` [PATCH v3 06/12] bus: mhi: core: Move to an error state on any firmware load failure Bhaumik Bhatt
2020-10-30 14:00   ` Manivannan Sadhasivam
2020-10-30  4:10 ` [PATCH v3 07/12] bus: mhi: core: Use appropriate label in firmware load handler API Bhaumik Bhatt
2020-10-30 14:00   ` Manivannan Sadhasivam
2020-10-30  4:10 ` [PATCH v3 08/12] bus: mhi: core: Move to an error state on mission mode failure Bhaumik Bhatt
2020-10-30  4:10 ` [PATCH v3 09/12] bus: mhi: core: Check for IRQ availability during registration Bhaumik Bhatt
2020-10-30 14:02   ` Manivannan Sadhasivam
2020-10-30  4:10 ` [PATCH v3 10/12] bus: mhi: core: Separate system error and power down handling Bhaumik Bhatt
2020-10-30 14:06   ` Manivannan Sadhasivam
2020-10-30 19:34     ` Bhaumik Bhatt
2020-10-31  6:54       ` Manivannan Sadhasivam
2020-11-02 16:52         ` Bhaumik Bhatt
2020-10-30  4:10 ` [PATCH v3 11/12] bus: mhi: core: Mark and maintain device states early on after power down Bhaumik Bhatt
2020-10-30 14:10   ` Manivannan Sadhasivam
2020-10-30  4:10 ` [PATCH v3 12/12] bus: mhi: core: Remove MHI event ring IRQ handlers when powering down Bhaumik Bhatt
2020-10-30 14:11   ` Manivannan Sadhasivam

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=59d5abb24e06920311719862f6e749a1@codeaurora.org \
    --to=bbhatt@codeaurora.org \
    --cc=hemantk@codeaurora.org \
    --cc=jhugo@codeaurora.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=manivannan.sadhasivam@linaro.org \
    /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