linux-mtd.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] Two Qcom NAND related fixes.
@ 2022-01-03  3:03 Bryan O'Donoghue
  2022-01-03  3:03 ` [PATCH v2 1/2] mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe() Bryan O'Donoghue
  2022-01-03  3:03 ` [PATCH v2 2/2] mtd: parsers: qcom: Don't print error message on -EPROBE_DEFER Bryan O'Donoghue
  0 siblings, 2 replies; 11+ messages in thread
From: Bryan O'Donoghue @ 2022-01-03  3:03 UTC (permalink / raw)
  To: linux-arm-msm, linux-mtd, mani, miquel.raynal, architt,
	bbrezillon, absahu
  Cc: baruch, bryan.odonoghue

I've already sent the ordering fix for probe deferral in qcom_nandc_probe()
but there's also an associated printout in the partition parser that
shouldn't be there.

Add a patch to silence the spurious error message. 

Bryan O'Donoghue (2):
  mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe()
  mtd: parsers: qcom: Don't print error message on -EPROBE_DEFER

 drivers/mtd/nand/raw/qcom_nandc.c  | 14 ++++++--------
 drivers/mtd/parsers/qcomsmempart.c |  3 ++-
 2 files changed, 8 insertions(+), 9 deletions(-)

-- 
2.33.0


______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v2 1/2] mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe()
  2022-01-03  3:03 [PATCH v2 0/2] Two Qcom NAND related fixes Bryan O'Donoghue
@ 2022-01-03  3:03 ` Bryan O'Donoghue
  2022-01-03  5:51   ` Manivannan Sadhasivam
  2022-01-23 15:23   ` Miquel Raynal
  2022-01-03  3:03 ` [PATCH v2 2/2] mtd: parsers: qcom: Don't print error message on -EPROBE_DEFER Bryan O'Donoghue
  1 sibling, 2 replies; 11+ messages in thread
From: Bryan O'Donoghue @ 2022-01-03  3:03 UTC (permalink / raw)
  To: linux-arm-msm, linux-mtd, mani, miquel.raynal, architt,
	bbrezillon, absahu
  Cc: baruch, bryan.odonoghue

Interacting with a NAND chip on an IPQ6018 I found that the qcomsmem NAND
partition parser was returning -EPROBE_DEFER waiting for the main smem
driver to load.

This caused the board to reset. Playing about with the probe() function
shows that the problem lies in the core clock being switched off before the
nandc_unalloc() routine has completed.

If we look at how qcom_nandc_remove() tears down allocated resources we see
the expected order is

qcom_nandc_unalloc(nandc);

clk_disable_unprepare(nandc->aon_clk);
clk_disable_unprepare(nandc->core_clk);

dma_unmap_resource(&pdev->dev, nandc->base_dma, resource_size(res),
		   DMA_BIDIRECTIONAL, 0);

Tweaking probe() to both bring up and tear-down in that order removes the
reset if we end up deferring elsewhere.

Fixes: c76b78d8ec05 ("mtd: nand: Qualcomm NAND controller driver")
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
 drivers/mtd/nand/raw/qcom_nandc.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/drivers/mtd/nand/raw/qcom_nandc.c b/drivers/mtd/nand/raw/qcom_nandc.c
index 04e6f7b267064..0f41a9a421575 100644
--- a/drivers/mtd/nand/raw/qcom_nandc.c
+++ b/drivers/mtd/nand/raw/qcom_nandc.c
@@ -2,7 +2,6 @@
 /*
  * Copyright (c) 2016, The Linux Foundation. All rights reserved.
  */
-
 #include <linux/clk.h>
 #include <linux/slab.h>
 #include <linux/bitops.h>
@@ -3063,10 +3062,6 @@ static int qcom_nandc_probe(struct platform_device *pdev)
 	if (dma_mapping_error(dev, nandc->base_dma))
 		return -ENXIO;
 
-	ret = qcom_nandc_alloc(nandc);
-	if (ret)
-		goto err_nandc_alloc;
-
 	ret = clk_prepare_enable(nandc->core_clk);
 	if (ret)
 		goto err_core_clk;
@@ -3075,6 +3070,10 @@ static int qcom_nandc_probe(struct platform_device *pdev)
 	if (ret)
 		goto err_aon_clk;
 
+	ret = qcom_nandc_alloc(nandc);
+	if (ret)
+		goto err_nandc_alloc;
+
 	ret = qcom_nandc_setup(nandc);
 	if (ret)
 		goto err_setup;
@@ -3086,15 +3085,14 @@ static int qcom_nandc_probe(struct platform_device *pdev)
 	return 0;
 
 err_setup:
+	qcom_nandc_unalloc(nandc);
+err_nandc_alloc:
 	clk_disable_unprepare(nandc->aon_clk);
 err_aon_clk:
 	clk_disable_unprepare(nandc->core_clk);
 err_core_clk:
-	qcom_nandc_unalloc(nandc);
-err_nandc_alloc:
 	dma_unmap_resource(dev, res->start, resource_size(res),
 			   DMA_BIDIRECTIONAL, 0);
-
 	return ret;
 }
 
-- 
2.33.0


______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v2 2/2] mtd: parsers: qcom: Don't print error message on -EPROBE_DEFER
  2022-01-03  3:03 [PATCH v2 0/2] Two Qcom NAND related fixes Bryan O'Donoghue
  2022-01-03  3:03 ` [PATCH v2 1/2] mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe() Bryan O'Donoghue
@ 2022-01-03  3:03 ` Bryan O'Donoghue
  2022-01-03  5:52   ` Manivannan Sadhasivam
  2022-01-23 15:23   ` Miquel Raynal
  1 sibling, 2 replies; 11+ messages in thread
From: Bryan O'Donoghue @ 2022-01-03  3:03 UTC (permalink / raw)
  To: linux-arm-msm, linux-mtd, mani, miquel.raynal, architt,
	bbrezillon, absahu
  Cc: baruch, bryan.odonoghue

Its possible for the main smem driver to not be loaded by the time we come
along to parse the smem partition description but, this is a perfectly
normal thing.

No need to print out an error message in this case.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
 drivers/mtd/parsers/qcomsmempart.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/mtd/parsers/qcomsmempart.c b/drivers/mtd/parsers/qcomsmempart.c
index 06a818cd2433f..b2a57fe8479fa 100644
--- a/drivers/mtd/parsers/qcomsmempart.c
+++ b/drivers/mtd/parsers/qcomsmempart.c
@@ -75,7 +75,8 @@ static int parse_qcomsmem_part(struct mtd_info *mtd,
 	pr_debug("Parsing partition table info from SMEM\n");
 	ptable = qcom_smem_get(SMEM_APPS, SMEM_AARM_PARTITION_TABLE, &len);
 	if (IS_ERR(ptable)) {
-		pr_err("Error reading partition table header\n");
+		if (PTR_ERR(ptable) != -EPROBE_DEFER)
+			pr_err("Error reading partition table header\n");
 		return PTR_ERR(ptable);
 	}
 
-- 
2.33.0


______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 1/2] mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe()
  2022-01-03  3:03 ` [PATCH v2 1/2] mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe() Bryan O'Donoghue
@ 2022-01-03  5:51   ` Manivannan Sadhasivam
  2022-01-06 17:24     ` Bryan O'Donoghue
  2022-01-23 15:23   ` Miquel Raynal
  1 sibling, 1 reply; 11+ messages in thread
From: Manivannan Sadhasivam @ 2022-01-03  5:51 UTC (permalink / raw)
  To: Bryan O'Donoghue
  Cc: linux-arm-msm, linux-mtd, miquel.raynal, architt, bbrezillon,
	absahu, baruch

On Mon, Jan 03, 2022 at 03:03:15AM +0000, Bryan O'Donoghue wrote:
> Interacting with a NAND chip on an IPQ6018 I found that the qcomsmem NAND
> partition parser was returning -EPROBE_DEFER waiting for the main smem
> driver to load.
> 
> This caused the board to reset. Playing about with the probe() function
> shows that the problem lies in the core clock being switched off before the
> nandc_unalloc() routine has completed.
> 
> If we look at how qcom_nandc_remove() tears down allocated resources we see
> the expected order is
> 
> qcom_nandc_unalloc(nandc);
> 
> clk_disable_unprepare(nandc->aon_clk);
> clk_disable_unprepare(nandc->core_clk);
> 
> dma_unmap_resource(&pdev->dev, nandc->base_dma, resource_size(res),
> 		   DMA_BIDIRECTIONAL, 0);
> 
> Tweaking probe() to both bring up and tear-down in that order removes the
> reset if we end up deferring elsewhere.
> 
> Fixes: c76b78d8ec05 ("mtd: nand: Qualcomm NAND controller driver")
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>

Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>

Can you please CC stable list for backporting?

Thanks,
Mani

> ---
>  drivers/mtd/nand/raw/qcom_nandc.c | 14 ++++++--------
>  1 file changed, 6 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/mtd/nand/raw/qcom_nandc.c b/drivers/mtd/nand/raw/qcom_nandc.c
> index 04e6f7b267064..0f41a9a421575 100644
> --- a/drivers/mtd/nand/raw/qcom_nandc.c
> +++ b/drivers/mtd/nand/raw/qcom_nandc.c
> @@ -2,7 +2,6 @@
>  /*
>   * Copyright (c) 2016, The Linux Foundation. All rights reserved.
>   */
> -
>  #include <linux/clk.h>
>  #include <linux/slab.h>
>  #include <linux/bitops.h>
> @@ -3063,10 +3062,6 @@ static int qcom_nandc_probe(struct platform_device *pdev)
>  	if (dma_mapping_error(dev, nandc->base_dma))
>  		return -ENXIO;
>  
> -	ret = qcom_nandc_alloc(nandc);
> -	if (ret)
> -		goto err_nandc_alloc;
> -
>  	ret = clk_prepare_enable(nandc->core_clk);
>  	if (ret)
>  		goto err_core_clk;
> @@ -3075,6 +3070,10 @@ static int qcom_nandc_probe(struct platform_device *pdev)
>  	if (ret)
>  		goto err_aon_clk;
>  
> +	ret = qcom_nandc_alloc(nandc);
> +	if (ret)
> +		goto err_nandc_alloc;
> +
>  	ret = qcom_nandc_setup(nandc);
>  	if (ret)
>  		goto err_setup;
> @@ -3086,15 +3085,14 @@ static int qcom_nandc_probe(struct platform_device *pdev)
>  	return 0;
>  
>  err_setup:
> +	qcom_nandc_unalloc(nandc);
> +err_nandc_alloc:
>  	clk_disable_unprepare(nandc->aon_clk);
>  err_aon_clk:
>  	clk_disable_unprepare(nandc->core_clk);
>  err_core_clk:
> -	qcom_nandc_unalloc(nandc);
> -err_nandc_alloc:
>  	dma_unmap_resource(dev, res->start, resource_size(res),
>  			   DMA_BIDIRECTIONAL, 0);
> -
>  	return ret;
>  }
>  
> -- 
> 2.33.0
> 

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 2/2] mtd: parsers: qcom: Don't print error message on -EPROBE_DEFER
  2022-01-03  3:03 ` [PATCH v2 2/2] mtd: parsers: qcom: Don't print error message on -EPROBE_DEFER Bryan O'Donoghue
@ 2022-01-03  5:52   ` Manivannan Sadhasivam
  2022-01-23 15:23   ` Miquel Raynal
  1 sibling, 0 replies; 11+ messages in thread
From: Manivannan Sadhasivam @ 2022-01-03  5:52 UTC (permalink / raw)
  To: Bryan O'Donoghue
  Cc: linux-arm-msm, linux-mtd, miquel.raynal, architt, bbrezillon,
	absahu, baruch

On Mon, Jan 03, 2022 at 03:03:16AM +0000, Bryan O'Donoghue wrote:
> Its possible for the main smem driver to not be loaded by the time we come
> along to parse the smem partition description but, this is a perfectly
> normal thing.
> 
> No need to print out an error message in this case.
> 
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>

Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>

Thanks,
Mani

> ---
>  drivers/mtd/parsers/qcomsmempart.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/mtd/parsers/qcomsmempart.c b/drivers/mtd/parsers/qcomsmempart.c
> index 06a818cd2433f..b2a57fe8479fa 100644
> --- a/drivers/mtd/parsers/qcomsmempart.c
> +++ b/drivers/mtd/parsers/qcomsmempart.c
> @@ -75,7 +75,8 @@ static int parse_qcomsmem_part(struct mtd_info *mtd,
>  	pr_debug("Parsing partition table info from SMEM\n");
>  	ptable = qcom_smem_get(SMEM_APPS, SMEM_AARM_PARTITION_TABLE, &len);
>  	if (IS_ERR(ptable)) {
> -		pr_err("Error reading partition table header\n");
> +		if (PTR_ERR(ptable) != -EPROBE_DEFER)
> +			pr_err("Error reading partition table header\n");
>  		return PTR_ERR(ptable);
>  	}
>  
> -- 
> 2.33.0
> 

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 1/2] mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe()
  2022-01-03  5:51   ` Manivannan Sadhasivam
