Message ID | 1430727380-10912-13-git-send-email-m.szyprowski@samsung.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, 04 May 2015 10:16:07 +0200 Marek Szyprowski <m.szyprowski@samsung.com> wrote: > This patch fixes support for runtime power management for SYSMMU > controllers, so they are enabled when master device is attached. > You should later think that this style of runtime PM support will increase the leakage current because some devices may enable System MMUs during they are not working. If a device driver of a master device attaches its iommu domain in probe, its local power will be never gated. > Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> > --- > drivers/iommu/exynos-iommu.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c > index 598660c87410..734107ec78fa 100644 > --- a/drivers/iommu/exynos-iommu.c > +++ b/drivers/iommu/exynos-iommu.c > @@ -702,6 +702,7 @@ static int exynos_iommu_attach_device(struct iommu_domain *domain, > return -ENODEV; > > list_for_each_entry(data, &owner->clients, owner_node) { > + pm_runtime_get_sync(data->sysmmu); > ret = __sysmmu_enable(data, pagetable, domain); > if (ret >= 0) { > data->master = dev; > @@ -743,6 +744,7 @@ static void exynos_iommu_detach_device(struct iommu_domain *domain, > data->master = NULL; > list_del_init(&data->domain_node); > } > + pm_runtime_put(data->sysmmu); > found = true; > } > } > -- > 1.9.2 >
Hello, On 2015-05-10 15:38, Cho KyongHo wrote: > On Mon, 04 May 2015 10:16:07 +0200 Marek Szyprowski <m.szyprowski@samsung.com> wrote: > >> This patch fixes support for runtime power management for SYSMMU >> controllers, so they are enabled when master device is attached. >> > You should later think that this style of runtime PM support > will increase the leakage current because some devices may > enable System MMUs during they are not working. > If a device driver of a master device attaches its iommu domain > in probe, its local power will be never gated. Yes, true, but let's merge something that WORKS first and add more fine-grained runtime-pm later as a separate patch. Some time ago I've posted a fully-blown patchset for Exynos IOMMU will all features (https://lkml.org/lkml/2014/8/5/183) - but it turned out that it will be to hard to agree on all needed features and dependencies, so I simplified the code as much as possible. All remaining features (like fine-grained power management and access for more than one iommu controller per device) will be posted separately. > >> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> >> --- >> drivers/iommu/exynos-iommu.c | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c >> index 598660c87410..734107ec78fa 100644 >> --- a/drivers/iommu/exynos-iommu.c >> +++ b/drivers/iommu/exynos-iommu.c >> @@ -702,6 +702,7 @@ static int exynos_iommu_attach_device(struct iommu_domain *domain, >> return -ENODEV; >> >> list_for_each_entry(data, &owner->clients, owner_node) { >> + pm_runtime_get_sync(data->sysmmu); >> ret = __sysmmu_enable(data, pagetable, domain); >> if (ret >= 0) { >> data->master = dev; >> @@ -743,6 +744,7 @@ static void exynos_iommu_detach_device(struct iommu_domain *domain, >> data->master = NULL; >> list_del_init(&data->domain_node); >> } >> + pm_runtime_put(data->sysmmu); >> found = true; >> } >> } >> -- >> 1.9.2 Best regards
diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c index 598660c87410..734107ec78fa 100644 --- a/drivers/iommu/exynos-iommu.c +++ b/drivers/iommu/exynos-iommu.c @@ -702,6 +702,7 @@ static int exynos_iommu_attach_device(struct iommu_domain *domain, return -ENODEV; list_for_each_entry(data, &owner->clients, owner_node) { + pm_runtime_get_sync(data->sysmmu); ret = __sysmmu_enable(data, pagetable, domain); if (ret >= 0) { data->master = dev; @@ -743,6 +744,7 @@ static void exynos_iommu_detach_device(struct iommu_domain *domain, data->master = NULL; list_del_init(&data->domain_node); } + pm_runtime_put(data->sysmmu); found = true; } }
This patch fixes support for runtime power management for SYSMMU controllers, so they are enabled when master device is attached. Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> --- drivers/iommu/exynos-iommu.c | 2 ++ 1 file changed, 2 insertions(+)