Re: [PATCH v6 8/8] bus: mhi: core: Do not clear channel context more than once

2021-02-24 Thread Bhaumik Bhatt

On 2021-02-24 02:10 AM, Manivannan Sadhasivam wrote:

On Thu, Feb 04, 2021 at 12:28:06PM -0800, Bhaumik Bhatt wrote:

Clearing a channel context can happen twice if the client driver
unprepares and reset the channels from the remove() callback from
a controller requested MHI power down sequence. If there are
multiple attempts at calling the mhi_free_coherent() API, we see
kernel warnings such as "trying to free invalid coherent area".
Example for one such client is the QRTR MHI driver. Avoid these
warnings by skipping mhi_deinit_chan_ctxt() API call and prevent
extra work from MHI as the channels are already disabled.

Signed-off-by: Bhaumik Bhatt 


Is this patch still valid? We merged a similar fix from Loic for v5.11.

Yes, both the patches work to solve the same problem. This one just does 
it
sooner and relies on internal state variable rather than context being 
NULL.

Thanks,
Mani


---
 drivers/bus/mhi/core/init.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/bus/mhi/core/init.c b/drivers/bus/mhi/core/init.c
index 30eef19..272f350 100644
--- a/drivers/bus/mhi/core/init.c
+++ b/drivers/bus/mhi/core/init.c
@@ -1314,6 +1314,7 @@ static int mhi_driver_remove(struct device *dev)

if ((ch_state[dir] == MHI_CH_STATE_ENABLED ||
 ch_state[dir] == MHI_CH_STATE_STOP) &&
+   mhi_chan->ch_state != MHI_CH_STATE_DISABLED &&
!mhi_chan->offload_ch)
mhi_deinit_chan_ctxt(mhi_cntrl, mhi_chan);

--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora 
Forum,

a Linux Foundation Collaborative Project



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

a Linux Foundation Collaborative Project


Re: [PATCH v6 8/8] bus: mhi: core: Do not clear channel context more than once

2021-02-24 Thread Manivannan Sadhasivam
On Thu, Feb 04, 2021 at 12:28:06PM -0800, Bhaumik Bhatt wrote:
> Clearing a channel context can happen twice if the client driver
> unprepares and reset the channels from the remove() callback from
> a controller requested MHI power down sequence. If there are
> multiple attempts at calling the mhi_free_coherent() API, we see
> kernel warnings such as "trying to free invalid coherent area".
> Example for one such client is the QRTR MHI driver. Avoid these
> warnings by skipping mhi_deinit_chan_ctxt() API call and prevent
> extra work from MHI as the channels are already disabled.
> 
> Signed-off-by: Bhaumik Bhatt 

Is this patch still valid? We merged a similar fix from Loic for v5.11.

Thanks,
Mani

> ---
>  drivers/bus/mhi/core/init.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/bus/mhi/core/init.c b/drivers/bus/mhi/core/init.c
> index 30eef19..272f350 100644
> --- a/drivers/bus/mhi/core/init.c
> +++ b/drivers/bus/mhi/core/init.c
> @@ -1314,6 +1314,7 @@ static int mhi_driver_remove(struct device *dev)
>  
>   if ((ch_state[dir] == MHI_CH_STATE_ENABLED ||
>ch_state[dir] == MHI_CH_STATE_STOP) &&
> + mhi_chan->ch_state != MHI_CH_STATE_DISABLED &&
>   !mhi_chan->offload_ch)
>   mhi_deinit_chan_ctxt(mhi_cntrl, mhi_chan);
>  
> -- 
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
> a Linux Foundation Collaborative Project
> 


Re: [PATCH v6 8/8] bus: mhi: core: Do not clear channel context more than once

2021-02-05 Thread Hemant Kumar




On 2/4/21 12:28 PM, Bhaumik Bhatt wrote:

Clearing a channel context can happen twice if the client driver
unprepares and reset the channels from the remove() callback from
a controller requested MHI power down sequence. If there are
multiple attempts at calling the mhi_free_coherent() API, we see
kernel warnings such as "trying to free invalid coherent area".
Example for one such client is the QRTR MHI driver. Avoid these
warnings by skipping mhi_deinit_chan_ctxt() API call and prevent
extra work from MHI as the channels are already disabled.

Signed-off-by: Bhaumik Bhatt 


Reviewed-by: Hemant Kumar 
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project