soc: mediatek: mtk-svs: Enable the IRQ later

Message ID 20221127-mtk-svs-v1-0-7a5819595838@chromium.org
State New
Headers
Series soc: mediatek: mtk-svs: Enable the IRQ later |

Commit Message

Ricardo Ribalda Nov. 27, 2022, 8:22 p.m. UTC
  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 <ribalda@chromium.org>
---
To: Matthias Brugger <matthias.bgg@gmail.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-mediatek@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---
 drivers/soc/mediatek/mtk-svs.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)


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

Best regards,
  

Comments

AngeloGioacchino Del Regno Nov. 30, 2022, 11 a.m. UTC | #1
Il 27/11/22 21:22, Ricardo Ribalda ha scritto:
> 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 <ribalda@chromium.org>

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
  
Matthias Brugger Dec. 16, 2022, 12:47 p.m. UTC | #2
On 30/11/2022 12:00, AngeloGioacchino Del Regno wrote:
> Il 27/11/22 21:22, Ricardo Ribalda ha scritto:
>> 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 <ribalda@chromium.org>
> 
> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> 
> 

Applied thanks!
  
Roger Lu Dec. 20, 2022, 11:03 a.m. UTC | #3
Hi Matthias Sir,

After applying this patch, SVS probes fail as below on my MT8192 platform. If
thing isn't too late, please do not merge this patch. I'll ask Ricardo how to
reproduce this issue and give the correct solution. Thanks in advance.

#MT8192 platform SVS probe fail log
[   10.209430]  SVSB_GPU_LOW: init02 completion timeout
[   10.214402] mtk-svs 1100b000.svs: svs start fail: -16
[   10.219479] mtk-svs: probe of 1100b000.svs failed with error -16

Hi Ricardo,

Could you share us how you reproduce this issue? I have MT8192 Chromebook and
can give it a try to reproduce the issue you encountered. Thanks a lot.

Sincerely,
Roger Lu.

On Fri, 2022-12-16 at 13:47 +0100, Matthias Brugger wrote:
> 
> On 30/11/2022 12:00, AngeloGioacchino Del Regno wrote:
> > Il 27/11/22 21:22, Ricardo Ribalda ha scritto:
> > > 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 <ribalda@chromium.org>
> > 
> > Reviewed-by: AngeloGioacchino Del Regno <
> > angelogioacchino.delregno@collabora.com>
> > 
> > 
> 
> Applied thanks!
>
  
AngeloGioacchino Del Regno Dec. 20, 2022, 12:49 p.m. UTC | #4
Il 20/12/22 12:03, Roger Lu (陸瑞傑) ha scritto:
> Hi Matthias Sir,
> 
> After applying this patch, SVS probes fail as below on my MT8192 platform. If
> thing isn't too late, please do not merge this patch. I'll ask Ricardo how to
> reproduce this issue and give the correct solution. Thanks in advance.
> 
> #MT8192 platform SVS probe fail log
> [   10.209430]  SVSB_GPU_LOW: init02 completion timeout
> [   10.214402] mtk-svs 1100b000.svs: svs start fail: -16
> [   10.219479] mtk-svs: probe of 1100b000.svs failed with error -16
> 
> Hi Ricardo,
> 
> Could you share us how you reproduce this issue? I have MT8192 Chromebook and
> can give it a try to reproduce the issue you encountered. Thanks a lot.
> 

Boot a kernel with Kexec to reproduce.

Regards,
Angelo

> Sincerely,
> Roger Lu.
> 
> On Fri, 2022-12-16 at 13:47 +0100, Matthias Brugger wrote:
>>
>> On 30/11/2022 12:00, AngeloGioacchino Del Regno wrote:
>>> Il 27/11/22 21:22, Ricardo Ribalda ha scritto:
>>>> 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 <ribalda@chromium.org>
>>>
>>> Reviewed-by: AngeloGioacchino Del Regno <
>>> angelogioacchino.delregno@collabora.com>
>>>
>>>
>>
>> Applied thanks!
>>
  
Matthias Brugger Dec. 20, 2022, 2:50 p.m. UTC | #5
On 20/12/2022 12:03, Roger Lu (陸瑞傑) wrote:
> Hi Matthias Sir,
> 
> After applying this patch, SVS probes fail as below on my MT8192 platform. If
> thing isn't too late, please do not merge this patch. I'll ask Ricardo how to
> reproduce this issue and give the correct solution. Thanks in advance.
> 

