From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752553AbdBOU6s (ORCPT ); Wed, 15 Feb 2017 15:58:48 -0500 Received: from mail-sn1nam01on0089.outbound.protection.outlook.com ([104.47.32.89]:55072 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752089AbdBOU5U (ORCPT ); Wed, 15 Feb 2017 15:57:20 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Suravee.Suthikulpanit@amd.com; From: Suravee Suthikulpanit To: , CC: , , , , Suravee Suthikulpanit Subject: [PATCH v10 5/9] iommu/amd: Introduce amd_iommu_get_num_iommus() Date: Wed, 15 Feb 2017 14:56:21 -0600 Message-ID: <1487192185-31272-6-git-send-email-Suravee.Suthikulpanit@amd.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1487192185-31272-1-git-send-email-Suravee.Suthikulpanit@amd.com> References: <1487192185-31272-1-git-send-email-Suravee.Suthikulpanit@amd.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [114.109.128.54] X-ClientProxiedBy: SG2PR01CA0102.apcprd01.prod.exchangelabs.com (10.170.138.156) To BN6PR12MB1444.namprd12.prod.outlook.com (10.172.24.21) X-MS-Office365-Filtering-Correlation-Id: 032cbe12-f6d7-4c89-71a1-08d455e5386d X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081);SRVR:BN6PR12MB1444; X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1444;3:XwgW9daTtqTvWhVGjsbY7sBWkqizx+dZs3W13yhMUvRxrgEhLF5wklPM2V89RmBC/A1y84efLuVM6WAa2R3YwTcdrXr5yZuuSnB5mGruWsnZU7M/GhShlCPZZTNv1qzPPGQJuVeMGGfjixeWdvsQGwPzQMO1NERyx0T5v3+EeAmdJRNv4Bq2L/IMMFp/3XY/HQgnL5WBJwnxSgvzPpHFEH1PnkpTR6NJxbxsxA2tRm4NQx97cQ8PIsgKLI7q4wheknEDlIZWwVB8jh4i2Wlv9xHfyBfDkjneBWK0h19Kd2E=;25:nGOvsuiwKzMIe0TN5BNOpCYNQzmbJTDCT0oD3t8JWywtaD6dG7avUcnAk6XNuHvrpmqLL1AtnKBQKCCEj9vvyMoT/7nWFUuHRoyLptdvRwRBjWlutesJR+WBadgBqR4BioZseC6/oNncFcNiUP/XdFoTitecn7lAzSaPYYPoDudWfV6HunPuFxKHd38o9JU/8DTKrHBB9awviIzGgtk2AoazIlCvpXdu1JIZJ52jSpvCZJH/+65DfQYd217j68dt5WnMgH2XomdIXl/aRO4MzBAUqO7ko4GXqBtjPbTyMxnGV1PFIiuVmETEDGOpr/bGSnYS7tkuyeNR1OUKN++BebU3aoP+jk+ZdY6s8aK/GAfI6Oy1G1O+5ztk5dewhmZ5vghF+wFf4Y/jP3aXaHFKybkVwo5rqgy5NRLcwRXieIjDJmB/HpNua1vb9llFX+HG+c2esdH9if9zo2VzEx7l+Q== X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1444;31:wxkttCbnWs6TQ6YcidbTKy8EKh3Nxprunfs88ZLlWMpNns8tIkQuh4eN30qQ1V4cRyUHF/j8JaSPdwWkb005X+lHGiYcb2Pum7Au/SqVCN44aJD3KPNFvWNqYTx5K99wGWcsV5spmXDPS4B0c8rD3/a1Sp9IJsDwGMtZ+L0MkM+o8uIRx5LJWeEG2vWi/ckCRI1aDLAHM0blrGLrB0Z+XtXYgRUXBXIcprpLaadRaYM=;20:wEuhZImjPRjriFIx7pzDs2Dd/Jbk/SyQv3GPYAg/WFzmQyzoybAstCJ5xsz8ggva2I51fWTfa1kf+EoqpcvHn3UJtbv4ZaTk9xxbc/QGLJ2qIHPleK8hm3BSncgB9AGLVcpkk1xXVDHUPMKwqCLlRf8AqR+4ZlV+W7QGEFL7tq5FkXkudT6UaKIFPGL3c5XCQFMThjQVrz6XMuql85DKGKIxjg9TwYVFPaO2j8Wn3vgydoi+FNotYNvZVtgCIgIzqtMecGfdTQmkKYC6UdhKfJFQVMSML1/DoQZ3hdj7hbrAVRBkqRm9eVuNXHjpNfKF+KlXQ+1CfbjO4IbO18sGwotYVnpNwbAQXi8WCB1BC6UsF5a53oTISfEmXshjLnmi84CiLvarWv8XajE73fsrTIiBEIrM7jOJ8dh+qKg1yhuquwesaNTl4kBWtxNcsGUh1mKhFLnj9B70xBdyUZYZ8RKEHelUBzAvVGYMHeKYOdm4wExv/zSwjPS3jsDUaEN3 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110)(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123564025)(20161123562025)(20161123558025)(20161123560025)(20161123555025)(6072148);SRVR:BN6PR12MB1444;BCL:0;PCL:0;RULEID:;SRVR:BN6PR12MB1444; X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1444;4:JX+FB6OO7W+36uyUm0d1eeqtbYWk4+LmCJE3+XmCF0KJOQ/qwFX0aplL9wRCfmjQVB8Ar0pcCbIhiuXZN5HUx3DgNK6nqnk4+5+GPuv+eac6d5qe2/XtpBO5fDIZQAhsksoXl5pXeDe4o5ZiLt0eEayK01m5Tf2Qt5Qzy1o8CV3wtz8+TgHaihzKEdNdbTYuX+p1puHPZc5ZkJkfQnhhNKTTd7ROjIXtF/8sE60ua/8uMDOBMW+T2TkHQ3H2dwSzrOmkQkWlTIVkUAwB1D4bsuR+jxlYIlAL5puf8Tvn8czjCMQbt2LW5WuJVG89PoZAwWAn978JUSsPNSMY1bT0zPAZ7V66o89JuUHMAq4swgflmZGEkFrAn+YicxHaZvOBfwp0uca18DdWvkBZvBmjsiO0YdoS/fDYH52qXQ1LL5T/F5xB/Jf9+eCNhEqRLLCX/ez/rfOGlbPstf45bJiQbC/VrDV9PmHJDqgBbJJWaI0xKYDxae7nllabwcWaHyfjq8sPJwmj1uz75nK6QsjM16gNbuG50J17+HFKgSWgy53ESM6bcZWyr6gy0EhDa6FSytXuNvsO0rkTcOzOHicfeH58SAOluoOJoVhBbdoT+YT3ds2g/FTpFCc+XwbDzhhnnKrceYgn0YwdTVCG/GV0xwv+7r10omGVhVoGI2srIL9acM8tyd5yAZW/zS8c5+bk X-Forefront-PRVS: 021975AE46 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(39840400002)(39450400003)(39860400002)(39850400002)(39410400002)(189002)(199003)(6486002)(50986999)(54906002)(575784001)(38730400002)(53936002)(86362001)(305945005)(48376002)(25786008)(5003940100001)(7736002)(389900002)(42186005)(106356001)(2950100002)(4720700003)(5660300001)(76176999)(105586002)(6666003)(6512007)(189998001)(68736007)(47776003)(50226002)(97736004)(101416001)(50466002)(81166006)(66066001)(81156014)(8676002)(36756003)(6506006)(2906002)(3846002)(4326007)(92566002)(6116002);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR12MB1444;H:ssuthiku-rhel73.localdomain;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN6PR12MB1444;23:Z0mOyVkwdILdiVl6GK8ohn23XBsvLY5pewww55DOF?= =?us-ascii?Q?O9iduuZMN4oM70KmJQMzpbBZZ6LKL3tvC8oxQu62ND/gJX/q8s93QbzcWpvV?= =?us-ascii?Q?8HBFJeiQzz63O7FY67MK3UQkkjypdqNy8rNmsHVwW91QCoMDjB/E0aMR4Mvy?= =?us-ascii?Q?8QfCnwRoq4bKGX3OWrq91mVygMEQeGzFAFA5KGjU3YX0m0XWge6l3JNiR/ya?= =?us-ascii?Q?aej98FJxyJ/NmwQRZ4dhSgmAjOlYFYVvs7JCMKh72fmIl44avB6Pf8vMMfrG?= =?us-ascii?Q?8hO9SoYFOfDAg/LG76jx1I0kqnDcO/R9uujNWZ4p+90aIRRyr4MBoI2oMjZT?= =?us-ascii?Q?wlnvPEzPSugotMvMBJYv/hOOL97KyVXUl834HNOPhOUEJipYGdQcT7VmQnhG?= =?us-ascii?Q?4kIcxs3XB4zOqCvCH3IsixYjbsqPPWbE7SXlCqPFNB5IOFJNXvnznYvXrjRc?= =?us-ascii?Q?hmCH2XYhWKxBXdi28qPdsmZw5/YBcM0d9vQowv8h8TS1M4rPcC+vrIeGE26I?= =?us-ascii?Q?E4NzcTv9exhV/HhuddGhYjKLwG2847IaabJUmNQ6URGqyACVpE+deRvE6hsO?= =?us-ascii?Q?4JtSglmMV9i2xdS/VghE8PYqqXf13l9zbs5XVUDhFx3zt6+kcsLyi4aN5HdH?= =?us-ascii?Q?JFo4gyMmBaEqLQ7AhfvlEPXFLLve6ITMSyCW0M8LAlS9J43/JlfHIR+deNBP?= =?us-ascii?Q?SCQUo9Q3wnkcTwON0z1QHlIvJrrS2cLBZOdDas7Ti5RRYaU0QgGwA0mAjs9m?= =?us-ascii?Q?Cn/gK/8yr+8uo/MhN6bcsbQlWyifxkuOlDHv7w5CcbiJjVNX4hQYU0Ykpeqg?= =?us-ascii?Q?7DfdUVfe0sxZwTNPb0I4aCjsQ/fh0VEsfIAhiwcRsMEoWE4Y+I+cOwMI9Dnx?= =?us-ascii?Q?uxQI4zWJ5TdwJur/dajmj3EhgJro/Jbhre0h+JpSgzWFE6XmpiKYqcH0EyXV?= =?us-ascii?Q?uLr1X7+2WW9yCr06vvv7UDeuEWvDbdRBGcOQr2UHtNOf/VSM4wr+RqChRNFz?= =?us-ascii?Q?nx4arPcpz27K+ogzh39ssMD/VHrzedDN/a8kxtbK5GFRUfwxLk+9mET1TWMw?= =?us-ascii?Q?fTfxuI9ZzWWD6lZmWGqz/p0dqCjJCodrYM/X2hJB02PW1g/LRqfIys+lfKgG?= =?us-ascii?Q?huP2iI0B1KsKmmtCNtH8Q6rmMqEpb8+tlq9TmglBh3E88h8Iry84+Je6NSiK?= =?us-ascii?Q?V96OvJSRV68Qy6maxZh6qDORobiGL9Zctu7YV3WOXAujrcFPFosnd2sCg8j2?= =?us-ascii?Q?NIV4yJNgf0wWOACwCY=3D?= X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1444;6:/0GYMsm60upGt0gAljWCfUTR/HbHucsbNU/9Zj7JyfJ6UB6v45FfbRSSxxHYnTWXySdZmEzxqN51UfdT51zGjyDnbwW3tq+PWE9d4sB50EQ37RxYyNN23biQjfye1SqtIO8rBDI7MCEhg6lHeiJOw6+Hi7zISaf4gQNPdw8VzC1GUahCVMjHBe/OfDvKNcZ8v6d8n56GAnD0BMf8gI1ogl1HjeA0D2kYmt5EY+RIwJhrhP2odGgBrfh9JokDQbAd+Cv1nvFsVNIGBZd+HdznAS3aPcR4Mdy9jiOvxMpgy+riElWSEjZ+oIWdaXprdQ9rw2dIigA7j26exg2Dr/OyfCTUc8WhAQSWA9IMFNEWmPxRpp5DM1jFFuG46vsKoRNqHqXcvTLkC0KiTGdXHi3vJEBPYj7z5M6bT0LJCjDohYk=;5:Ij9Y99lNHFqpSvr6xFdC/VwA7cv9LuCixlG5D6ZSZgDIcillKTgCkJqJoXU9bQfrnnX0H/SfJCXt7ZM4AbrKLCq6Soz0zCUZ24N01tvGccYs9/sUgtMkAegbd0MyKz8lutNS6M9JJH5iGnHpJ5A7RA==;24:OWiYwWMG98B+NN1NFLytEr3qdXBVWEpxG/vwpCPwvINe2yiIg/JARuAXJ/il6YL1N+p9GXoCcFBpO4DhjFYTQl9MhkGIV/Ne7CFHw05kjpQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1444;7:lajN0qDGj3HffS4l85rJiyMrNi3wBBDjPb+UB60GmPHTLdOFQdZ0t/XoCBvtVSm8sBN17qGS2hzD0ruH+Fb5/aVa/9ODcZgbeCR3nWGYbY2zNDj65+2liqvdnMv4CgjI1Ljrz2cjWZSthClU/AJfe6aX8O59eZKKQd7bRUJz7RnLJSulYVMWDkSpLhbM5KpGNTcJB3hPLT4d/JMUBxia7RrtgfXqi9/bWUEwIBFv5vU5uUZ6Uo8yI18QU55bEeSXQ6z3ZYVsi80nKYQvpV/Llc59/GNagNkntUEateM53jGO0xiKDOu72m7mc359XM8ye0Q4dXY8KHpHynFg27WMWQ==;20:XZEC/KJMlFiEDGDZuZRI4NCXwkTtNlbzW29s4abqYBRSsc6tJ3sRgIAEj3tIrr/kfIlTrKXJW3mw3ERyEurc12yprHYgn2MbXim1JAp3nEniVkoM8rAlo+9ehZ8L6Cpyyn8FJKS65tYNMyvtiJP34C3hawlWOpt83MyMCOSOy7XDbUq/f7U1JMWT0DzF0Uk82ihzmhoMLbspZt0OcJB7rLjHWn5PXeT+PiHiuP4I0Ad1lBDSuM8DAGU3YVt+MhVo X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Feb 2017 20:57:12.3159 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1444 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Introduce amd_iommu_get_num_iommus(), which returns the value of amd_iommus_present. The function is used to replace direct access to the variable, which is now declared as static. This function will also be used by Perf AMD IOMMU driver. Cc: Borislav Petkov Cc: Joerg Roedel Signed-off-by: Suravee Suthikulpanit --- arch/x86/events/amd/iommu.h | 2 ++ drivers/iommu/amd_iommu.c | 6 +++--- drivers/iommu/amd_iommu_init.c | 11 +++++++++-- drivers/iommu/amd_iommu_proto.h | 1 + drivers/iommu/amd_iommu_types.h | 3 --- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/arch/x86/events/amd/iommu.h b/arch/x86/events/amd/iommu.h index 845d173..5c5c932 100644 --- a/arch/x86/events/amd/iommu.h +++ b/arch/x86/events/amd/iommu.h @@ -28,6 +28,8 @@ #define IOMMU_BASE_DEVID 0x0000 /* amd_iommu_init.c external support functions */ +extern int amd_iommu_get_num_iommus(void); + extern bool amd_iommu_pc_supported(void); extern u8 amd_iommu_pc_get_max_banks(u16 devid); diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c index 3ef0f42..04085a4 100644 --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c @@ -1230,7 +1230,7 @@ static void __domain_flush_pages(struct protection_domain *domain, build_inv_iommu_pages(&cmd, address, size, domain->id, pde); - for (i = 0; i < amd_iommus_present; ++i) { + for (i = 0; i < amd_iommu_get_num_iommus(); ++i) { if (!domain->dev_iommu[i]) continue; @@ -1274,7 +1274,7 @@ static void domain_flush_complete(struct protection_domain *domain) { int i; - for (i = 0; i < amd_iommus_present; ++i) { + for (i = 0; i < amd_iommu_get_num_iommus(); ++i) { if (domain && !domain->dev_iommu[i]) continue; @@ -3343,7 +3343,7 @@ static int __flush_pasid(struct protection_domain *domain, int pasid, * IOMMU TLB needs to be flushed before Device TLB to * prevent device TLB refill from IOMMU TLB */ - for (i = 0; i < amd_iommus_present; ++i) { + for (i = 0; i < amd_iommu_get_num_iommus(); ++i) { if (domain->dev_iommu[i] == 0) continue; diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c index c7edc18..17d7f44 100644 --- a/drivers/iommu/amd_iommu_init.c +++ b/drivers/iommu/amd_iommu_init.c @@ -165,7 +165,9 @@ struct ivmd_header { /* Array to assign indices to IOMMUs*/ struct amd_iommu *amd_iommus[MAX_IOMMUS]; -int amd_iommus_present; + +/* Number of IOMMUs present in the system */ +static int amd_iommus_present; /* IOMMUs have a non-present cache? */ bool amd_iommu_np_cache __read_mostly; @@ -270,6 +272,11 @@ static inline unsigned long tbl_size(int entry_size) return 1UL << shift; } +int amd_iommu_get_num_iommus(void) +{ + return amd_iommus_present; +} + /* Access to l1 and l2 indexed register spaces */ static u32 iommu_read_l1(struct amd_iommu *iommu, u16 l1, u8 address) @@ -1334,7 +1341,7 @@ static int __init init_iommu_one(struct amd_iommu *iommu, struct ivhd_header *h) /* Add IOMMU to internal data structures */ list_add_tail(&iommu->list, &amd_iommu_list); - iommu->index = amd_iommus_present++; + iommu->index = amd_iommus_present++; if (unlikely(iommu->index >= MAX_IOMMUS)) { WARN(1, "AMD-Vi: System has more IOMMUs than supported by this driver\n"); diff --git a/drivers/iommu/amd_iommu_proto.h b/drivers/iommu/amd_iommu_proto.h index 7eb60c1..e8f0710 100644 --- a/drivers/iommu/amd_iommu_proto.h +++ b/drivers/iommu/amd_iommu_proto.h @@ -21,6 +21,7 @@ #include "amd_iommu_types.h" +extern int amd_iommu_get_num_iommus(void); extern int amd_iommu_init_dma_ops(void); extern int amd_iommu_init_passthrough(void); extern irqreturn_t amd_iommu_int_thread(int irq, void *data); diff --git a/drivers/iommu/amd_iommu_types.h b/drivers/iommu/amd_iommu_types.h index 0d91785..09d7a11 100644 --- a/drivers/iommu/amd_iommu_types.h +++ b/drivers/iommu/amd_iommu_types.h @@ -606,9 +606,6 @@ struct devid_map { */ extern struct amd_iommu *amd_iommus[MAX_IOMMUS]; -/* Number of IOMMUs present in the system */ -extern int amd_iommus_present; - /* * Declarations for the global list of all protection domains */ -- 1.8.3.1