Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754771AbcKNKKs (ORCPT ); Mon, 14 Nov 2016 05:10:48 -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 S1753718AbcKNKJP (ORCPT ); Mon, 14 Nov 2016 05:09:15 -0500 X-AuditID: cbfec7f5-f79ce6d000004c54-d0-58298d461301 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 2/7] iommu/exynos: Remove dead code Date: Mon, 14 Nov 2016 11:08:07 +0100 Message-id: <1479118092-1365-3-git-send-email-m.szyprowski@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1479118092-1365-1-git-send-email-m.szyprowski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzWSa0gUURTHuzszO7NbE8MqdlHzw6alRpZQcssIhaj5EOg3l/C16aSSq7Kj khHkA3VdfKVI6zPDNFwzTW3zha6mq2ZpWorhI8x3ZZmmYg9Jd/Tb73D+5/8/93IoTPaQsKbC IqI5dYQyXC6W4gbT1uCpKxlOijMtTVboua6GQHnTs2KUVFYjRjmfsnFU2u6O0gprSZQ18xVD c/UzIjQ4uFO+by4So7WMLoB0g20itLhgg6q7Jkk0lj0H0Jv+YQKlVK0QSN/8F6DM6mGxhwU7 21EiYhsnHwO2qWCSZOv0aWK2vfgpyeaOPQHstolkG0ZScTazQQ/YtTo7VpdqILwPXpdeDObC w2I59elLgdLQqkYdEWVyuD1Q0kfGg1U7LZBQkDkLC5KWSIGt4LupGrEWSCkZUw7go61JYrch Y9YAHF+23x9IrMjDBVEFgPnGWpFQxItg73ot2FWJGVeoXdaarSyZMgB7C0fNKowx4nDp/gym BRRlwbjBuQLzHjjjAIdb87FdppmrUNM2IBLi7GCfKde8hoRhYfHaqjkaMuskbF/oJHd9IHMU 1hkxQX8ZJn/swQW2gF96GvbeZgvTNB17nlkAJiafFFgH4MAyLbA7fNUzZM7CmMMwx/AAE+xp qEmRCRIWfu/T7kV5woJvy0D4oUIAiyrpbGBbCg7ogSUXw6tCOP6cC69U8TERIS5Bkao6sHM2 /ds9642g3HShEzAUkB+iNZGOChmhjOXjVJ0AUpjckj6W7qSQ0cHKuDucOjJAHRPO8Z3AhsLl R+jW0g8+MiZEGc3d4rgoTr3fFVES63hwT+mpQccbflbqAoImfA36E4Eev69Xt5TLF117r9nf 2F79YVk05fnrvLPfzWlSMuTf3fXZLXmkjfcDC6GpG/XzxdMvRv8Rq/7PltI2yjr+OBq8Mllr mlW0G197JziqfO5OS96OGn37VxJEPmxFie9LLCW9297LaTxGsTm/KZ2Q43yo0tUZU/PK/y5C JmgyAwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrIIsWRmVeSWpSXmKPExsVy+t/xa7qevZoRBgdWWVtsnLGe1WLqwyds Fs2L17NZTLo/gcViwX5ri87ZG9gt+h+/ZrZ4uvkxk8X580Du5V1z2Cw+9x5htJhxfh+TxYvn 0hZrj9xlt7gx4SmjxZnTl1gt2lZ/YLVYtesPo0Xf2ktsDsIeTw7OY/LYcXcJo8fOWXfZPTat 6mTz2D93DbvH5BvLGT3+HWP32HK1ncWjb8sqRo/Pm+Q8ZrRvYw3gjnKzyUhNTEktUkjNS85P ycxLt1UKDXHTtVBSyEvMTbVVitD1DQlSUihLzCkF8owM0ICDc4B7sJK+XYJbxuodM1gLjqlW nJt3kr2B8ZNcFyMnh4SAiUTTsqksELaYxIV769m6GLk4hASWMEq8//qTHcJpYpK4e2IeE0gV m4ChRNfbLrAqEYHFjBINh6YwgjjMAsdYJBb3HGTuYuTgEBYwk3g6C2wFi4CqxKU9M5lBbF4B d4mOfeeYINbJSZw8NpkVxOYU8JCY+/kT2BlCQDVXL+9nnsDIu4CRYRWjSGppcW56brGhXnFi bnFpXrpecn7uJkZg9G079nPzDsZLG4MPMQpwMCrx8Hbka0QIsSaWFVfmHmKU4GBWEuFV7tGM EOJNSaysSi3Kjy8qzUktPsRoCnTURGYp0eR8YGLIK4k3NDE0tzQ0MrawMDcyUhLnLflwJVxI ID2xJDU7NbUgtQimj4mDU6qBsclq3jOXgvLFpf4vtXxKBdKcp9//9L87OvrjJ+/Uc4WV+lVe qpa6SdNi6n6IHtbXM3IqCY/oDW685SUWOHsvS84CZd78OfFXLi3ObpvzwvGJn5OtybFdsodO vLFnX1x968wctm7dq4677gXwvjuwWP6YS/LsjJPv/TlWnRTxa3zjdD9wwZ8XSizFGYmGWsxF xYkABALHSNQCAAA= X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20161114100909eucas1p1bc6b64109f463f12879b2e3eccb76434 X-Msg-Generator: CA X-Sender-IP: 182.198.249.179 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: 20161114100909eucas1p1bc6b64109f463f12879b2e3eccb76434 X-RootMTR: 20161114100909eucas1p1bc6b64109f463f12879b2e3eccb76434 References: <1479118092-1365-1-git-send-email-m.szyprowski@samsung.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4654 Lines: 150 __sysmmu_enable/disable functions were designed to do ref-count based operations, but current code always calls them only once, so the code for checking the conditions and invalid conditions can be simply removed without any influence to the driver operation. Signed-off-by: Marek Szyprowski --- drivers/iommu/exynos-iommu.c | 65 ++++++++++++-------------------------------- 1 file changed, 17 insertions(+), 48 deletions(-) diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c index 8ba0d60..4056228 100644 --- a/drivers/iommu/exynos-iommu.c +++ b/drivers/iommu/exynos-iommu.c @@ -460,9 +460,6 @@ static bool __sysmmu_disable(struct sysmmu_drvdata *data) __sysmmu_disable_nocount(data); dev_dbg(data->sysmmu, "Disabled\n"); - } else { - dev_dbg(data->sysmmu, "%d times left to disable\n", - data->activations); } spin_unlock_irqrestore(&data->lock, flags); @@ -508,29 +505,18 @@ static void __sysmmu_enable_nocount(struct sysmmu_drvdata *data) static int __sysmmu_enable(struct sysmmu_drvdata *data, phys_addr_t pgtable, struct exynos_iommu_domain *domain) { - int ret = 0; unsigned long flags; spin_lock_irqsave(&data->lock, flags); if (set_sysmmu_active(data)) { data->pgtable = pgtable; data->domain = domain; - __sysmmu_enable_nocount(data); - dev_dbg(data->sysmmu, "Enabled\n"); - } else { - ret = (pgtable == data->pgtable) ? 1 : -EBUSY; - - dev_dbg(data->sysmmu, "already enabled\n"); } - - if (WARN_ON(ret < 0)) - set_sysmmu_inactive(data); /* decrement count */ - spin_unlock_irqrestore(&data->lock, flags); - return ret; + return 0; } static void sysmmu_tlb_invalidate_flpdcache(struct sysmmu_drvdata *data, @@ -793,8 +779,8 @@ static void exynos_iommu_domain_free(struct iommu_domain *iommu_domain) spin_lock_irqsave(&domain->lock, flags); list_for_each_entry_safe(data, next, &domain->clients, domain_node) { - if (__sysmmu_disable(data)) - data->master = NULL; + __sysmmu_disable(data); + data->master = NULL; list_del_init(&data->domain_node); } @@ -829,31 +815,23 @@ static void exynos_iommu_detach_device(struct iommu_domain *iommu_domain, phys_addr_t pagetable = virt_to_phys(domain->pgtable); struct sysmmu_drvdata *data, *next; unsigned long flags; - bool found = false; if (!has_sysmmu(dev) || owner->domain != iommu_domain) return; spin_lock_irqsave(&domain->lock, flags); list_for_each_entry_safe(data, next, &domain->clients, domain_node) { - if (data->master == dev) { - if (__sysmmu_disable(data)) { - data->master = NULL; - list_del_init(&data->domain_node); - } - pm_runtime_put(data->sysmmu); - found = true; - } + __sysmmu_disable(data); + data->master = NULL; + list_del_init(&data->domain_node); + pm_runtime_put(data->sysmmu); } spin_unlock_irqrestore(&domain->lock, flags); owner->domain = NULL; - if (found) - dev_dbg(dev, "%s: Detached IOMMU with pgtable %pa\n", - __func__, &pagetable); - else - dev_err(dev, "%s: No IOMMU is attached\n", __func__); + dev_dbg(dev, "%s: Detached IOMMU with pgtable %pa\n", __func__, + &pagetable); } static int exynos_iommu_attach_device(struct iommu_domain *iommu_domain, @@ -864,7 +842,6 @@ static int exynos_iommu_attach_device(struct iommu_domain *iommu_domain, struct sysmmu_drvdata *data; phys_addr_t pagetable = virt_to_phys(domain->pgtable); unsigned long flags; - int ret = -ENODEV; if (!has_sysmmu(dev)) return -ENODEV; @@ -874,27 +851,19 @@ static int exynos_iommu_attach_device(struct iommu_domain *iommu_domain, list_for_each_entry(data, &owner->controllers, owner_node) { pm_runtime_get_sync(data->sysmmu); - ret = __sysmmu_enable(data, pagetable, domain); - if (ret >= 0) { - data->master = dev; + __sysmmu_enable(data, pagetable, domain); + data->master = dev; - spin_lock_irqsave(&domain->lock, flags); - list_add_tail(&data->domain_node, &domain->clients); - spin_unlock_irqrestore(&domain->lock, flags); - } - } - - if (ret < 0) { - dev_err(dev, "%s: Failed to attach IOMMU with pgtable %pa\n", - __func__, &pagetable); - return ret; + spin_lock_irqsave(&domain->lock, flags); + list_add_tail(&data->domain_node, &domain->clients); + spin_unlock_irqrestore(&domain->lock, flags); } owner->domain = iommu_domain; - dev_dbg(dev, "%s: Attached IOMMU with pgtable %pa %s\n", - __func__, &pagetable, (ret == 0) ? "" : ", again"); + dev_dbg(dev, "%s: Attached IOMMU with pgtable %pa\n", __func__, + &pagetable); - return ret; + return 0; } static sysmmu_pte_t *alloc_lv2entry(struct exynos_iommu_domain *domain, -- 1.9.1