From patchwork Wed Jan 25 12:54:02 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yoshihiro Shimoda X-Patchwork-Id: 9537009 X-Patchwork-Delegate: geert@linux-m68k.org Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 5F5C1604A9 for ; Wed, 25 Jan 2017 12:56:06 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 51F4C27F9F for ; Wed, 25 Jan 2017 12:56:06 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 44B7F27E22; Wed, 25 Jan 2017 12:56:06 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 57F3827FAE for ; Wed, 25 Jan 2017 12:56:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751744AbdAYM4D (ORCPT ); Wed, 25 Jan 2017 07:56:03 -0500 Received: from relmlor4.renesas.com ([210.160.252.174]:43566 "EHLO relmlie3.idc.renesas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751755AbdAYM4A (ORCPT ); Wed, 25 Jan 2017 07:56:00 -0500 Received: from unknown (HELO relmlir2.idc.renesas.com) ([10.200.68.152]) by relmlie3.idc.renesas.com with ESMTP; 25 Jan 2017 21:55:57 +0900 Received: from relmlac3.idc.renesas.com (relmlac3.idc.renesas.com [10.200.69.23]) by relmlir2.idc.renesas.com (Postfix) with ESMTP id 3CB01683CC; Wed, 25 Jan 2017 21:55:57 +0900 (JST) Received: by relmlac3.idc.renesas.com (Postfix, from userid 0) id 1FA6F18070; Wed, 25 Jan 2017 21:55:57 +0900 (JST) Received: from relmlac3.idc.renesas.com (localhost [127.0.0.1]) by relmlac3.idc.renesas.com (Postfix) with ESMTP id 1A1CF1806F; Wed, 25 Jan 2017 21:55:57 +0900 (JST) Received: from relmlii2.idc.renesas.com [10.200.68.66] by relmlac3.idc.renesas.com with ESMTP id XAH29070; Wed, 25 Jan 2017 21:55:57 +0900 X-IronPort-AV: E=Sophos;i="5.33,283,1477926000"; d="scan'208";a="232556349" Received: from mail-sg2apc01lp0247.outbound.protection.outlook.com (HELO APC01-SG2-obe.outbound.protection.outlook.com) ([65.55.88.247]) by relmlii2.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 25 Jan 2017 21:55:56 +0900 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesasgroup.onmicrosoft.com; s=selector1-renesas-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=UknK7zPQMr4pneRuOwCtO3LzOzsZ/lvGRtC+534ccxU=; b=lKIJTj5wpkKueFQjhUWw20J3/yVbAA+ZTrf0RRxq2FYqDZf/pNoxasuX2DKUJgxA4AW5FoIzukeZxxYWiQYtLTzKqD10l1xAYW2XomQM3KwjSW7MBLyDapkKziFjW+6q+FYMyLCVr4IxGQICJORqtifqSjI7PznRWuEUZGIFjpw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=<>; Received: from localhost.localdomain (211.11.155.144) by HKXPR06MB0552.apcprd06.prod.outlook.com (10.161.177.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.860.13; Wed, 25 Jan 2017 12:55:55 +0000 From: Yoshihiro Shimoda To: CC: , , , Yoshihiro Shimoda Subject: [PATCH/RFC 4/4] iommu: ipmmu-vmsa: enable force_reset_when_empty Date: Wed, 25 Jan 2017 21:54:02 +0900 Message-ID: <1485348842-23712-5-git-send-email-yoshihiro.shimoda.uh@renesas.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1485348842-23712-1-git-send-email-yoshihiro.shimoda.uh@renesas.com> References: <1485348842-23712-1-git-send-email-yoshihiro.shimoda.uh@renesas.com> MIME-Version: 1.0 X-Originating-IP: [211.11.155.144] X-ClientProxiedBy: OS2PR01CA0033.jpnprd01.prod.outlook.com (10.164.161.143) To HKXPR06MB0552.apcprd06.prod.outlook.com (10.161.177.142) X-MS-Office365-Filtering-Correlation-Id: ae64b9e4-5f7a-4544-d6b8-08d44521809d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:HKXPR06MB0552; X-Microsoft-Exchange-Diagnostics: 1; HKXPR06MB0552; 3:2mMfEOmw0OmX+mb5yB7zwzxqzJhcX1dywZczPemNX69DEBcNojXURIfKVTSVdlfRCKv3wCHN2jvBcPJl3/3w0Km3CkyW3gw0kpoZxvtwnWZHjxE4dkulU1Yp+zldpMbdWV0cupMZkqnGL4cLgcwcddyVWqc7nfCwTJyxw4iAmF2J9jnq/gVWN//iplMokhATEtj+2U2Gtpl6+v+7o9rNaG/UzH4eRcTW2xaFQwOedpUtbWF8+xIhanDLtrFM5rdMmgKJEYmt2/wPPlUoZPs0qw== X-Microsoft-Exchange-Diagnostics: 1; HKXPR06MB0552; 25:ejy1N+IHQa6XrMIO5iNmnyRVpO4djjmd/j9naGZdCse/g/3101ebF+bnkQQrK1UXbXlq86bBE5YWDjnfwhR6n5RXbyaE7a3JnvCHQaT8ReXHUIR5THKbGrRs48SIKJS+1N2PP5IUaQILeh/H6cZt4vG/iy/7I/TLmVCIrT8zd0Wsrohvq9DM+NR0OinVtTj1jBrFnx5lng0xxyqS8HOVAdPxktJs/5SxPGJ0cxpYjFkDwVZaNQMnru/uKl9+9rL2HqaBtnaPtsGA5WODyQvsRUFtzGdZr5NxWNnRJuMsl/wTleqekRrzBs+zsktzJBbjz9I94uW2IE0rr8o6dzOlHHCdC+JIHvI62T4K4rIZ/fI+guFtbnJh0Ug4D5kVqkXDIcTdxWU0QSfTVENd1uB9VY+VQD/zwHghWrDjUD03fy9H3PCXWwy22Js4K5BUsYe4mVZ7IjY6zcM4CO5Jw+v0VVl85//1JJxZTQkjH5un9LPyDTMmA6SoKfKdAeLt8OvJofAev9OKQ/92CBsNp9h74+mjU9RqfUtvWUlnNtali1PjFAfvuvSATtLMwC3tl0BbhC8WkjiPzcunRqz/RSco91st/SsyaM65PXtwcRfF6WOzJhDZSDR2Dskh2OWjqcD3O+yi9tVgq0MvIljtYv9fYxBGDBlitpQbZi6j/IdDHMVCsEUcGF8WivzRa5/Wdw4dUzARkgv3yIxi0eLV72OT6mNNqgJNXakRBHMN0CV3lApZ2JIOGYwP8FTFvXO9i0kcL5CGY/VFDw0kiyEjV0Yus9UJb1cgMHbLiGZUa2T1zAcRoJf2LPYKFre/rO6k2O4Y X-Microsoft-Exchange-Diagnostics: 1; HKXPR06MB0552; 31:ErODYnqYBJQldK+eckugLQjdyuBBxCxvfcMlhgcSLOqTov7fdZXw+JwdVHLAz4pOI3IhbObRQnE5UtCZWDmDbxScWowA0vWQbDu5hxquqcOo45c97O8QOyOhEW9k4aJDPcASt0tTCQRdKGaRupXA+Mv4R3hUXKLezqwWJAj+/WQUDDZ7TWy6WFf0ts2c+vjCLHfkU0oPgxy6o9gZ29ON3ERj5Z6yt9vsPb/1KUk/alub2QZ5tJqefjfxGdPHj4kfC3R/HYOMP3V0eWQqRAjN8A==; 20:qzh8Y2H9FVYowQsFyAZT8Sc6OIuHyzGHDcD04/n4EO2uId6JLQqpCAwsi8k+5GUfpqJ7YYj2lm7OMw/Y5Y5Myea4PijWe1/HetGglQ3GIy8rqip6xXTZgl4U2OVDCV99vA2PRMU9R+RGsdybPYJlUfa5zuFmhDXM+HsM4gxu0YaCXAC0YKsoQWFRt1QcWLoBZivsF5iLpKDjYP6Ilq3eCckn1hFZOnaMQMLER0g5XlzFqsQ0ipStZnNm/jle+c+FHEv0uUExT5OocNgx2YAevZCW0WAeFEZPZgfXB58Gq+C2rdilTaMjExzBncTCqDHcYY3Pf2r+RgKmdvLem9vlWNIPjgiR0+oqXrW6rGodzn0ULH8B/+JEf93pKyLEZfer3cqqvRcLjbJHbyzhcqHlORiZrxQT9DkfILtWPEnGI1zTjacKcgERzUbh+uP0tM+arO3W8LpCNGiEoE26S1BIZxq2pydqUwE6FyZyJVeSqjp3sY7vl8mznQ4mAX/h+I8L X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6055026)(6041248)(20161123560025)(20161123562025)(20161123555025)(20161123564025)(6072148); SRVR:HKXPR06MB0552; BCL:0; PCL:0; RULEID:; SRVR:HKXPR06MB0552; X-Microsoft-Exchange-Diagnostics: 1; HKXPR06MB0552; 4:TnWL9j3afBHukGi4nDiWdojrrxhxbUpYZ0WLDY7mr84GwAVO0GGpzh8eb5y3HwzddQjENbug8oQWC8n0n1N70iEiiT0oHUo6lJThz3nnU2hJsUQSFCDZUsXWwQ09HYDFWycSdAQY9GLR2zkA1E+beeM1jie/LLscwnrNv8yqLRp6WHtHDY+CT4sVuawVldCMJFbtYR0su7vHZoKgUIG3UKIkqsPJgXFQ040fsVNaZivSuojfut7Qv3XHuEegkeXURNSkpDa0jjouNz+KxChDvLlKqqOaaoqkuiv7PnKv08pPAAubKSXzlf0AGnHiC5ei+N93vjtbLfav8KKEp7yqPvaW7ekrNuUifTUlf3BSujpnpb3TMU782n5zdXygHd+qpogBpmMTHTIP5i/AdUWguFLIi5Wl9r7A9lVWwAoHsWlFb2J+plvIBqs+CNPVJQx1z+BrQeMyi6HFgWEW9rQaeruU+WA+Zwa/ytZEGbfBains+T6LsL3y9MuYU7wSGuaZ5NEq+f7cx9OP6rOJTu/QPMrALLKYftY+pGqulhm5c9kizrhh2q4xcHWgn8ISsO6Cst3o8CWMzZeUyhFJvu5A8Q== X-Forefront-PRVS: 01986AE76B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(6069001)(7916002)(39840400002)(39450400003)(39410400002)(39850400002)(39860400002)(199003)(189002)(66066001)(78352004)(42186005)(101416001)(50466002)(48376002)(81156014)(305945005)(50986999)(76176999)(47776003)(5003940100001)(2351001)(7736002)(8676002)(68736007)(97736004)(81166006)(50226002)(107886002)(6506006)(5890100001)(53936002)(92566002)(36756003)(106356001)(105586002)(42882006)(38730400001)(5660300001)(2950100002)(6666003)(189998001)(6486002)(6512007)(39060400001)(4326007)(2906002)(25786008)(6916009)(3846002)(33646002)(4001430100002)(110136003)(6116002)(54906002); DIR:OUT; SFP:1102; SCL:1; SRVR:HKXPR06MB0552; H:localhost.localdomain; FPR:; SPF:None; PTR:InfoNoRecords; A:0; MX:0; LANG:en; Received-SPF: None (protection.outlook.com: localhost.localdomain does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HKXPR06MB0552; 23:JCniM3R3GGtmxUzO7ZQgx1qOG5LCXGcjBfOyQG1rv?= =?us-ascii?Q?8/cCK3688HoIcgtQ9vK2fwh3Gff/mFbuaiZL4B0GVFCUbeSePuE9vPfILvPA?= =?us-ascii?Q?w6KJTyHPiyJrg7u18Nwypgp6Y3rC+GC5PHVRm1SIuu4yf9AQvV0go2x+gkp5?= =?us-ascii?Q?aep6rJJfZWBzLh0Z7BlnRa5CMHd2IccE/fKZaOMOJfZ0R87Ds7ZyBGbSjxM8?= =?us-ascii?Q?wIz2rCI99CxT0GE6U/FfE5ClIjY3rVk+dEv1He8Mp+sNtz9TTD8+ofELqaii?= =?us-ascii?Q?nyu0FUVYmxu52cr29ANuihrfkPxd/EhWip+usZurtcto5j59HLAUQMqDPhUG?= =?us-ascii?Q?TJuqz8wL/9oy/Ejw0zPCgfno+hZSZAgzAVaSpXwQg38+30FUf9DrjZVQiZoR?= =?us-ascii?Q?SBL9mxx+un4XM1/WWWHfSeVHSq8Kt1MJ6f7BcaPjQOZKcBYljvD8fSTYlmhx?= =?us-ascii?Q?mw+9TnA3JXSAkwUN5fQbpyBsKuyLGclkygNajgmxzfyDyKVeGZOIWAasjNkU?= =?us-ascii?Q?dg1vhkXJOu7oZczPqA8+OHE/xFKu40Y8KgY2burMSMHlGFU1/GdSd2p8POVQ?= =?us-ascii?Q?146sNsrkjArZCXdyI75ZkfRGp1gJc0o3XxQPGM7UO0t/jeC4St5xCxII4sa4?= =?us-ascii?Q?ds9jezZO4u6QFqyzB97yb+YZwdniVxOIb6vHynWkZGjSQHF1dbAboGvD1aJn?= =?us-ascii?Q?kNfJ260Fh4KQjuA46XiJQ3Al4ZIqpgqlxvqEMpb6ozYGq+h9PWsyhS+/NuFn?= =?us-ascii?Q?5sSRB34A6BYXlzOsi4/OYRaB2RKNZqO3euQsjGdVcNePQ+Bhp4fj+Tpidrw6?= =?us-ascii?Q?lCy961xBstkHw1piTz63WtxyU6zjbCBi4E03K0ocwxLmKiEV+ESD6MATAXlt?= =?us-ascii?Q?CGBx6UT04Knxk5bVhYXsEYdu/1vV7zZkauWnfT8GtenymyhezSH7H1r1tx0f?= =?us-ascii?Q?wQtcplf2n5GynGgvzjWFVi3KdE/VHjsZMC0q1BZAZ5S1QYBVoHVtxCd9qIjG?= =?us-ascii?Q?Mvlm6XW9Yw/PIoGPv9/JEEPBJcd57qOlLqM78Tu2dSmxJ6NM/0MEt779Tfx1?= =?us-ascii?Q?NAx5rejnYdQZVbbO1ZUC+m15BS8YDx43IhM+52JHEHFLwhu0zBjNlEZghWWs?= =?us-ascii?Q?4z0Dmt66T4ZBgltU9S8uDafoBaj6j5rsuzbs+aDsrIlRhsUtedXXZrmetrPW?= =?us-ascii?Q?0F+pwMTqqxWa5+BzLFU7mz/55ID0qkEGx1zNkptObUrMNIWgSCBtZ02hpxty?= =?us-ascii?Q?sAHPRy32a5jIAIXEq5RThCDRDHJoMVpYbDHSrncHP1kNt+ex/CgVARpVamI5?= =?us-ascii?Q?DnG1hjlcHaOJXZ4cfLAWPc2qP9DdbfhYQyo2MJ4Zbygfr7+mJFlQvheNkths?= =?us-ascii?Q?FpdcfPTiLv3AToCv0yWyOaeqopqH0NYwxckX75twctLw12e?= X-Microsoft-Exchange-Diagnostics: 1; HKXPR06MB0552; 6:VpxvNN+XnloYM41IQMad0ijdXw3G91kpP4tkpwcobbo7SIsyg7qH5luR1ua0glyfvmmfGzVUogCXugQ/RblNmKmPGxwizjcf37Mmw6lM8pPwxV54BGTQBznw2EvBE+9NM5P0c0z8MLNJZDwqL8/3PZzXldxDeERR2QlUc6xWtw2uPZYUSbPPkGyO4MksO5+nJLTeZCSXX3J3c0kGA2SzmVVfnG1TT3Pyr1DQghEpLPFflIudmQ98aqXqKh/cKF9esSZqn8el+Ve2lXzJNJrOWip+jyST6RIn3QcEN28ZoCxrSTG26gYlLgpm1irAjKtl0H5Rcv3vW75j/wGyDthN71p+idUzJeAUBUG3A63oUNra6A5AfmyjdOfDPGrhjgigPFmYr0u7Z67VhyRsZyVM7sw1SIx6GY6D64Z7KFdh6pPqxDZepSc8hvblmeayMvlkoM5kJ96bMeLU29Un3t/DZw==; 5:p6uu1md4u9jIuaeGeA6xPe9NvtmqHrKUu+zD1XaHrly6b3Syuwwvm+vtxjnHDIwPer4kNpbO+64aEyPtRxlVKyGbe2eJW/3SoU72jki/BubybghZ2mKTVKdJAy2cVjXMUoHsvUvQOJ6Eu+6DDGl9Ew==; 24:319cJgj0y/3zxLk79Ui1KzCxvbJLTtZZQkhERkGYsH25gpmZxypJIUjtsxIUJbhKvM5M7sSqw9/Ve8CXdlvImu7zuC8O5GAkA12kzABFmuM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HKXPR06MB0552; 7:i2o44p/8pBx/j2qcehCIaxxCWBsuwsExfEY5t6lTIKUw9wp/K82/rn2MKAnj1JGtVeK0zrnnDBSxPAHyS1yO3ZrD7t0zonbSKNu+cCta16SgKIrrI1U3yrKHB3xioOqpmFlUA6m+CGyrf4ePrZdfsT0bHmC4/q/LEf5S4xXsfd1RGjgDbIKhLfc5Ro0iTIb5aBV/8KoWwjBbXlnNUcHDJNPBmpL4nJb9xmq1BuRiAKRwyWTPKgIKsEDpXDrCfo6qfy9lshER2Wh/AoNU10F8U3dll1I14azldBVZU1huRfiG3WzrJq4Dwi7JoKRujzTOiLO3mLnt970A1h3iZdePEKyFeP9liPfQM8cCL0jppR46PrkF466TkbcDRrud//0SZgvFG3DUa2x7XVYQ0I3laaRzJ2ruiel+1LCpKMYKg8RBg8+Mmx4rk9he+kNnX3nApI6sMZY2mP9c7TF9AMqUFQ==; 20:llyQqCfVkQy4JWM20WERtyL0qGhWSm2aK6v6CisnF2KuXceBYrHZ0jCv8UM1gS73bd5Xk4k4xp4lLFM3u6AEhBAsO6iw/26AN+dxaQx+7Ok+VhoFdMCOLOHTtVWxqepB8EGAshzlH7bVeVWxTYX3oy8Foxv95/kdwrs3g3qBS4s= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2017 12:55:55.5073 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HKXPR06MB0552 Sender: linux-renesas-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The IPMMU of R-Car Gen3 will mistake an address translation if IMCTR.FLUSH is set while some related devices that on the same doamin are running. To avoid this, this patch uses the force_reset_when_empty feature. Signed-off-by: Yoshihiro Shimoda --- drivers/iommu/ipmmu-vmsa.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/ipmmu-vmsa.c b/drivers/iommu/ipmmu-vmsa.c index 11550ac..4b62969 100644 --- a/drivers/iommu/ipmmu-vmsa.c +++ b/drivers/iommu/ipmmu-vmsa.c @@ -302,7 +302,8 @@ static void ipmmu_tlb_flush_all(void *cookie) { struct ipmmu_vmsa_domain *domain = cookie; - ipmmu_tlb_invalidate(domain); + if (!domain->io_domain.geometry.force_reset_when_empty) + ipmmu_tlb_invalidate(domain); } static void ipmmu_tlb_add_flush(unsigned long iova, size_t size, @@ -555,6 +556,13 @@ static void ipmmu_domain_free(struct iommu_domain *io_domain) kfree(domain); } +static void ipmmu_domain_reset(struct iommu_domain *io_domain) +{ + struct ipmmu_vmsa_domain *domain = to_vmsa_domain(io_domain); + + ipmmu_tlb_invalidate(domain); +} + static int ipmmu_attach_device(struct iommu_domain *io_domain, struct device *dev) { @@ -832,6 +840,7 @@ static struct iommu_domain *ipmmu_domain_alloc(unsigned type) static const struct iommu_ops ipmmu_ops = { .domain_alloc = ipmmu_domain_alloc, .domain_free = ipmmu_domain_free, + .domain_reset = ipmmu_domain_reset, .attach_dev = ipmmu_attach_device, .detach_dev = ipmmu_detach_device, .map = ipmmu_map, @@ -858,8 +867,10 @@ static struct iommu_domain *ipmmu_domain_alloc_dma(unsigned type) case IOMMU_DOMAIN_DMA: io_domain = __ipmmu_domain_alloc(type); - if (io_domain) + if (io_domain) { iommu_get_dma_cookie(io_domain); + io_domain->geometry.force_reset_when_empty = true; + } break; } @@ -927,6 +938,7 @@ static int ipmmu_of_xlate_dma(struct device *dev, static const struct iommu_ops ipmmu_ops = { .domain_alloc = ipmmu_domain_alloc_dma, .domain_free = ipmmu_domain_free_dma, + .domain_reset = ipmmu_domain_reset, .attach_dev = ipmmu_attach_device, .detach_dev = ipmmu_detach_device, .map = ipmmu_map,