linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] media: mtk-jpeg: Set platform driver data earlier
@ 2023-07-10  6:51 Chen-Yu Tsai
  2023-07-10  8:05 ` AngeloGioacchino Del Regno
  0 siblings, 1 reply; 2+ messages in thread
From: Chen-Yu Tsai @ 2023-07-10  6:51 UTC (permalink / raw)
  To: Bin Liu, Mauro Carvalho Chehab, Hans Verkuil, Matthias Brugger,
	AngeloGioacchino Del Regno
  Cc: Chen-Yu Tsai, linux-media, linux-kernel, linux-arm-kernel,
	linux-mediatek, kyrie.wu, irui.wang

In the multi-core JPEG encoder/decoder setup, the driver for the
individual cores references the parent device's platform driver data.
However, in the parent driver, this is only set at the end of the probe
function, way later than devm_of_platform_populate(), which triggers
the probe of the cores. This causes a kernel splat in the sub-device
probe function.

Move platform_set_drvdata() to before devm_of_platform_populate() to
fix this.

Fixes: 934e8bccac95 ("mtk-jpegenc: support jpegenc multi-hardware")
Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
---
Not sure what caused this to surface just now, given that the driver
changes were merged in v6.2-rc1, and the corresponding dts entries
in v6.3-rc1.

This fixes boot failures on MT8195. Please apply and send to Linus ASAP.

 drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
index 4768156181c9..6a8eea9dde67 100644
--- a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
+++ b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
@@ -1312,6 +1312,8 @@ static int mtk_jpeg_probe(struct platform_device *pdev)
 	jpeg->dev = &pdev->dev;
 	jpeg->variant = of_device_get_match_data(jpeg->dev);
 
+	platform_set_drvdata(pdev, jpeg);
+
 	ret = devm_of_platform_populate(&pdev->dev);
 	if (ret) {
 		v4l2_err(&jpeg->v4l2_dev, "Master of platform populate failed.");
@@ -1383,8 +1385,6 @@ static int mtk_jpeg_probe(struct platform_device *pdev)
 		  jpeg->variant->dev_name, jpeg->vdev->num,
 		  VIDEO_MAJOR, jpeg->vdev->minor);
 
-	platform_set_drvdata(pdev, jpeg);
-
 	pm_runtime_enable(&pdev->dev);
 
 	return 0;
-- 
2.41.0.255.g8b1d071c50-goog


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

* Re: [PATCH] media: mtk-jpeg: Set platform driver data earlier
  2023-07-10  6:51 [PATCH] media: mtk-jpeg: Set platform driver data earlier Chen-Yu Tsai
@ 2023-07-10  8:05 ` AngeloGioacchino Del Regno
  0 siblings, 0 replies; 2+ messages in thread
From: AngeloGioacchino Del Regno @ 2023-07-10  8:05 UTC (permalink / raw)
  To: Chen-Yu Tsai, Bin Liu, Mauro Carvalho Chehab, Hans Verkuil,
	Matthias Brugger
  Cc: linux-media, linux-kernel, linux-arm-kernel, linux-mediatek,
	kyrie.wu, irui.wang

Il 10/07/23 08:51, Chen-Yu Tsai ha scritto:
> In the multi-core JPEG encoder/decoder setup, the driver for the
> individual cores references the parent device's platform driver data.
> However, in the parent driver, this is only set at the end of the probe
> function, way later than devm_of_platform_populate(), which triggers
> the probe of the cores. This causes a kernel splat in the sub-device
> probe function.
> 
> Move platform_set_drvdata() to before devm_of_platform_populate() to
> fix this.
> 
> Fixes: 934e8bccac95 ("mtk-jpegenc: support jpegenc multi-hardware")
> Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>

> ---
> Not sure what caused this to surface just now, given that the driver
> changes were merged in v6.2-rc1, and the corresponding dts entries
> in v6.3-rc1.
> 
> This fixes boot failures on MT8195. Please apply and send to Linus ASAP.
> 
>   drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
> index 4768156181c9..6a8eea9dde67 100644
> --- a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
> +++ b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
> @@ -1312,6 +1312,8 @@ static int mtk_jpeg_probe(struct platform_device *pdev)
>   	jpeg->dev = &pdev->dev;
>   	jpeg->variant = of_device_get_match_data(jpeg->dev);
>   
> +	platform_set_drvdata(pdev, jpeg);
> +
>   	ret = devm_of_platform_populate(&pdev->dev);
>   	if (ret) {
>   		v4l2_err(&jpeg->v4l2_dev, "Master of platform populate failed.");
> @@ -1383,8 +1385,6 @@ static int mtk_jpeg_probe(struct platform_device *pdev)
>   		  jpeg->variant->dev_name, jpeg->vdev->num,
>   		  VIDEO_MAJOR, jpeg->vdev->minor);
>   
> -	platform_set_drvdata(pdev, jpeg);
> -
>   	pm_runtime_enable(&pdev->dev);
>   
>   	return 0;


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

end of thread, other threads:[~2023-07-10  8:05 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-10  6:51 [PATCH] media: mtk-jpeg: Set platform driver data earlier Chen-Yu Tsai
2023-07-10  8:05 ` AngeloGioacchino Del Regno

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