Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933625AbcKNKLG (ORCPT ); Mon, 14 Nov 2016 05:11:06 -0500 Received: from mailout3.w1.samsung.com ([210.118.77.13]:25066 "EHLO mailout3.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752395AbcKNKJN (ORCPT ); Mon, 14 Nov 2016 05:09:13 -0500 X-AuditID: cbfec7f4-f791c6d000006eac-0e-58298d456b64 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, Joerg Roedel Cc: Marek Szyprowski , Inki Dae , Kukjin Kim , Krzysztof Kozlowski , Bartlomiej Zolnierkiewicz , "Rafael J. Wysocki" , Mark Brown , "Luis R. Rodriguez" , Greg Kroah-Hartman , Tomeu Vizoso , Lukas Wunner , Kevin Hilman , Tobias Jakobi , Tomasz Figa Subject: [PATCH v7 0/7] Exynos IOMMU: proper runtime PM support (use device dependencies) Date: Mon, 14 Nov 2016 11:08:05 +0100 Message-id: <1479118092-1365-1-git-send-email-m.szyprowski@samsung.com> X-Mailer: git-send-email 1.9.1 X-Brightmail-Tracker: H4sIAAAAAAAAAzWSfyyUcRzH+97zPHePy9WzI77z64+TSuZX1L5LWVmtx8pq/ZNVlivPjnHY HaK2diO/O+S0LDrqlDlMHRNWudAdrrlDzCokJBWzNKqZ5e7hv9d7n/fr8/n+8SUxYRnhQsYl pjCyRHGCiMvHWw1/B3xPKr0jA/oaCfS8vIlA96ZmuChL08RFpZMlOKruDEH5Fc94qHj6B4Zm m6c5yGzeiMMdlVy0rOwBqNz8moO+zbmixp5xHhormQXonWmIQDn1SwTSdqwBVNQ4xD3mQM+8 UXPotvEaQLc/GOfROm0+l+582MCjVWO1gF438OiWkVycLmrRAnpZ50GX57YS57Zf5B+JYRLi 0hiZf2g0PzbPMMJLrnNPH/x3GyiABRYAOxJSwfCXZpTLshO0TDRtMJ8UUk8A1GS2b4ZlACsX KvAtQzWowNjBUwD7p3oAGxQc+HFuxbaLSwXCgoUCm+5IaQDsrRjlWANG6XE4f3d6wydJB+oS fLx40yrglBdcLZqyyQLqFBzNnuew5zxgn0FFWF1IfeBB5as2YHUh5Q51eoztnID6LNVm3wF+ N7bwWHaDw6rCzWcXA5iZ7cNyOYADCwKWQ2C3cZCwMkbtgKWt9zF2vQDm5QjZCg3VY82b64/D NZPSdlZIRcH+3lq8BLhWg21a4MikyqUSRh7sJxdL5amJEr9rSVId2PgrpnXj7zagMRzuAhQJ RPaCvKR9kUJCnCbPkHYBSGIiR4HnHe9IoSBGnHGDkSVdkaUmMPIu4EriImfBy+r3F4SURJzC xDNMMiPbmnJIOxcFoHAv6YFdORHd+Vl23ca5lQV9YW7VLTfn0Kovf9Yuy2Z9Fwv26kxulpgs cnJ6RBLWsDMmqDpT9fkrHZGwGu7pgHz2GA+V1WDdlheV/nz7vrpP0QFne43hS+fnjwbVmVP4 UTNvs+sLh8+UFV3f7e501fRInWocVh88HZU+MRf/M0yEy2PFgfsxmVz8HxbWoAEnAwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrJIsWRmVeSWpSXmKPExsVy+t/xa7qavZoRBlMO8FhsnLGe1WLqwyds Fs2L17NZTLo/gcViwX5ri87ZG9gt+h+/ZrZ4uvkxk8X580Du5V1z2Cw+9x5htJhxfh+TxYvn 0hZrj9xlt7gx4SmjxZnTl1gt2lZ/YLVYtesPo0Xf2ktsDsIeTw7OY/LYcXcJo8fOWXfZPTat 6mTz2D93DbvH5BvLGT3+HWP32HK1ncWjb8sqRo/Pm+Q8ZrRvYw3gjnKzyUhNTEktUkjNS85P ycxLt1UKDXHTtVBSyEvMTbVVitD1DQlSUihLzCkF8owM0ICDc4B7sJK+XYJbRsexq+wFK2Ur Lv5qYWxgvCDRxcjJISFgIjH5YgMzhC0mceHeerYuRi4OIYEljBKvP5xihnCamCS2frvPAlLF JmAo0fW2C6xKRGAxo0TDoSmMIA6zwDEWicU9B4FaODiEBaIlFr2rBmlgEVCV+N73kA3E5hVw l7jW+pIJYp2cxMljk1knMHIvYGRYxSiSWlqcm55bbKRXnJhbXJqXrpecn7uJERhN24793LKD setd8CFGAQ5GJR7ejnyNCCHWxLLiytxDjBIczEoivMo9mhFCvCmJlVWpRfnxRaU5qcWHGE2B lk9klhJNzgdGel5JvKGJobmloZGxhYW5kZGSOO/UD1fChQTSE0tSs1NTC1KLYPqYODilGhh3 h+w0WijHlLVsr67k+Uf1T2s+fpH6/VzhyfyNnUWpc5Rdfri+sFlRfHzviQ+G3FcWsjJbnk3/ nZrm9fdp3t9rm8J5xbbGn9+e2tDL+Xl6b8DmvO0ertOkm6S7y18cN7I8tO9py+K+k3x27tcc Qhxt+XqD/ge+nHDltKXAFM0VrK3zPtRrHs5UYinOSDTUYi4qTgQA59YD8bwCAAA= X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20161114100908eucas1p1658fdc7f8e9d528248542ccfda12c6e6 X-Msg-Generator: CA X-Sender-IP: 182.198.249.180 X-Local-Sender: =?UTF-8?B?TWFyZWsgU3p5cHJvd3NraRtTUlBPTC1LZXJuZWwgKFRQKRs=?= =?UTF-8?B?7IK87ISx7KCE7J6QG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Global-Sender: =?UTF-8?B?TWFyZWsgU3p5cHJvd3NraRtTUlBPTC1LZXJuZWwgKFRQKRtT?= =?UTF-8?B?YW1zdW5nIEVsZWN0cm9uaWNzG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDAyQ0QwMjczOTI=?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20161114100908eucas1p1658fdc7f8e9d528248542ccfda12c6e6 X-RootMTR: 20161114100908eucas1p1658fdc7f8e9d528248542ccfda12c6e6 References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3661 Lines: 90 Hello, This is another update of the patchset for adding proper runtime PM support to Exynos IOMMU driver. This has been achieved by using recently introduced device links, which lets SYSMMU controller's runtime PM to follow master's device runtime PM state (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 problem of all power domains being always enabled. It happened, because all SYSMMU controllers (which belongs to the same domains) are permanently kept active, because existing driver was simplified and kept SYSMMU device active all the time after initialization and attaching to the master device. This patchset is based on sixth version of Rafael's "Functional dependencies between devices" patchset [1], which has been merged to Greg's driver-core-next branch [2] (last patch commit id is baa8809f60971d10220dfe79248f54b2b265f003). As Greg pointed, the branch will not be rebased and can be used as a base for applying my patchset [3]. Joerg: I hope you can merge this version on top of Greg's driver-core-next branch to iommu tree. [1] https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1261311.html [2] git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git driver-core-next [3] https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1264906.html If one wants to test this patchset, I've provided a branch with all needed patches (a small fix for Exynos4 FIMC-IS DTS is still needed, it is already in samsung tree): https://git.linaro.org/people/marek.szyprowski/linux-srpol.git v4.9-iommu-pm-v7 Best regards Marek Szyprowski Samsung R&D Institute Poland Changelog: v7: - change type of sysmmu->active to bool, as pointed by Joerg - extended commit message with measured power reduction value v6: - removed LATE_SYSTEM_SLEEP_PM_OPS-based workaround, because it is no longer needed after introducing device links (they also take care of proper system sleep suspend/resume sequence) - updated some comments v5: https://lkml.org/lkml/2016/10/20/70 - split main patch into several small changes for easier review (requested by Luis Rodriquez) - fixed usage of runtime_pm_active, now it is guarded by pm_runtime_get_noresume() and pm_runtime_put() pair v4: http://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1241601.html - rebased on top of v4 of device dependencies/links patchset, what resolved system hang on reboot v3: http://www.spinics.net/lists/linux-samsung-soc/msg55256.html - rebased on top of latest device dependencies/links patchset - added proper locking between runtime pm, iommu_attach/detach and sysmmu enable/disable(added per iommu owner device's rpm lock) v2: http://www.spinics.net/lists/arm-kernel/msg512082.html - replaced PM notifiers with generic device dependencies/links developed by Rafael J. Wysocki v1: http://www.spinics.net/lists/arm-kernel/msg509600.html - initial version Patch summary: Marek Szyprowski (7): iommu/exynos: Remove excessive, useless debug iommu/exynos: Remove dead code iommu/exynos: Simplify internal enable/disable functions iommu/exynos: Set master device once on boot iommu/exynos: Rework and fix internal locking iommu/exynos: Add runtime pm support iommu/exynos: Use device dependency links to control runtime pm drivers/iommu/exynos-iommu.c | 230 ++++++++++++++++++------------------------- 1 file changed, 95 insertions(+), 135 deletions(-) -- 1.9.1