Skip to content

Commit

Permalink
remoteproc: k3-r5: Add devm action to release tsp
Browse files Browse the repository at this point in the history
Use a device lifecycle managed action to release tsp ti_sci_proc handle.
This helps prevent mistakes like releasing out of order in cleanup
functions and forgetting to release on error paths.

Signed-off-by: Beleswar Padhi <b-padhi@ti.com>
Reviewed-by: Andrew Davis <afd@ti.com>
Link: https://lore.kernel.org/r/20241219110545.1898883-6-b-padhi@ti.com
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
  • Loading branch information
Beleswar Padhi authored and Mathieu Poirier committed Jan 6, 2025
1 parent de182d2 commit 8c8df9b
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions drivers/remoteproc/ti_k3_r5_remoteproc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1487,6 +1487,13 @@ static int k3_r5_core_of_get_sram_memories(struct platform_device *pdev,
return 0;
}

static void k3_r5_release_tsp(void *data)
{
struct ti_sci_proc *tsp = data;

ti_sci_proc_release(tsp);
}

static int k3_r5_core_of_init(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
Expand Down Expand Up @@ -1580,6 +1587,10 @@ static int k3_r5_core_of_init(struct platform_device *pdev)
goto err;
}

ret = devm_add_action_or_reset(dev, k3_r5_release_tsp, core->tsp);
if (ret)
goto err;

platform_set_drvdata(pdev, core);
devres_close_group(dev, k3_r5_core_of_init);

Expand All @@ -1596,13 +1607,7 @@ static int k3_r5_core_of_init(struct platform_device *pdev)
*/
static void k3_r5_core_of_exit(struct platform_device *pdev)
{
struct k3_r5_core *core = platform_get_drvdata(pdev);
struct device *dev = &pdev->dev;
int ret;

ret = ti_sci_proc_release(core->tsp);
if (ret)
dev_err(dev, "failed to release proc, ret = %d\n", ret);

platform_set_drvdata(pdev, NULL);
devres_release_group(dev, k3_r5_core_of_init);
Expand Down

0 comments on commit 8c8df9b

Please sign in to comment.