@ 2022-01-06 17:24     ` Bryan O'Donoghue
  2022-01-06 17:44       ` Greg KH
  0 siblings, 1 reply; 11+ messages in thread
From: Bryan O'Donoghue @ 2022-01-06 17:24 UTC (permalink / raw)
  To: Manivannan Sadhasivam
  Cc: linux-arm-msm, linux-mtd, miquel.raynal, architt, bbrezillon,
	absahu, baruch, stable@vger.kernel.org

On 03/01/2022 05:51, Manivannan Sadhasivam wrote:
> On Mon, Jan 03, 2022 at 03:03:15AM +0000, Bryan O'Donoghue wrote:
>> Interacting with a NAND chip on an IPQ6018 I found that the qcomsmem NAND
>> partition parser was returning -EPROBE_DEFER waiting for the main smem
>> driver to load.
>>
>> This caused the board to reset. Playing about with the probe() function
>> shows that the problem lies in the core clock being switched off before the
>> nandc_unalloc() routine has completed.
>>
>> If we look at how qcom_nandc_remove() tears down allocated resources we see
>> the expected order is
>>
>> qcom_nandc_unalloc(nandc);
>>
>> clk_disable_unprepare(nandc->aon_clk);
>> clk_disable_unprepare(nandc->core_clk);
>>
>> dma_unmap_resource(&pdev->dev, nandc->base_dma, resource_size(res),
>> 		   DMA_BIDIRECTIONAL, 0);
>>
>> Tweaking probe() to both bring up and tear-down in that order removes the
>> reset if we end up deferring elsewhere.
>>
>> Fixes: c76b78d8ec05 ("mtd: nand: Qualcomm NAND controller driver")
>> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> 
> Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>
> 
> Can you please CC stable list for backporting?
> 
> Thanks,
> Mani
> 

NP.

+ cc stable

FWIW I believe Greg's scripts will pick up on Fixes: tags automatically

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 1/2] mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe()
  2022-01-06 17:24     ` Bryan O'Donoghue
@ 2022-01-06 17:44       ` Greg KH
  2022-01-06 18:02         ` Bryan O'Donoghue
  0 siblings, 1 reply; 11+ messages in thread
From: Greg KH @ 2022-01-06 17:44 UTC (permalink / raw)
  To: Bryan O'Donoghue
  Cc: Manivannan Sadhasivam, linux-arm-msm, linux-mtd, miquel.raynal,
	architt, bbrezillon, absahu, baruch, stable@vger.kernel.org

On Thu, Jan 06, 2022 at 05:24:27PM +0000, Bryan O'Donoghue wrote:
> On 03/01/2022 05:51, Manivannan Sadhasivam wrote:
> > On Mon, Jan 03, 2022 at 03:03:15AM +0000, Bryan O'Donoghue wrote:
> > > Interacting with a NAND chip on an IPQ6018 I found that the qcomsmem NAND
> > > partition parser was returning -EPROBE_DEFER waiting for the main smem
> > > driver to load.
> > > 
> > > This caused the board to reset. Playing about with the probe() function
> > > shows that the problem lies in the core clock being switched off before the
> > > nandc_unalloc() routine has completed.
> > > 
> > > If we look at how qcom_nandc_remove() tears down allocated resources we see
> > > the expected order is
> > > 
> > > qcom_nandc_unalloc(nandc);
> > > 
> > > clk_disable_unprepare(nandc->aon_clk);
> > > clk_disable_unprepare(nandc->core_clk);
> > > 
> > > dma_unmap_resource(&pdev->dev, nandc->base_dma, resource_size(res),
> > > 		   DMA_BIDIRECTIONAL, 0);
> > > 
> > > Tweaking probe() to both bring up and tear-down in that order removes the
> > > reset if we end up deferring elsewhere.
> > > 
> > > Fixes: c76b78d8ec05 ("mtd: nand: Qualcomm NAND controller driver")
> > > Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> > 
> > Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>
> > 
> > Can you please CC stable list for backporting?
> > 
> > Thanks,
> > Mani
> > 
> 
> NP.
> 
> + cc stable
> 
> FWIW I believe Greg's scripts will pick up on Fixes: tags automatically

No, that is NOT the way to ensure that a patch will get picked up, that
is a "this might eventually get there".

Please read:
    https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
for how to do this properly.

thanks,

greg k-h

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 1/2] mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe()
  2022-01-06 17:44       ` Greg KH
