From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S938649AbcJXMja (ORCPT ); Mon, 24 Oct 2016 08:39:30 -0400 Received: from mailout1.w1.samsung.com ([210.118.77.11]:40263 "EHLO mailout1.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934997AbcJXMj0 (ORCPT ); Mon, 24 Oct 2016 08:39:26 -0400 X-AuditID: cbfec7f5-f79ce6d000004c54-7d-580e00f68f48 Subject: Re: [PATCH v5 7/7] iommu/exynos: Use device dependency links to control runtime pm To: Sricharan , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org, linux-samsung-soc@vger.kernel.org Cc: "'Tomeu Vizoso'" , "'Bartlomiej Zolnierkiewicz'" , "'Greg Kroah-Hartman'" , "'Kevin Hilman'" , "'Rafael J. Wysocki'" , "'Tomasz Figa'" , "'Krzysztof Kozlowski'" , "'Inki Dae'" , "'Tobias Jakobi'" , "'Luis R. Rodriguez'" , "'Kukjin Kim'" , "'Mark Brown'" , "'Lukas Wunner'" From: Marek Szyprowski Message-id: Date: Mon, 24 Oct 2016 14:39:15 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-version: 1.0 In-reply-to: <004a01d22df2$45ecd450$d1c67cf0$@codeaurora.org> Content-type: text/plain; charset=utf-8; format=flowed Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA02Sa0hTYRjHe3cuO1qL07R60lJY9MVylhS8pUWF0PnQhyBIkW4rD05yVjuu VPog6bwsMlMrM6OVmbl05oVhM7zMnJo1U8uMUAudmmEU1tIIadsx8NvveZ/L//m/PAwhH6cC mISkZF6bpEpU0L6kxT7vCHUtWxmztWsuEtcW11D4xudxGmeU1dC4YDSfxMaWCHxt7CuBnfVj Etzb+1SKB6ylNJ69+gLh4t5mCZ6aDMRD+U6EX/X0U/jn9RwSZz35TmGT9S/CedX99F45N5B3 VcI1Dj9E3LOSYSlXZ8qluZa7VVKucKgCcQt2KdfwLpvk8hpMiJutC+KKsy3UoeWxvpFxfGLC BV4btuekr/qboZk6ZwxMsXzokKSjpjUG5MMAux2mK2dpkdfAm5EaN/sycrYcQcf4iFQMZhF0 3X5C/e8YfPOeEhOPEOSWViwGkwhe39RLPFV+7DEwWl962/3ZSgQ3P+i9gwm2moTu3MteRZrd BoYZg5dl7B7IbLcjD5PsJnC4rN731exR+Fg0SIg1q2CucIT0sA+7G7LMtVIPE+wumFjQUyIH Q33VDOERA/Y+A+aeSvdKjDvYAHWthOghCuzZBYuu/WC6s0Eq8noYKLxCinwNwWX9ZpGLEThm ZCJHQHtn36LWSiiw3CLE8TLIyZKLyMFw7UGxeh/ccQyS4ge5JODq7CPyUXDJEjclSxyULHFg RIQJ+fM6QRPPCzuUgkoj6JLilafPauqQ+/Z6Fjp/NaJy+y4bYhmkWCHr6l8RI6dUF4RUjQ0B Qyj8ZaHu05TL4lSpabz27AmtLpEXbCiQIRVrZc+Nb6PlbLwqmT/D8+d47f+shPEJSEcX1b2x o2XM6IQzdtJ84M/Y0aCA5Kn8lI60+FbzuvHz9yKUun2XhPAc5yF7puk8Ffl6b96ngQpabTBu ieorCu92FHU4N0/Zflt+ZBwJG7TuP/XpS2yqjU6MntfuVrYdoeavNG08XKB/oDvVaFYfdz3u I5Rt/M6ozMwQs1IztTCtIAW1alsIoRVU/wDbe5XQdwMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpjleLIzCtJLcpLzFFi42I5/e/4Zd3LDHwRBo9/m1psnLGe1WLqwyds Fs2L17NZTLo/gcViwX5ri/7Hr5ktnm5+zGRx/vwGdovLu+awWXzuPcJoMeP8PiaLF8+lLW5M eMpoceb0JVaLLxM7WCzaVn9gtVi16w+jRd/aS2wOQh6X+3qZPHbcXcLosXPWXXaPTas62Tz2 z13D7jH5xnJGj3/H2D22XG1n8ejbsorR4/MmOY8Z7dtYA7ij3GwyUhNTUosUUvOS81My89Jt lUJD3HQtlBTyEnNTbZUidH1DgpQUyhJzSoE8IwM04OAc4B6spG+X4Jbxrmsfa8EC6YptN48y NTDuFuti5OSQEDCRuHbhOiuELSZx4d56ti5GLg4hgSWMEis6LjBCOM8ZJdoOPmICqRIWiJVY sOsUO0hCRGAlo8TxU3uZIKq+MUk8vHAHLMMssJFFYu3a/cwgLWwChhJdb7vYQGxeATuJlsPH GEFsFgFViXPfdoHFRQViJK4/ewRVIyjxY/I9FhCbU8BWom3dRnYQm1nATOLLy8OsELa8xOY1 b5knMArMQtIyC0nZLCRlCxiZVzGKpJYW56bnFhvpFSfmFpfmpesl5+duYgSmgW3Hfm7Zwdj1 LvgQowAHoxIPr8JVnggh1sSy4srcQ4wSHMxKIrzb//NGCPGmJFZWpRblxxeV5qQWH2I0BXpi IrOUaHI+MEXllcQbmhiaWxoaGVtYmBsZKYnzTv1wJVxIID2xJDU7NbUgtQimj4mDU6qBkeFf jOaeqVfZY15fmxL8uPQfayrjg597NIIe60XNjPGVXmq8Z1HiFVvXjpuC6725NMyyPLmbUs6E 92xf/XKRv9lbofWv3+v+n6l+UufklBWVLHKnllsKPLlWZR848UCSflFL2qaJn37mcC9oVmPx fGrwMLxcYuHbBi/PLV1VQU7BRpoadqcOKrEUZyQaajEXFScCACUeA44ZAwAA X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20161024123918eucas1p12c437f0e27750a1fd1e5fdda870b9cec 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: 20161020072336eucas1p24a2b020f69b6ae1f55e1760e6e0e94f9 X-RootMTR: 20161020072336eucas1p24a2b020f69b6ae1f55e1760e6e0e94f9 References: <1476948173-21093-1-git-send-email-m.szyprowski@samsung.com> <1476948173-21093-8-git-send-email-m.szyprowski@samsung.com> <001e01d22d12$d2a4e990$77eebcb0$@codeaurora.org> <7a69ca4e-e276-1bdc-edf2-b881a91f820a@samsung.com> <004a01d22df2$45ecd450$d1c67cf0$@codeaurora.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Sricharan, On 2016-10-24 14:29, Sricharan wrote: >>>> This patch uses recently introduced device dependency links to track the >>>> runtime pm state of the master's device. This way each SYSMMU controller >>>> is set to runtime active only when its master's device is active and can >>>> restore or save its state instead of being activated all the time when >>>> attached to the given master device. This way SYSMMU controllers no longer >>>> prevents respective power domains to be turned off when master's device >>>> is not being used. >>>> >>>> Signed-off-by: Marek Szyprowski >>>> --- >>>> drivers/iommu/exynos-iommu.c | 16 ++++++++-------- >>>> 1 file changed, 8 insertions(+), 8 deletions(-) >>>> >>>> diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c >>>> index 5e6d7bbf9b70..59b4f2ce4f5f 100644 >>>> --- a/drivers/iommu/exynos-iommu.c >>>> +++ b/drivers/iommu/exynos-iommu.c >>>> @@ -781,10 +781,6 @@ static void exynos_iommu_detach_device(struct iommu_domain *iommu_domain, >>>> if (!has_sysmmu(dev) || owner->domain != iommu_domain) >>>> return; >>>> >>>> - list_for_each_entry(data, &owner->controllers, owner_node) { >>>> - pm_runtime_put_sync(data->sysmmu); >>>> - } >>>> - >>>> mutex_lock(&owner->rpm_lock); >>>> >>>> list_for_each_entry(data, &owner->controllers, owner_node) { >>>> @@ -848,10 +844,6 @@ static int exynos_iommu_attach_device(struct iommu_domain *iommu_domain, >>>> >>>> mutex_unlock(&owner->rpm_lock); >>>> >>>> - list_for_each_entry(data, &owner->controllers, owner_node) { >>>> - pm_runtime_get_sync(data->sysmmu); >>>> - } >>>> - >>>> dev_dbg(dev, "%s: Attached IOMMU with pgtable %pa\n", __func__, >>>> &pagetable); >>>> >>>> @@ -1232,6 +1224,14 @@ static int exynos_iommu_of_xlate(struct device *dev, >>>> >>>> list_add_tail(&data->owner_node, &owner->controllers); >>>> data->master = dev; >>>> + >>>> + /* >>>> + * SYSMMU will be runtime activated via device link (dependency) to its >>>> + * master device, so there are no direct calls to pm_runtime_get/put >>>> + * in this driver. >>>> + */ >>>> + device_link_add(dev, data->sysmmu, DL_FLAG_PM_RUNTIME); >>>> + >>> So in the case of master with multiple sids, this would be called multiple times >>> for the same master ? >> I don't know what is "multiple sids" case, but if given SYSMMU master >> device (supplier) >> has multiple SYSMMU controllers (consumers), then links will be created >> for each SYSMMU >> controller. Please note that this code is based on vanilla v4.9-rc1, >> which calls >> of_xlate() callback only once for every iommu for given master device. >> Your IOMMU >> deferred probe patches change this, but I already posted a fix for >> Exynos IOMMU driver >> to handle such case. > By multiple sids, i meant iommus = <&phandle sid1 sid2 .. sidn> case, > so xlate would be called multiples for the same master without deferred > probing also. But the fix that you showed on the other thread would work > here as well or maybe if you dont have masters with multiple sids you wont > have any issues as well. Exynos SYSMMU driver always use "#iommu-cells = <0>", so it doesn't support multiple sids. However there is a case with 2 SYSMMU controllers attached to the same master device: "iommus = <&sysmmu_mfc_l>, <&sysmmu_mfc_r>;". Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland