While remove method shouldn't be implemented, as it can't be done reliably, the shutdown method can be useful for performing a kexec. That was inspired by other IOMMU drivers, see commit 1a4e90f25b2c ("iommu/rockchip: Perform a reset on shutdown") for example. Signed-off-by: Sam Protsenko <semen.protsenko@xxxxxxxxxx> --- Changes in v2: - New patch drivers/iommu/exynos-iommu.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c index aad845677bda..cd3f74e638f0 100644 --- a/drivers/iommu/exynos-iommu.c +++ b/drivers/iommu/exynos-iommu.c @@ -753,6 +753,16 @@ static int exynos_sysmmu_probe(struct platform_device *pdev) return ret; } +static void exynos_sysmmu_shutdown(struct platform_device *pdev) +{ + struct sysmmu_drvdata *data = platform_get_drvdata(pdev); + struct device *dev = &pdev->dev; + int irq = platform_get_irq(pdev, 0); + + devm_free_irq(dev, irq, data); + pm_runtime_force_suspend(dev); +} + static int __maybe_unused exynos_sysmmu_suspend(struct device *dev) { struct sysmmu_drvdata *data = dev_get_drvdata(dev); @@ -803,6 +813,7 @@ MODULE_DEVICE_TABLE(of, sysmmu_of_match); static struct platform_driver exynos_sysmmu_driver = { .probe = exynos_sysmmu_probe, + .shutdown = exynos_sysmmu_shutdown, .driver = { .name = "exynos-sysmmu", .of_match_table = sysmmu_of_match, -- 2.35.1