@ 2022-01-06 18:02         ` Bryan O'Donoghue
  0 siblings, 0 replies; 11+ messages in thread
From: Bryan O'Donoghue @ 2022-01-06 18:02 UTC (permalink / raw)
  To: Greg KH
  Cc: Manivannan Sadhasivam, linux-arm-msm, linux-mtd, miquel.raynal,
	architt, bbrezillon, absahu, baruch, stable@vger.kernel.org

On 06/01/2022 17:44, Greg KH wrote:
> On Thu, Jan 06, 2022 at 05:24:27PM +0000, Bryan O'Donoghue wrote:
>> On 03/01/2022 05:51, Manivannan Sadhasivam wrote:
>>> On Mon, Jan 03, 2022 at 03:03:15AM +0000, Bryan O'Donoghue wrote:
>>>> Interacting with a NAND chip on an IPQ6018 I found that the qcomsmem NAND
>>>> partition parser was returning -EPROBE_DEFER waiting for the main smem
>>>> driver to load.
>>>>
>>>> This caused the board to reset. Playing about with the probe() function
>>>> shows that the problem lies in the core clock being switched off before the
>>>> nandc_unalloc() routine has completed.
>>>>
>>>> If we look at how qcom_nandc_remove() tears down allocated resources we see
>>>> the expected order is
>>>>
>>>> qcom_nandc_unalloc(nandc);
>>>>
>>>> clk_disable_unprepare(nandc->aon_clk);
>>>> clk_disable_unprepare(nandc->core_clk);
>>>>
>>>> dma_unmap_resource(&pdev->dev, nandc->base_dma, resource_size(res),
>>>> 		   DMA_BIDIRECTIONAL, 0);
>>>>
>>>> Tweaking probe() to both bring up and tear-down in that order removes the
>>>> reset if we end up deferring elsewhere.
>>>>
>>>> Fixes: c76b78d8ec05 ("mtd: nand: Qualcomm NAND controller driver")
>>>> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
>>>
>>> Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>
>>>
>>> Can you please CC stable list for backporting?
>>>
>>> Thanks,
>>> Mani
>>>
>>
>> NP.
>>
>> + cc stable
>>
>> FWIW I believe Greg's scripts will pick up on Fixes: tags automatically
> 
> No, that is NOT the way to ensure that a patch will get picked up, that
> is a "this might eventually get there".
> 
> Please read:
>      https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
> for how to do this properly.
> 
> thanks,
> 
> greg k-h
> 

Good to know

I've just been using Fixes: for the most part

Thanks

---
bod

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 2/2] mtd: parsers: qcom: Don't print error message on -EPROBE_DEFER
  2022-01-03  3:03 ` [PATCH v2 2/2] mtd: parsers: qcom: Don't print error message on -EPROBE_DEFER Bryan O'Donoghue
  2022-01-03  5:52   ` Manivannan Sadhasivam
@ 2022-01-23 15:23   ` Miquel Raynal
  1 sibling, 0 replies; 11+ messages in thread
From: Miquel Raynal @ 2022-01-23 15:23 UTC (permalink / raw)
  To: Bryan O'Donoghue, linux-arm-msm, linux-mtd, mani,
	miquel.raynal, architt, bbrezillon, absahu
  Cc: baruch

On Mon, 2022-01-03 at 03:03:16 UTC, Bryan O'Donoghue wrote:
> Its possible for the main smem driver to not be loaded by the time we come
> along to parse the smem partition description but, this is a perfectly
> normal thing.
> 
> No need to print out an error message in this case.
> 
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>

Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/next, thanks.

Miquel

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 1/2] mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe()
  2022-01-03  3:03 ` [PATCH v2 1/2] mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe() Bryan O'Donoghue
  2022-01-03  5:51   ` Manivannan Sadhasivam
