* [PATCH v2 0/6] media: Use devm_of_reserved_mem_device_init()
@ 2026-09-02 20:06 Mukesh Ojha
2026-09-02 20:06 ` [PATCH v2 1/6] media: synopsys: hdmirx: " Mukesh Ojha
` (5 more replies)
0 siblings, 6 replies; 8+ messages in thread
From: Mukesh Ojha @ 2026-09-02 20:06 UTC (permalink / raw)
To: Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab, Eddie James,
Joel Stanley, Andrew Jeffery, Minghsiu Tsai, Houlong Wei,
Andrew-CT Chen, Tiffany Lin, Yunfei Dong, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Maxime Ripard, Paul Kocialkowski,
Greg Kroah-Hartman, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
Cc: Ryan Chen, Billy Tsai, linux-media, linux-kernel, openbmc,
linux-arm-kernel, linux-aspeed, linux-mediatek, kernel,
linux-staging, linux-sunxi, Mukesh Ojha
Several media drivers manually manage reserved memory lifetime by calling
of_reserved_mem_device_init() in probe and of_reserved_mem_device_release()
in remove. Drivers that fail to release on every error path between the two
calls leak the reserved memory region until the driver is unloaded.
devm_of_reserved_mem_device_init() was recently introduced to tie the
release to the device's devres lifetime automatically. Convert the affected
media drivers to use it, removing the manual release calls and any wrapper
devres actions.
Changes since v1: https://lore.kernel.org/lkml/20260703193855.110619-2-mukesh.ojha@oss.qualcomm.com/
- Carried R-b tag if any.
- Rebased it.
Mukesh Ojha (6):
media: synopsys: hdmirx: Use devm_of_reserved_mem_device_init()
media: aspeed: Use devm_of_reserved_mem_device_init()
media: nuvoton: npcm-video: Use devm_of_reserved_mem_device_init()
media: arm: mali-c55: Use devm_of_reserved_mem_device_init()
media: mediatek: vpu: Use devm_of_reserved_mem_device_init()
staging: media: cedrus: Use devm_of_reserved_mem_device_init()
.../media/platform/arm/mali-c55/mali-c55-core.c | 12 +++---------
drivers/media/platform/aspeed/aspeed-video.c | 12 ++++--------
drivers/media/platform/mediatek/vpu/mtk_vpu.c | 3 +--
drivers/media/platform/nuvoton/npcm-video.c | 9 ++-------
.../media/platform/synopsys/hdmirx/snps_hdmirx.c | 16 ++--------------
drivers/staging/media/sunxi/cedrus/cedrus_hw.c | 9 ++-------
6 files changed, 14 insertions(+), 47 deletions(-)
--
2.55.0
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 1/6] media: synopsys: hdmirx: Use devm_of_reserved_mem_device_init()
2026-09-02 20:06 [PATCH v2 0/6] media: Use devm_of_reserved_mem_device_init() Mukesh Ojha
@ 2026-09-02 20:06 ` Mukesh Ojha
2026-09-02 20:06 ` [PATCH v2 2/6] media: aspeed: " Mukesh Ojha
` (4 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Mukesh Ojha @ 2026-09-02 20:06 UTC (permalink / raw)
To: Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab, Eddie James,
Joel Stanley, Andrew Jeffery, Minghsiu Tsai, Houlong Wei,
Andrew-CT Chen, Tiffany Lin, Yunfei Dong, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Maxime Ripard, Paul Kocialkowski,
Greg Kroah-Hartman, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
Cc: Ryan Chen, Billy Tsai, linux-media, linux-kernel, openbmc,
linux-arm-kernel, linux-aspeed, linux-mediatek, kernel,
linux-staging, linux-sunxi, Mukesh Ojha
Replace the hand-rolled devm_hdmirx_of_reserved_mem_device_release()
devres action with devm_of_reserved_mem_device_init(), which handles the
cleanup automatically. This removes both the wrapper function and the
devm_add_action_or_reset() call.
Reviewed-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
.../media/platform/synopsys/hdmirx/snps_hdmirx.c | 16 ++--------------
1 file changed, 2 insertions(+), 14 deletions(-)
diff --git a/drivers/media/platform/synopsys/hdmirx/snps_hdmirx.c b/drivers/media/platform/synopsys/hdmirx/snps_hdmirx.c
index 25f8ca0d6d94..7c6acc6d7e88 100644
--- a/drivers/media/platform/synopsys/hdmirx/snps_hdmirx.c
+++ b/drivers/media/platform/synopsys/hdmirx/snps_hdmirx.c
@@ -2265,11 +2265,6 @@ static const struct hdmirx_cec_ops hdmirx_cec_ops = {
.read = hdmirx_readl,
};
-static void devm_hdmirx_of_reserved_mem_device_release(void *dev)
-{
- of_reserved_mem_device_release(dev);
-}
-
static int hdmirx_parse_dt(struct snps_hdmirx_dev *hdmirx_dev)
{
struct device *dev = hdmirx_dev->dev;
@@ -2316,16 +2311,9 @@ static int hdmirx_parse_dt(struct snps_hdmirx_dev *hdmirx_dev)
if (!device_property_read_bool(dev, "hpd-is-active-low"))
hdmirx_dev->hpd_trigger_level_high = true;
- ret = of_reserved_mem_device_init(dev);
- if (ret) {
+ ret = devm_of_reserved_mem_device_init(dev);
+ if (ret)
dev_warn(dev, "no reserved memory for HDMIRX, use default CMA\n");
- } else {
- ret = devm_add_action_or_reset(dev,
- devm_hdmirx_of_reserved_mem_device_release,
- dev);
- if (ret)
- return ret;
- }
return 0;
}
--
2.55.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 2/6] media: aspeed: Use devm_of_reserved_mem_device_init()
2026-09-02 20:06 [PATCH v2 0/6] media: Use devm_of_reserved_mem_device_init() Mukesh Ojha
2026-09-02 20:06 ` [PATCH v2 1/6] media: synopsys: hdmirx: " Mukesh Ojha
@ 2026-09-02 20:06 ` Mukesh Ojha
2026-09-02 20:07 ` [PATCH v2 3/6] media: nuvoton: npcm-video: " Mukesh Ojha
` (3 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Mukesh Ojha @ 2026-09-02 20:06 UTC (permalink / raw)
To: Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab, Eddie James,
Joel Stanley, Andrew Jeffery, Minghsiu Tsai, Houlong Wei,
Andrew-CT Chen, Tiffany Lin, Yunfei Dong, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Maxime Ripard, Paul Kocialkowski,
Greg Kroah-Hartman, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
Cc: Ryan Chen, Billy Tsai, linux-media, linux-kernel, openbmc,
linux-arm-kernel, linux-aspeed, linux-mediatek, kernel,
linux-staging, linux-sunxi, Mukesh Ojha
Switch to devm_of_reserved_mem_device_init() so the reserved memory
region is released automatically on probe failure or device removal.
Remove the three explicit of_reserved_mem_device_release() calls and
rename the error label from err_release_reserved_mem to
err_unprepare_vclk to reflect that it now only unwinds clock state.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/media/platform/aspeed/aspeed-video.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/drivers/media/platform/aspeed/aspeed-video.c b/drivers/media/platform/aspeed/aspeed-video.c
index a292275f6b7b..7ba9314fdbd2 100644
--- a/drivers/media/platform/aspeed/aspeed-video.c
+++ b/drivers/media/platform/aspeed/aspeed-video.c
@@ -2267,19 +2267,19 @@ static int aspeed_video_init(struct aspeed_video *video)
if (rc)
goto err_unprepare_eclk;
- of_reserved_mem_device_init(dev);
+ devm_of_reserved_mem_device_init(dev);
rc = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32));
if (rc) {
dev_err(dev, "Failed to set DMA mask\n");
- goto err_release_reserved_mem;
+ goto err_unprepare_vclk;
}
if (!aspeed_video_alloc_buf(video, &video->jpeg,
VE_JPEG_HEADER_SIZE)) {
dev_err(dev, "Failed to allocate DMA for JPEG header\n");
rc = -ENOMEM;
- goto err_release_reserved_mem;
+ goto err_unprepare_vclk;
}
dev_info(video->dev, "alloc mem size(%d) at %pad for jpeg header\n",
VE_JPEG_HEADER_SIZE, &video->jpeg.dma);
@@ -2288,8 +2288,7 @@ static int aspeed_video_init(struct aspeed_video *video)
return 0;
-err_release_reserved_mem:
- of_reserved_mem_device_release(dev);
+err_unprepare_vclk:
clk_unprepare(video->vclk);
err_unprepare_eclk:
clk_unprepare(video->eclk);
@@ -2343,7 +2342,6 @@ static int aspeed_video_probe(struct platform_device *pdev)
rc = aspeed_video_setup_video(video);
if (rc) {
aspeed_video_free_buf(video, &video->jpeg);
- of_reserved_mem_device_release(&pdev->dev);
clk_unprepare(video->vclk);
clk_unprepare(video->eclk);
return rc;
@@ -2374,8 +2372,6 @@ static void aspeed_video_remove(struct platform_device *pdev)
v4l2_device_unregister(v4l2_dev);
aspeed_video_free_buf(video, &video->jpeg);
-
- of_reserved_mem_device_release(dev);
}
static struct platform_driver aspeed_video_driver = {
--
2.55.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 3/6] media: nuvoton: npcm-video: Use devm_of_reserved_mem_device_init()
2026-09-02 20:06 [PATCH v2 0/6] media: Use devm_of_reserved_mem_device_init() Mukesh Ojha
2026-09-02 20:06 ` [PATCH v2 1/6] media: synopsys: hdmirx: " Mukesh Ojha
2026-09-02 20:06 ` [PATCH v2 2/6] media: aspeed: " Mukesh Ojha
@ 2026-09-02 20:07 ` Mukesh Ojha
2026-09-02 20:07 ` [PATCH v2 4/6] media: arm: mali-c55: " Mukesh Ojha
` (2 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Mukesh Ojha @ 2026-09-02 20:07 UTC (permalink / raw)
To: Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab, Eddie James,
Joel Stanley, Andrew Jeffery, Minghsiu Tsai, Houlong Wei,
Andrew-CT Chen, Tiffany Lin, Yunfei Dong, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Maxime Ripard, Paul Kocialkowski,
Greg Kroah-Hartman, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
Cc: Ryan Chen, Billy Tsai, linux-media, linux-kernel, openbmc,
linux-arm-kernel, linux-aspeed, linux-mediatek, kernel,
linux-staging, linux-sunxi, Mukesh Ojha
Switch to devm_of_reserved_mem_device_init() so the reserved memory
region is released automatically on probe failure or device removal.
Remove the four explicit of_reserved_mem_device_release() calls and
collapse the now-empty err_release_mem label into err_free.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/media/platform/nuvoton/npcm-video.c | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/drivers/media/platform/nuvoton/npcm-video.c b/drivers/media/platform/nuvoton/npcm-video.c
index 52505af35c08..6786736c8f07 100644
--- a/drivers/media/platform/nuvoton/npcm-video.c
+++ b/drivers/media/platform/nuvoton/npcm-video.c
@@ -1715,17 +1715,15 @@ static int npcm_video_init(struct npcm_video *video)
return rc;
}
- of_reserved_mem_device_init(dev);
+ devm_of_reserved_mem_device_init(dev);
rc = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32));
if (rc) {
dev_err(dev, "Failed to set DMA mask\n");
- of_reserved_mem_device_release(dev);
return rc;
}
rc = npcm_video_ece_init(video);
if (rc) {
- of_reserved_mem_device_release(dev);
dev_err(dev, "Failed to initialize ECE\n");
return rc;
}
@@ -1789,13 +1787,11 @@ static int npcm_video_probe(struct platform_device *pdev)
rc = npcm_video_setup_video(video);
if (rc)
- goto err_release_mem;
+ goto err_free;
dev_info(video->dev, "NPCM video driver probed\n");
return 0;
-err_release_mem:
- of_reserved_mem_device_release(&pdev->dev);
err_free:
kfree(video);
return rc;
@@ -1814,7 +1810,6 @@ static void npcm_video_remove(struct platform_device *pdev)
if (video->ece.enable)
npcm_video_ece_stop(video);
kfree(video);
- of_reserved_mem_device_release(dev);
}
static const struct of_device_id npcm_video_match[] = {
--
2.55.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 4/6] media: arm: mali-c55: Use devm_of_reserved_mem_device_init()
2026-09-02 20:06 [PATCH v2 0/6] media: Use devm_of_reserved_mem_device_init() Mukesh Ojha
` (2 preceding siblings ...)
2026-09-02 20:07 ` [PATCH v2 3/6] media: nuvoton: npcm-video: " Mukesh Ojha
@ 2026-09-02 20:07 ` Mukesh Ojha
2026-09-02 20:07 ` [PATCH v2 5/6] media: mediatek: vpu: " Mukesh Ojha
2026-09-02 20:07 ` [PATCH v2 6/6] staging: media: cedrus: " Mukesh Ojha
5 siblings, 0 replies; 8+ messages in thread
From: Mukesh Ojha @ 2026-09-02 20:07 UTC (permalink / raw)
To: Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab, Eddie James,
Joel Stanley, Andrew Jeffery, Minghsiu Tsai, Houlong Wei,
Andrew-CT Chen, Tiffany Lin, Yunfei Dong, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Maxime Ripard, Paul Kocialkowski,
Greg Kroah-Hartman, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
Cc: Ryan Chen, Billy Tsai, linux-media, linux-kernel, openbmc,
linux-arm-kernel, linux-aspeed, linux-mediatek, kernel,
linux-staging, linux-sunxi, Mukesh Ojha
Use the devres-managed devm_of_reserved_mem_device_init() instead of
the manual of_reserved_mem_device_init()/of_reserved_mem_device_release()
pair, letting the device resource manager handle cleanup automatically.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/media/platform/arm/mali-c55/mali-c55-core.c | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
diff --git a/drivers/media/platform/arm/mali-c55/mali-c55-core.c b/drivers/media/platform/arm/mali-c55/mali-c55-core.c
index f28e9f4354ac..3d37cd446583 100644
--- a/drivers/media/platform/arm/mali-c55/mali-c55-core.c
+++ b/drivers/media/platform/arm/mali-c55/mali-c55-core.c
@@ -803,14 +803,12 @@ static int mali_c55_probe(struct platform_device *pdev)
if (ret)
return dev_err_probe(dev, ret, "failed to acquire resets\n");
- of_reserved_mem_device_init(dev);
+ devm_of_reserved_mem_device_init(dev);
vb2_dma_contig_set_max_seg_size(dev, UINT_MAX);
ret = __mali_c55_power_on(mali_c55);
- if (ret) {
- dev_err_probe(dev, ret, "failed to power on\n");
- goto err_release_mem;
- }
+ if (ret)
+ return dev_err_probe(dev, ret, "failed to power on\n");
ret = mali_c55_check_hwcfg(mali_c55);
if (ret)
@@ -849,9 +847,6 @@ static int mali_c55_probe(struct platform_device *pdev)
kfree(mali_c55->context.registers);
err_power_off:
__mali_c55_power_off(mali_c55);
-err_release_mem:
- of_reserved_mem_device_release(dev);
-
return ret;
}
@@ -866,7 +861,6 @@ static void mali_c55_remove(struct platform_device *pdev)
}
pm_runtime_disable(&pdev->dev);
kfree(mali_c55->context.registers);
- of_reserved_mem_device_release(&pdev->dev);
}
static const struct of_device_id mali_c55_of_match[] = {
--
2.55.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 5/6] media: mediatek: vpu: Use devm_of_reserved_mem_device_init()
2026-09-02 20:06 [PATCH v2 0/6] media: Use devm_of_reserved_mem_device_init() Mukesh Ojha
` (3 preceding siblings ...)
2026-09-02 20:07 ` [PATCH v2 4/6] media: arm: mali-c55: " Mukesh Ojha
@ 2026-09-02 20:07 ` Mukesh Ojha
2026-09-03 3:08 ` Chen-Yu Tsai
2026-09-02 20:07 ` [PATCH v2 6/6] staging: media: cedrus: " Mukesh Ojha
5 siblings, 1 reply; 8+ messages in thread
From: Mukesh Ojha @ 2026-09-02 20:07 UTC (permalink / raw)
To: Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab, Eddie James,
Joel Stanley, Andrew Jeffery, Minghsiu Tsai, Houlong Wei,
Andrew-CT Chen, Tiffany Lin, Yunfei Dong, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Maxime Ripard, Paul Kocialkowski,
Greg Kroah-Hartman, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
Cc: Ryan Chen, Billy Tsai, linux-media, linux-kernel, openbmc,
linux-arm-kernel, linux-aspeed, linux-mediatek, kernel,
linux-staging, linux-sunxi, Mukesh Ojha
Use the devres-managed devm_of_reserved_mem_device_init() instead of
the manual of_reserved_mem_device_init()/of_reserved_mem_device_release()
pair, letting the device resource manager handle cleanup automatically.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/media/platform/mediatek/vpu/mtk_vpu.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/media/platform/mediatek/vpu/mtk_vpu.c b/drivers/media/platform/mediatek/vpu/mtk_vpu.c
index 8d8319f0cd22..557bffb2c2f1 100644
--- a/drivers/media/platform/mediatek/vpu/mtk_vpu.c
+++ b/drivers/media/platform/mediatek/vpu/mtk_vpu.c
@@ -888,7 +888,7 @@ static int mtk_vpu_probe(struct platform_device *pdev)
dev_info(dev, "4GB mode %u\n", vpu->enable_4GB);
if (vpu->enable_4GB) {
- ret = of_reserved_mem_device_init(dev);
+ ret = devm_of_reserved_mem_device_init(dev);
if (ret)
dev_info(dev, "init reserved memory failed\n");
/* continue to use dynamic allocation if failed */
@@ -930,7 +930,6 @@ static int mtk_vpu_probe(struct platform_device *pdev)
free_d_mem:
vpu_free_ext_mem(vpu, D_FW);
remove_debugfs:
- of_reserved_mem_device_release(dev);
#ifdef CONFIG_DEBUG_FS
debugfs_remove(vpu_debugfs);
#endif
--
2.55.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 6/6] staging: media: cedrus: Use devm_of_reserved_mem_device_init()
2026-09-02 20:06 [PATCH v2 0/6] media: Use devm_of_reserved_mem_device_init() Mukesh Ojha
` (4 preceding siblings ...)
2026-09-02 20:07 ` [PATCH v2 5/6] media: mediatek: vpu: " Mukesh Ojha
@ 2026-09-02 20:07 ` Mukesh Ojha
5 siblings, 0 replies; 8+ messages in thread
From: Mukesh Ojha @ 2026-09-02 20:07 UTC (permalink / raw)
To: Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab, Eddie James,
Joel Stanley, Andrew Jeffery, Minghsiu Tsai, Houlong Wei,
Andrew-CT Chen, Tiffany Lin, Yunfei Dong, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Maxime Ripard, Paul Kocialkowski,
Greg Kroah-Hartman, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
Cc: Ryan Chen, Billy Tsai, linux-media, linux-kernel, openbmc,
linux-arm-kernel, linux-aspeed, linux-mediatek, kernel,
linux-staging, linux-sunxi, Mukesh Ojha
Use the devres-managed devm_of_reserved_mem_device_init() instead of
the manual of_reserved_mem_device_init()/of_reserved_mem_device_release()
pair, letting the device resource manager handle cleanup automatically.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/staging/media/sunxi/cedrus/cedrus_hw.c | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_hw.c b/drivers/staging/media/sunxi/cedrus/cedrus_hw.c
index 444fb53878d1..4a15f45ad077 100644
--- a/drivers/staging/media/sunxi/cedrus/cedrus_hw.c
+++ b/drivers/staging/media/sunxi/cedrus/cedrus_hw.c
@@ -266,7 +266,7 @@ int cedrus_hw_probe(struct cedrus_dev *dev)
return ret;
}
- ret = of_reserved_mem_device_init(dev->dev);
+ ret = devm_of_reserved_mem_device_init(dev->dev);
if (ret && ret != -ENODEV) {
dev_err(dev->dev, "Failed to reserve memory\n");
@@ -277,7 +277,7 @@ int cedrus_hw_probe(struct cedrus_dev *dev)
if (ret) {
dev_err(dev->dev, "Failed to claim SRAM\n");
- goto err_mem;
+ return ret;
}
dev->ahb_clk = devm_clk_get(dev->dev, "ahb");
@@ -340,9 +340,6 @@ int cedrus_hw_probe(struct cedrus_dev *dev)
pm_runtime_disable(dev->dev);
err_sram:
sunxi_sram_release(dev->dev);
-err_mem:
- of_reserved_mem_device_release(dev->dev);
-
return ret;
}
@@ -353,6 +350,4 @@ void cedrus_hw_remove(struct cedrus_dev *dev)
cedrus_hw_suspend(dev->dev);
sunxi_sram_release(dev->dev);
-
- of_reserved_mem_device_release(dev->dev);
}
--
2.55.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 5/6] media: mediatek: vpu: Use devm_of_reserved_mem_device_init()
2026-09-02 20:07 ` [PATCH v2 5/6] media: mediatek: vpu: " Mukesh Ojha
@ 2026-09-03 3:08 ` Chen-Yu Tsai
0 siblings, 0 replies; 8+ messages in thread
From: Chen-Yu Tsai @ 2026-09-03 3:08 UTC (permalink / raw)
To: Mukesh Ojha
Cc: Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab, Eddie James,
Joel Stanley, Andrew Jeffery, Minghsiu Tsai, Houlong Wei,
Andrew-CT Chen, Tiffany Lin, Yunfei Dong, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Maxime Ripard, Paul Kocialkowski,
Greg Kroah-Hartman, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland,
Ryan Chen, Billy Tsai, linux-media, linux-kernel, openbmc,
linux-arm-kernel, linux-aspeed, linux-mediatek, kernel,
linux-staging, linux-sunxi
On Thu, Sep 3, 2026 at 4:08 AM Mukesh Ojha <mukesh.ojha@oss.qualcomm.com> wrote:
>
> Use the devres-managed devm_of_reserved_mem_device_init() instead of
> the manual of_reserved_mem_device_init()/of_reserved_mem_device_release()
> pair, letting the device resource manager handle cleanup automatically.
>
> Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
> ---
> drivers/media/platform/mediatek/vpu/mtk_vpu.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/media/platform/mediatek/vpu/mtk_vpu.c b/drivers/media/platform/mediatek/vpu/mtk_vpu.c
> index 8d8319f0cd22..557bffb2c2f1 100644
> --- a/drivers/media/platform/mediatek/vpu/mtk_vpu.c
> +++ b/drivers/media/platform/mediatek/vpu/mtk_vpu.c
> @@ -888,7 +888,7 @@ static int mtk_vpu_probe(struct platform_device *pdev)
> dev_info(dev, "4GB mode %u\n", vpu->enable_4GB);
>
> if (vpu->enable_4GB) {
> - ret = of_reserved_mem_device_init(dev);
> + ret = devm_of_reserved_mem_device_init(dev);
There are non-devm calls before this. Inserting a devm call in here
messes up the unwind order and leads to confusion. In other words
this is a bad idea.
OOTH, the remove function is missing a release call.
> if (ret)
> dev_info(dev, "init reserved memory failed\n");
> /* continue to use dynamic allocation if failed */
> @@ -930,7 +930,6 @@ static int mtk_vpu_probe(struct platform_device *pdev)
> free_d_mem:
> vpu_free_ext_mem(vpu, D_FW);
> remove_debugfs:
> - of_reserved_mem_device_release(dev);
> #ifdef CONFIG_DEBUG_FS
> debugfs_remove(vpu_debugfs);
> #endif
> --
> 2.55.0
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-09-03 3:08 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-02 20:06 [PATCH v2 0/6] media: Use devm_of_reserved_mem_device_init() Mukesh Ojha
2026-09-02 20:06 ` [PATCH v2 1/6] media: synopsys: hdmirx: " Mukesh Ojha
2026-09-02 20:06 ` [PATCH v2 2/6] media: aspeed: " Mukesh Ojha
2026-09-02 20:07 ` [PATCH v2 3/6] media: nuvoton: npcm-video: " Mukesh Ojha
2026-09-02 20:07 ` [PATCH v2 4/6] media: arm: mali-c55: " Mukesh Ojha
2026-09-02 20:07 ` [PATCH v2 5/6] media: mediatek: vpu: " Mukesh Ojha
2026-09-03 3:08 ` Chen-Yu Tsai
2026-09-02 20:07 ` [PATCH v2 6/6] staging: media: cedrus: " Mukesh Ojha
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox