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