@ 2022-01-23 15:23   ` Miquel Raynal
  2022-01-23 15:32     ` Miquel Raynal
  1 sibling, 1 reply; 11+ messages in thread
From: Miquel Raynal @ 2022-01-23 15:23 UTC (permalink / raw)
  To: Bryan O'Donoghue, linux-arm-msm, linux-mtd, mani,
	miquel.raynal, architt, bbrezillon, absahu
  Cc: baruch

On Mon, 2022-01-03 at 03:03:15 UTC, Bryan O'Donoghue wrote:
> Interacting with a NAND chip on an IPQ6018 I found that the qcomsmem NAND
> partition parser was returning -EPROBE_DEFER waiting for the main smem
> driver to load.
> 
> This caused the board to reset. Playing about with the probe() function
> shows that the problem lies in the core clock being switched off before the
> nandc_unalloc() routine has completed.
> 
> If we look at how qcom_nandc_remove() tears down allocated resources we see
> the expected order is
> 
> qcom_nandc_unalloc(nandc);
> 
> clk_disable_unprepare(nandc->aon_clk);
> clk_disable_unprepare(nandc->core_clk);
> 
> dma_unmap_resource(&pdev->dev, nandc->base_dma, resource_size(res),
> 		   DMA_BIDIRECTIONAL, 0);
> 
> Tweaking probe() to both bring up and tear-down in that order removes the
> reset if we end up deferring elsewhere.
> 
> Fixes: c76b78d8ec05 ("mtd: nand: Qualcomm NAND controller driver")
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>

Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/next, thanks.

Miquel

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 1/2] mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe()
  2022-01-23 15:23   ` Miquel Raynal
@ 2022-01-23 15:32     ` Miquel Raynal
  0 siblings, 0 replies; 11+ messages in thread
From: Miquel Raynal @ 2022-01-23 15:32 UTC (permalink / raw)
  To: Bryan O'Donoghue, linux-arm-msm, linux-mtd, mani,
	miquel.raynal, architt, bbrezillon, absahu
  Cc: baruch


miquel.raynal@bootlin.com wrote on Sun, 23 Jan 2022 16:23:26 +0100:

> On Mon, 2022-01-03 at 03:03:15 UTC, Bryan O'Donoghue wrote:
> > Interacting with a NAND chip on an IPQ6018 I found that the qcomsmem NAND
> > partition parser was returning -EPROBE_DEFER waiting for the main smem
> > driver to load.
> > 
> > This caused the board to reset. Playing about with the probe() function
> > shows that the problem lies in the core clock being switched off before the
> > nandc_unalloc() routine has completed.
> > 
> > If we look at how qcom_nandc_remove() tears down allocated resources we see
> > the expected order is
> > 
> > qcom_nandc_unalloc(nandc);
> > 
> > clk_disable_unprepare(nandc->aon_clk);
> > clk_disable_unprepare(nandc->core_clk);
> > 
> > dma_unmap_resource(&pdev->dev, nandc->base_dma, resource_size(res),
> > 		   DMA_BIDIRECTIONAL, 0);
> > 
> > Tweaking probe() to both bring up and tear-down in that order removes the
> > reset if we end up deferring elsewhere.
> > 
> > Fixes: c76b78d8ec05 ("mtd: nand: Qualcomm NAND controller driver")
> > Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> > Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>  
> 
> Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/next, thanks.

Both patches pushed to mtd/fixes, actually.

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2022-01-23 15:34 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-01-03  3:03 [PATCH v2 0/2] Two Qcom NAND related fixes Bryan O'Donoghue
2022-01-03  3:03 ` [PATCH v2 1/2] mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe() Bryan O'Donoghue
2022-01-03  5:51   ` Manivannan Sadhasivam
2022-01-06 17:24     ` Bryan O'Donoghue
2022-01-06 17:44       ` Greg KH
2022-01-06 18:02         ` Bryan O'Donoghue
2022-01-23 15:23   ` Miquel Raynal
2022-01-23 15:32     ` Miquel Raynal
2022-01-03  3:03 ` [PATCH v2 2/2] mtd: parsers: qcom: Don't print error message on -EPROBE_DEFER Bryan O'Donoghue
2022-01-03  5:52   ` Manivannan Sadhasivam
2022-01-23 15:23   ` Miquel Raynal

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