Ok, I just dropped the patch from v6.2-tmp/soc branch.

Regards,
Matthias

> #MT8192 platform SVS probe fail log
> [   10.209430]  SVSB_GPU_LOW: init02 completion timeout
> [   10.214402] mtk-svs 1100b000.svs: svs start fail: -16
> [   10.219479] mtk-svs: probe of 1100b000.svs failed with error -16
> 
> Hi Ricardo,
> 
> Could you share us how you reproduce this issue? I have MT8192 Chromebook and
> can give it a try to reproduce the issue you encountered. Thanks a lot.
> 
> Sincerely,
> Roger Lu.
> 
> On Fri, 2022-12-16 at 13:47 +0100, Matthias Brugger wrote:
>> 
>> On 30/11/2022 12:00, AngeloGioacchino Del Regno wrote:
>> > Il 27/11/22 21:22, Ricardo Ribalda ha scritto:
>> > > 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 <ribalda@chromium.org>
>> > 
>> > Reviewed-by: AngeloGioacchino Del Regno <
>> > angelogioacchino.delregno@collabora.com>
>> > 
>> > 
>> 
>> Applied thanks!
>> 
> 
> ************* MEDIATEK Confidentiality Notice ********************
> The information contained in this e-mail message (including any
> attachments) may be confidential, proprietary, privileged, or otherwise
> exempt from disclosure under applicable laws. It is intended to be
> conveyed only to the designated recipient(s). Any use, dissemination,
> distribution, printing, retaining or copying of this e-mail (including its
> attachments) by unintended recipient(s) is strictly prohibited and may
> be unlawful. If you are not an intended recipient of this e-mail, or believe
> that you have received this e-mail in error, please notify the sender
> immediately (by replying to this e-mail), delete any and all copies of
> this e-mail (including any attachments) from your system, and do not
> disclose the content of this e-mail to any other person. Thank you!
  
Ricardo Ribalda Dec. 20, 2022, 8:44 p.m. UTC | #6
Hi Roger

Thanks for the heads up.

This is the tree that I am using to test this:
https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/3918592/7
( https://chromium.googlesource.com/chromiumos/third_party/kernel/+/3daf57d76c9e3d7c73d038ff2e43984412b503a2
)

You can use this tool for kexec:
https://chromium-review.googlesource.com/c/chromiumos/platform2/+/3953579

The syntax is kexec-lite  --reboot --kernel /boot/Image --cmdline
"$(cat /proc/cmdline)"

On Tue, 20 Dec 2022 at 15:50, Matthias Brugger <matthias.bgg@gmail.com> wrote:
>
>
>
> On 20/12/2022 12:03, Roger Lu (陸瑞傑) wrote:
> > Hi Matthias Sir,
> >
> > After applying this patch, SVS probes fail as below on my MT8192 platform. If
> > thing isn't too late, please do not merge this patch. I'll ask Ricardo how to
> > reproduce this issue and give the correct solution. Thanks in advance.
> >
>
> Ok, I just dropped the patch from v6.2-tmp/soc branch.
>
> Regards,
> Matthias
>
> > #MT8192 platform SVS probe fail log
> > [   10.209430]  SVSB_GPU_LOW: init02 completion timeout
> > [   10.214402] mtk-svs 1100b000.svs: svs start fail: -16
> > [   10.219479] mtk-svs: probe of 1100b000.svs failed with error -16
> >
> > Hi Ricardo,
> >
> > Could you share us how you reproduce this issue? I have MT8192 Chromebook and
> > can give it a try to reproduce the issue you encountered. Thanks a lot.
> >
> > Sincerely,
> > Roger Lu.
> >
> > On Fri, 2022-12-16 at 13:47 +0100, Matthias Brugger wrote:
> >>
> >> On 30/11/2022 12:00, AngeloGioacchino Del Regno wrote:
> >> > Il 27/11/22 21:22, Ricardo Ribalda ha scritto:
> >> > > 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 <ribalda@chromium.org>
> >> >
> >> > Reviewed-by: AngeloGioacchino Del Regno <
> >> > angelogioacchino.delregno@collabora.com>
> >> >
> >> >
> >>
> >> Applied thanks!
> >>
> >
> > ************* MEDIATEK Confidentiality Notice ********************
> > The information contained in this e-mail message (including any
> > attachments) may be confidential, proprietary, privileged, or otherwise
> > exempt from disclosure under applicable laws. It is intended to be
> > conveyed only to the designated recipient(s). Any use, dissemination,
> > distribution, printing, retaining or copying of this e-mail (including its
> > attachments) by unintended recipient(s) is strictly prohibited and may
> > be unlawful. If you are not an intended recipient of this e-mail, or believe
> > that you have received this e-mail in error, please notify the sender
> > immediately (by replying to this e-mail), delete any and all copies of
> > this e-mail (including any attachments) from your system, and do not
> > disclose the content of this e-mail to any other person. Thank you!
  
