2022-12-20 22:20:22

by Ricardo Ribalda

[permalink] [raw]
Subject: [PATCH v2] soc: mediatek: mtk-svs: Enable the IRQ later

If the system does not come from reset (like when is booted via
kexec()), the peripheral might triger an IRQ before the data structures
are initialised.

Fixes:

[ 0.227710] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000f08
[ 0.227913] Call trace:
[ 0.227918] svs_isr+0x8c/0x538

Signed-off-by: Ricardo Ribalda <[email protected]>
---
To: Matthias Brugger <[email protected]>
To: Roger Lu <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
---
Changes in v2:
- Enable the irq before svs_start, to avoid MT8192 not starting.
- Link to v1: https://lore.kernel.org/r/[email protected]
---
drivers/soc/mediatek/mtk-svs.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/soc/mediatek/mtk-svs.c b/drivers/soc/mediatek/mtk-svs.c
index 0469c9dfeb04..75b2f534aa9d 100644
--- a/drivers/soc/mediatek/mtk-svs.c
+++ b/drivers/soc/mediatek/mtk-svs.c
@@ -2385,14 +2385,6 @@ static int svs_probe(struct platform_device *pdev)
goto svs_probe_free_resource;
}

- ret = devm_request_threaded_irq(svsp->dev, svsp_irq, NULL, svs_isr,
- IRQF_ONESHOT, svsp->name, svsp);
- if (ret) {
- dev_err(svsp->dev, "register irq(%d) failed: %d\n",
- svsp_irq, ret);
- goto svs_probe_free_resource;
- }
-
svsp->main_clk = devm_clk_get(svsp->dev, "main");
if (IS_ERR(svsp->main_clk)) {
dev_err(svsp->dev, "failed to get clock: %ld\n",
@@ -2414,6 +2406,14 @@ static int svs_probe(struct platform_device *pdev)
goto svs_probe_clk_disable;
}

+ ret = devm_request_threaded_irq(svsp->dev, svsp_irq, NULL, svs_isr,
+ IRQF_ONESHOT, svsp->name, svsp);
+ if (ret) {
+ dev_err(svsp->dev, "register irq(%d) failed: %d\n",
+ svsp_irq, ret);
+ goto svs_probe_iounmap;
+ }
+
ret = svs_start(svsp);
if (ret) {
dev_err(svsp->dev, "svs start fail: %d\n", ret);

---
base-commit: 4312098baf37ee17a8350725e6e0d0e8590252d4
change-id: 20221127-mtk-svs-add137fbf187

Best regards,
--
Ricardo Ribalda <[email protected]>


2022-12-21 09:14:04

by Matthias Brugger

[permalink] [raw]
Subject: Re: [PATCH v2] soc: mediatek: mtk-svs: Enable the IRQ later



On 20/12/2022 22:35, Ricardo Ribalda wrote:
> If the system does not come from reset (like when is booted via
> kexec()), the peripheral might triger an IRQ before the data structures
> are initialised.
>
> Fixes:
>
> [ 0.227710] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000f08
> [ 0.227913] Call trace:
> [ 0.227918] svs_isr+0x8c/0x538
>
> Signed-off-by: Ricardo Ribalda <[email protected]>

Thanks Ricardo. Roger I'll wait for a Tested-by tag from you to make sure this
time everything is fine.

Regards,
Matthias

> ---
> To: Matthias Brugger <[email protected]>
> To: Roger Lu <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> ---
> Changes in v2:
> - Enable the irq before svs_start, to avoid MT8192 not starting.
> - Link to v1: https://lore.kernel.org/r/[email protected]
> ---
> drivers/soc/mediatek/mtk-svs.c | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/soc/mediatek/mtk-svs.c b/drivers/soc/mediatek/mtk-svs.c
> index 0469c9dfeb04..75b2f534aa9d 100644
> --- a/drivers/soc/mediatek/mtk-svs.c
> +++ b/drivers/soc/mediatek/mtk-svs.c
> @@ -2385,14 +2385,6 @@ static int svs_probe(struct platform_device *pdev)
> goto svs_probe_free_resource;
> }
>
> - ret = devm_request_threaded_irq(svsp->dev, svsp_irq, NULL, svs_isr,
> - IRQF_ONESHOT, svsp->name, svsp);
> - if (ret) {
> - dev_err(svsp->dev, "register irq(%d) failed: %d\n",
> - svsp_irq, ret);
> - goto svs_probe_free_resource;
> - }
> -
> svsp->main_clk = devm_clk_get(svsp->dev, "main");
> if (IS_ERR(svsp->main_clk)) {
> dev_err(svsp->dev, "failed to get clock: %ld\n",
> @@ -2414,6 +2406,14 @@ static int svs_probe(struct platform_device *pdev)
> goto svs_probe_clk_disable;
> }
>
> + ret = devm_request_threaded_irq(svsp->dev, svsp_irq, NULL, svs_isr,
> + IRQF_ONESHOT, svsp->name, svsp);
> + if (ret) {
> + dev_err(svsp->dev, "register irq(%d) failed: %d\n",
> + svsp_irq, ret);
> + goto svs_probe_iounmap;
> + }
> +
> ret = svs_start(svsp);
> if (ret) {
> dev_err(svsp->dev, "svs start fail: %d\n", ret);
>
> ---
> base-commit: 4312098baf37ee17a8350725e6e0d0e8590252d4
> change-id: 20221127-mtk-svs-add137fbf187
>
> Best regards,

2023-01-25 19:11:17

by Matthias Brugger

[permalink] [raw]
Subject: Re: [PATCH v2] soc: mediatek: mtk-svs: Enable the IRQ later



On 21/12/2022 09:56, Matthias Brugger wrote:
>
>
> On 20/12/2022 22:35, Ricardo Ribalda wrote:
>> If the system does not come from reset (like when is booted via
>> kexec()), the peripheral might triger an IRQ before the data structures
>> are initialised.
>>
>> Fixes:
>>
>> [    0.227710] Unable to handle kernel NULL pointer dereference at virtual
>> address 0000000000000f08
>> [    0.227913] Call trace:
>> [    0.227918]  svs_isr+0x8c/0x538
>>
>> Signed-off-by: Ricardo Ribalda <[email protected]>
>
> Thanks Ricardo. Roger I'll wait for a Tested-by tag from you to make sure this
> time everything is fine.
>

Given the chinese new year holidays I don't expect a Tested-by tag from Roger in
time. So I just took this one without it.

Thanks!
Matthias

2023-01-30 08:47:46

by Roger Lu

[permalink] [raw]
Subject: Re: [PATCH v2] soc: mediatek: mtk-svs: Enable the IRQ later

Hi Matthias Sir,

Excuse me for missing this thread. Add Tested-by tag.

On Wed, 2023-01-25 at 20:11 +0100, Matthias Brugger wrote:
>
> On 21/12/2022 09:56, Matthias Brugger wrote:
> >
> >
> > On 20/12/2022 22:35, Ricardo Ribalda wrote:
> > > If the system does not come from reset (like when is booted via
> > > kexec()), the peripheral might triger an IRQ before the data structures
> > > are initialised.
> > >
> > > Fixes:
> > >
> > > [ 0.227710] Unable to handle kernel NULL pointer dereference at
> > > virtual
> > > address 0000000000000f08
> > > [ 0.227913] Call trace:
> > > [ 0.227918] svs_isr+0x8c/0x538
> > >
> > > Signed-off-by: Ricardo Ribalda <[email protected]>
> >
> > Thanks Ricardo. Roger I'll wait for a Tested-by tag from you to make sure
> > this
> > time everything is fine.
> >
>
> Given the chinese new year holidays I don't expect a Tested-by tag from Roger
> in
> time. So I just took this one without it.

Tested-by: Roger Lu <[email protected]>

>
> Thanks!
> Matthias