From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755233AbcFQG1P (ORCPT ); Fri, 17 Jun 2016 02:27:15 -0400 Received: from mailout4.w1.samsung.com ([210.118.77.14]:54471 "EHLO mailout4.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754996AbcFQG1M (ORCPT ); Fri, 17 Jun 2016 02:27:12 -0400 X-AuditID: cbfec7f5-f792a6d000001302-1d-5763983de28f From: Marek Szyprowski To: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: Marek Szyprowski , Joerg Roedel , Inki Dae , Kukjin Kim , Krzysztof Kozlowski , Bartlomiej Zolnierkiewicz , "Rafael J. Wysocki" , Ulf Hansson , Mark Brown , Greg Kroah-Hartman Subject: [PATCH v2 00/10] Exynos IOMMU: proper runtime PM support (use device dependencies) Date: Fri, 17 Jun 2016 08:26:50 +0200 Message-id: <1466144820-6286-1-git-send-email-m.szyprowski@samsung.com> X-Mailer: git-send-email 1.9.1 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrKLMWRmVeSWpSXmKPExsVy+t/xa7q2M5LDDT7ONbHYOGM9q8XUh0/Y LJoXr2ezmHR/AovFgv3WFp2zN7BbvH5haNH/+DWzxabH11gtLu+aw2bxufcIo8WM8/uYLNYe uctuceb0JVaL42vDHfg9nhycx+SxaVUnm8eda3vYPPbPXcPusXlJvcfkG8sZPbZcbWfx6Nuy itHj8ya5AM4oLpuU1JzMstQifbsErozG76vZCz6JVbzZd4KtgfGUUBcjB4eEgInE5qcmXYyc QKaYxIV769m6GLk4hASWMkpcPnKBHcJpYpI4P/MYE0gVm4ChRNfbLrAqEYGVjBLb9uxjBnGY BRYySzSvaWYBqRIWiJWYOmsGM4jNIqAq8eTaBrBuXgF3iUc3frNB7JOTOHlsMusERu4FjAyr GEVTS5MLipPSc430ihNzi0vz0vWS83M3MUIC8+sOxqXHrA4xCnAwKvHwrhBNDhdiTSwrrsw9 xCjBwawkwlsyCSjEm5JYWZValB9fVJqTWnyIUZqDRUmcd+au9yFCAumJJanZqakFqUUwWSYO TqkGxsxvsat+Gs3hXtfs42/o2ZR/cPN5xnO6XqV5Nxfpv1OTceKzXhu1deZORek9Ok0JGh1t E2bq3Fgobhjg0srQvyVRd/q+tvRDDpPuhEur718owH3vZY2nh+7uGxde8fWUxV85OM+kkKcq a0Xag6uzps5etH2Ot6aX9QVm9hlXIr4ckrr9WXfVTSWW4oxEQy3mouJEAGYxzP5IAgAA Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello, This patch series finally implements proper runtime PM support in Exynos IOMMU driver. This has been achieved by using device links, which lets SYSMMU controller's runtime PM to follow master's device runtime PM (the device which actually performs DMA transaction). The main idea behind this solution is an observation that any DMA activity from master device can be done only when master device is active, thus when master device is suspended SYSMMU controller device can also be suspended. This patchset solves the situation that power domains are always enabled, because all SYSMMU controllers (which belongs to those domains) are permanently active (because existing driver was simplified and kept SYSMMU device active all the time after initialization). Patches 1-5 are resend of the "[RFC][PATCH 0/5] Functional dependencies between devices" patchset: http://thread.gmane.org/gmane.linux.power-management.general/67424/focus=2126379 I've included them here, because it is hard to find them all on mailing list archives. Patches 6-8 are fixes to device dependencies/links code, which were required to use this solution for Exynos IOMMU driver. I'm not PM/runtime PM code expert, so please double check if my changes are really correct. This patchset requires my previous changes to Exynos IOMMU driver submitted in the "Exynos IOMMU: improve clock management" thread: http://www.spinics.net/lists/arm-kernel/msg505695.html Best regards Marek Szyprowski Samsung R&D Institute Poland Changelog: v2: - replaced PM notifiers with generic device dependencies/links developped by Rafael J. Wysocki v1: http://www.spinics.net/lists/arm-kernel/msg509600.html - initial version Patch summary: Marek Szyprowski (5): driver core: Avoid endless recursion if device has more than one link driver core: Add support for links to already probed drivers PM core: Fix restoring devices with links during system PM transition iommu/exynos: Remove excessive, useless debug iommu/exynos: Add proper runtime pm support Rafael J. Wysocki (5): driver core: Add a wrapper around __device_release_driver() driver core: Functional dependencies tracking support PM core: Make async suspend/resume of devices use device links PM core: Make runtime PM of devices use device links PM core: Optimize the use of device links for runtime PM drivers/base/base.h | 13 ++ drivers/base/core.c | 410 +++++++++++++++++++++++++++++++++++++++++++ drivers/base/dd.c | 65 +++++-- drivers/base/power/main.c | 68 ++++++- drivers/base/power/runtime.c | 130 +++++++++++++- drivers/iommu/exynos-iommu.c | 221 +++++++++++------------ include/linux/device.h | 41 +++++ include/linux/pm.h | 1 + include/linux/pm_runtime.h | 6 + 9 files changed, 809 insertions(+), 146 deletions(-) -- 1.9.1