Ricardo Ribalda Dec. 20, 2022, 9:37 p.m. UTC | #7
Hi again Roger

I think I managed to reproduce your issue on an "asurada" Chromebook.

Sending a v2 of the patch.

Thanks again for the heads-up and sorry for the mess ;)

Thanks!

On Tue, 20 Dec 2022 at 21:44, Ricardo Ribalda <ribalda@chromium.org> wrote:
>
> Hi Roger
>
> Thanks for the heads up.
>
> This is the tree that I am using to test this:
> https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/3918592/7
> ( https://chromium.googlesource.com/chromiumos/third_party/kernel/+/3daf57d76c9e3d7c73d038ff2e43984412b503a2
> )
>
> You can use this tool for kexec:
> https://chromium-review.googlesource.com/c/chromiumos/platform2/+/3953579
>
> The syntax is kexec-lite  --reboot --kernel /boot/Image --cmdline
> "$(cat /proc/cmdline)"
>
> On Tue, 20 Dec 2022 at 15:50, Matthias Brugger <matthias.bgg@gmail.com> wrote:
> >
> >
> >
> > On 20/12/2022 12:03, Roger Lu (陸瑞傑) wrote:
> > > Hi Matthias Sir,
> > >
> > > After applying this patch, SVS probes fail as below on my MT8192 platform. If
> > > thing isn't too late, please do not merge this patch. I'll ask Ricardo how to
> > > reproduce this issue and give the correct solution. Thanks in advance.
> > >
> >
> > Ok, I just dropped the patch from v6.2-tmp/soc branch.
> >
> > Regards,
> > Matthias
> >
> > > #MT8192 platform SVS probe fail log
> > > [   10.209430]  SVSB_GPU_LOW: init02 completion timeout
> > > [   10.214402] mtk-svs 1100b000.svs: svs start fail: -16
> > > [   10.219479] mtk-svs: probe of 1100b000.svs failed with error -16
> > >
> > > Hi Ricardo,
> > >
> > > Could you share us how you reproduce this issue? I have MT8192 Chromebook and
> > > can give it a try to reproduce the issue you encountered. Thanks a lot.
> > >
> > > Sincerely,
> > > Roger Lu.
> > >
> > > On Fri, 2022-12-16 at 13:47 +0100, Matthias Brugger wrote:
> > >>
> > >> On 30/11/2022 12:00, AngeloGioacchino Del Regno wrote:
> > >> > Il 27/11/22 21:22, Ricardo Ribalda ha scritto:
> > >> > > 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 <ribalda@chromium.org>
> > >> >
> > >> > Reviewed-by: AngeloGioacchino Del Regno <
> > >> > angelogioacchino.delregno@collabora.com>
> > >> >
> > >> >
> > >>
> > >> Applied thanks!
> > >>
> > >
> > > ************* MEDIATEK Confidentiality Notice ********************
> > > The information contained in this e-mail message (including any
> > > attachments) may be confidential, proprietary, privileged, or otherwise
> > > exempt from disclosure under applicable laws. It is intended to be
> > > conveyed only to the designated recipient(s). Any use, dissemination,
> > > distribution, printing, retaining or copying of this e-mail (including its
> > > attachments) by unintended recipient(s) is strictly prohibited and may
> > > be unlawful. If you are not an intended recipient of this e-mail, or believe
> > > that you have received this e-mail in error, please notify the sender
> > > immediately (by replying to this e-mail), delete any and all copies of
> > > this e-mail (including any attachments) from your system, and do not
> > > disclose the content of this e-mail to any other person. Thank you!
>
>
>
> --
> Ricardo Ribalda
  

Patch

diff --git a/drivers/soc/mediatek/mtk-svs.c b/drivers/soc/mediatek/mtk-svs.c
index 0469c9dfeb04..0451603a8cb0 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",
@@ -2426,6 +2418,14 @@  static int svs_probe(struct platform_device *pdev)
 		goto svs_probe_iounmap;
 	}
 
+	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;
+	}
+
 	return 0;
 
 svs_probe_iounmap: