* [PATCH v2 1/2] mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe()
@ 2022-01-03 3:03 ` Bryan O'Donoghue
0 siblings, 0 replies; 22+ 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] 22+ messages in thread* Re: [PATCH v2 1/2] mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe()
2022-01-03 3:03 ` Bryan O'Donoghue
@ 2022-01-03 5:51 ` Manivannan Sadhasivam
-1 siblings, 0 replies; 22+ 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
>
^ permalink raw reply [flat|nested] 22+ 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
0 siblings, 0 replies; 22+ 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] 22+ 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
-1 siblings, 0 replies; 22+ 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
^ permalink raw reply [flat|nested] 22+ 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
0 siblings, 0 replies; 22+ 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] 22+ 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
-1 siblings, 0 replies; 22+ 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
^ permalink raw reply [flat|nested] 22+ 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
0 siblings, 0 replies; 22+ 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] 22+ 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
-1 siblings, 0 replies; 22+ 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
^ permalink raw reply [flat|nested] 22+ messages in thread* Re: [PATCH v2 1/2] mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe()
@ 2022-01-06 18:02 ` Bryan O'Donoghue
0 siblings, 0 replies; 22+ 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] 22+ messages in thread
* Re: [PATCH v2 1/2] mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe()
2022-01-03 3:03 ` Bryan O'Donoghue
@ 2022-01-23 15:23 ` Miquel Raynal
-1 siblings, 0 replies; 22+ 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
^ permalink raw reply [flat|nested] 22+ 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
0 siblings, 0 replies; 22+ 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] 22+ 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
-1 siblings, 0 replies; 22+ 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.
^ permalink raw reply [flat|nested] 22+ messages in thread* Re: [PATCH v2 1/2] mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe()
@ 2022-01-23 15:32 ` Miquel Raynal
0 siblings, 0 replies; 22+ 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] 22+ messages in thread