From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751782AbdAPH0c (ORCPT ); Mon, 16 Jan 2017 02:26:32 -0500 Received: from mail-bn3nam01on0079.outbound.protection.outlook.com ([104.47.33.79]:16864 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751441AbdAPHYc (ORCPT ); Mon, 16 Jan 2017 02:24:32 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Suravee.Suthikulpanit@amd.com; From: Suravee Suthikulpanit To: , CC: , , , , Suravee Suthikulpanit Subject: [PATCH v8 4/9] iommu/amd: Introduce amd_iommu_get_num_iommus() Date: Mon, 16 Jan 2017 01:23:31 -0600 Message-ID: <1484551416-5440-5-git-send-email-Suravee.Suthikulpanit@amd.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1484551416-5440-1-git-send-email-Suravee.Suthikulpanit@amd.com> References: <1484551416-5440-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: KL1PR0201CA0003.apcprd02.prod.outlook.com (10.167.53.141) To BN6PR12MB1443.namprd12.prod.outlook.com (10.172.24.20) X-MS-Office365-Filtering-Correlation-Id: 908fa473-fa58-42df-6676-08d43de0b65f X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:BN6PR12MB1443; X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1443;3:JnnDjVORvCrv0sDqyoXQVHADrTY0M2bOhU/uICC8nskmzOL0DEQ5UcbgouVeBdkjMPDnVZc1rT5POcmQrsGCza1WcFFZ3nn8pJXWOSaBxjzFCXvuqZDh7WMS4ZqR4E9gWaPRbxUWKO/AbpQz7j69hfirGLm9SId1Ocs2uT1r91rWh8j6ToUCeixWW8mGTkN4Ofwj7u7DWvu/oWuey/+KjCMPPaEJ1lsxVIACCyzo95WN+t24IKT0ufIfSt9vPdZWGjpdjCcCDpS186ZtMqhRWQ== X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1443;25:t6YnChKuLpEE7rP3ypBCvGnMkYQcH1iB0W7sPAB8OPuUqsQHPbtJLb8iyK1j7fw2in14iiFWYN9i6jDuvj74gyB/EnlX0taTJANMc9oW4FMad8c0Z6WxF/KVVCCuIzEj5BiozUpiGxkSymsJObgQrHEcNzO4vzNBtUq/6SHDmeyBt7doh/5FbPJZqr+PqdHfyKneijqQtfiET6fq1/l+EJg4xQ79l2UcP7z61W25VKPjUi3tGJp3R8lGKiQu2KoeURSaS7uGe3BgKexwjfsNfQUScllKG8oVqcTzin76q20Cs8bUEDFsP9c6I9WIy4xNaTTlOhGScxdITsdkCRSQSMn+q+tEm6nDPKrLJ5jh+21P3XS1IVpoAsW8wwL6NDKdrMLJbRzyL5nzw45bP8AKfdO8hEA+wIppBOiS7SxhMjXvRWD2E9qwxYM6IRACjy/H46u9IwREn++Y4OHOSkPuC+DkxBtfeUKaO616Gl9r2xbXeMUFdOmZK00YCqkT0cEZoRmbcav0BfXYiZ+DVQkM6GJqHsji2eHvSLV7KBXu6wY/F9r5FtgjGczGnxH96C1VmGB2i2lRh/lqAyCCMYdZbAhM6GIMzi2hGhigz9EkZ8mUABlylhI9diJfIZeWnx+LZ8ZhlqbsCJI692gvVzmSDd42eBjx3jEuy1sAvR/+ccykaXJndyrujgObclzIiV982glN1mT03BSVbJsk4bxmw53bHPsJskA7+EWMenv+NUHN6T/Jy3cu/3HvpgWh3SyQYyiYSkXJL5xw0BQt1GuqPw== X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1443;31:U4sAxekTDHMYu92WeeIpHRFOHnSqixeM3jynPcUzh8AQtW2LA1XqUFFtkcKLbkcu27BLlv9znt0qBQJxf3UeAf3wvlAIESj7vGT7lYJJ5THmUbGCU1skDBpXl/7sC7zL0TZ0uCN2O7uKaXzPKcWM5E8IWvr1r8/1393Meoeb4FZFP4BFZoUO/Fgdx0OCpOzI27MtURIscaGBcQV0+EhPdLNzQyAZ+Hf+1jRYThhIax0xhB2J3DoKLIFw2wK+SeDz;20:akbH4brYPhscofmFkjmJt6FEhwfAv8uuGlLmuKCzsLJh8F+0KDAFMdgosfbxJ2y2NKxxGPDhYJ5iLKu4SgTt7pUjFY4zKuqv5lBiGAigpmO+0oa7pLu3wLPilLAgPemFktnuExhypy1RjyUweRQ59clduk49F+u++ko9Pc2v7VYeOvzFYZ4kl/bc35vtZaNVI86rQXVcLR1aQxS06HFSpSWq4mEi9B68MmIXMcBsVTCMTUICw0oNATeYA1fS402n+7GnFZcy5Jtus3Sa5x8qJBgVBDc5mN7aNU+t9UaXRLDRdwSMov5abFemgoJKNDD+k2Gj3STrSVImf86ej8xYfBpSk8NczVihk2WqBa3eupdJnExoB/V410lPmWN+QYmPCV1GyFIakIqFrcM+ElK1BOA3LiDcQUpwdyoWSuBPOayPM3rnbM9HOzXFeTb/cMa+hqK8LG3CLIg9eVVdguGyljyfzKUv3CLv8UsOH/WquNMylqBQyR0s52vA38qhDP98 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6041248)(20161123555025)(20161123564025)(20161123562025)(20161123560025)(6072148);SRVR:BN6PR12MB1443;BCL:0;PCL:0;RULEID:;SRVR:BN6PR12MB1443; X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1443;4:XEoIYXLfB4F2RmqAsu5K39nMMu+j5vmMbKCUM3UM247vUS6+EPSzZUw/yU9HbqIJeZaSJ49okHnYA9AYhhgOM1qADRgA9bCE2oRRBbyLMQ3dDWZm4e5W+IEMuTa4Z7MBw1GzXKUtJe5fpa/Yf3kjdZ0FmuLNR25RjsgQBrr2Ac9TYZe/oXOSqT3VVvSqDEmALQFeCZWAh409AsxwDWKQUw8/Bg4AGHGBOlQtNalzm402XAwV53emqIfASQIvEGAUWw5QlCrj0IsCHHTmUwsd0QxvwjDZ203TQ48pQvkn+hEHMr2R5hIxxds+fd0T1WJhF0d9nNlBav3sDbUVhgnO1AmWnI5uwnLUtU5hrxIum2VW4TE5zNLEAgO6gSzyNaY7Dreb43KLvNIzk0cNPYasDH6lxeIQERaDBH4jnCaiCAaoaiAliqnaSIKt1zXaqdsASWNBRg0WpcXsOd8mefd8LNRaPOsJLbphbjtLbC0sxbNqwIif2ko6/NVn6KxG+wloZSBJecFUDJ1jBLOlNMCE35Pk7AZxoJNO6AeC/5UyxlFrQf27xleC1XM9lYckYFJtwIdfPsR8+gd+H9wdEwLwltfoBUzJAIvhmbnyaNATe5P3bFiUAbx3S/GDZKjbuAup X-Forefront-PRVS: 01894AD3B8 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(979002)(6009001)(7916002)(39840400002)(39860400002)(39410400002)(39850400002)(39450400003)(199003)(189002)(2906002)(6116002)(5001770100001)(86362001)(189998001)(92566002)(66066001)(68736007)(97736004)(3846002)(6512007)(305945005)(7736002)(4326007)(27001)(42186005)(8676002)(2950100002)(81156014)(81166006)(50226002)(6666003)(106356001)(5003940100001)(105586002)(50986999)(48376002)(38730400001)(101416001)(25786008)(6486002)(5660300001)(6506006)(4720700003)(76176999)(47776003)(54906002)(36756003)(50466002)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR12MB1443;H:ssuthiku-rhel73.localdomain;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN6PR12MB1443;23:HrVff2QYZbzuyNVlchJFmwAitFmK//zHYk+QSzQMc?= =?us-ascii?Q?gLF1xIbyYy+nFU0UC74AOqxyli6bZVNFPlem4URJh13M+ozRCCYC7KOvXrga?= =?us-ascii?Q?3Da6oQp+1Wi1KYsSdlBSg1J2h/8O5XJ7A3TuW8Em9uoGpBthUsODUy6+PhO8?= =?us-ascii?Q?a6VkOFXFbhoxjF3pSnH+OWEDzH1SDBL9qc4N8Ol4K9Mqtrd5MV3cEeDvqD89?= =?us-ascii?Q?tl1Li0+9MByjMVdh8GBfVCYQA02LrnWHwERaoSypJAxThtLPfXA33/n79fF/?= =?us-ascii?Q?B++w4QGIYWPRC2VGCTeRkL1RB3eA1EdB2Tr2LJYSz4eCvZAGb6ipvKZWi618?= =?us-ascii?Q?IEAwH+n/OKX/LlqDmnWYGTP7Il1e7rvmsfpxKlRxnJd29khi4z9imbFa0qwU?= =?us-ascii?Q?CXx9jwAuZaR07LNqUzMEcXLxAXe+CF7zA11xSDuLmUVuMBiS0QOAqeK6pBFP?= =?us-ascii?Q?0TavvIaso+LL951aBFZ0z1n9IRWWGj+CWWMjndsvWnfTwcE4uPlliUDd6IQX?= =?us-ascii?Q?wgcHN4XMDuSKExX9cN9droe5DMX9nYOIknhZ1vRvvbtTod+zxmR1RLceseF9?= =?us-ascii?Q?UN1ycN+C+TPnzhnN0CRt/UXx3yaqjl0ze3YA7ZAmmKJ9ff2iApqRuIo1+M8r?= =?us-ascii?Q?j4rpbjPyeOpV9SV6xS7NFuLfZ0Pvm/NT2HibZ+Fh8r5vzsIV7FSMILV3ETZS?= =?us-ascii?Q?b7ASEQT/P60wYfw3521SQjQcGrJpFS2QaauoJdQ/jOnUUAFUwXKVTJS495CK?= =?us-ascii?Q?7A/xpkUgKOy0bi6l1BHmQa8Jqdsq/lWZE5b3iMF27Zd/ict3hWIwe/0XX+0Z?= =?us-ascii?Q?9cvg78+Yj1Gh6393L0Loy/qrGS5ZsiJIX//ibbnQRPP+BtjLWys8/l/O6/vA?= =?us-ascii?Q?cCu7LbbiytRgpE+DFDu/ayTHgxkDrU73sNNB0KFXZ/Kx5nldJLMeiOWGZaEU?= =?us-ascii?Q?5y/YS2rUPQFHMdyXoP3wk7cJ2bCLYFXrGucO9yb4tRqRnIVHIaYONFW9nW1P?= =?us-ascii?Q?2U+9mcABmZIF7cOWSaIo8gMu64eQlyvVOLpx916aRKT5T0OlGzZEOJ1ttXhD?= =?us-ascii?Q?bvBnWGd0AF3h+zJFrN+a3BvZrUl9oTesDSBwuLog/9frxMAZAD9IN/cwgxZ7?= =?us-ascii?Q?5n2yY+U0IEf2cyZeo/eQfda1fu7XnLXKgHpXdSPaR2E0YTgvMwpUXVyf8Ifa?= =?us-ascii?Q?0+DT0DJ92btG8tkRYWfSiBzWPdX09QJuOC38a//Kxw6ADxtRx1kO2ZCws5Dd?= =?us-ascii?Q?7RcsPBlgdLZIEY7xJBBJIkTC6vLkmmYowa2s1w11AatEgNmK343DVrTgFHrf?= =?us-ascii?Q?K8GMDfDL/np3sUWwjIhiVI=3D?= X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1443;6:qo7V+AoW/y++Se3XUlLX7oRU+uTA0enb8wUTpo0n56kHuEILJbqUUwXw2Ka4ki1ptPOa7kXhe4U1G9zxsrdiKRLNs+I+atvz0uRxvYe9qAMXg65hQGMH+2B/sFn7kJc7ZamaJ55oawyE+7Q/WDawkVH/YXHTma5sUKFuyT65mlNuWLF8vxdj94g8EyIVc+mRuRLNeL81DqRH13kkUx1qBWYJS0/Y6jK+aE8POxZXAM9WMeNmRvJMiHlI22mpDeHafR0e+o1WHBc+l6/N3amLYeAYWBp50tndZGE6/okC0CswRULM2uSrrPVK/R+vnuHlJvS58+g5AwzD+HalYGCIwxFWy28aE/yPVep3+HFe+8k+/DXuTvk52MGzxfOULs/lmaV7J4PgLEuUS1sSta7Zu1f9t7BpxeXklxzpkbAUmZxKX1VTmMLbVuUOI6yEqiHrgXhMx0zn7Y5vYT0h7BGGmg==;5:RmUHogDXDvPA9FUTAe8FzBZrwxwVURDQDxfReB95zuhPcs3UwDKbiozRAdoPfHgFPbVN1kGJ+nHlKW4Rw2PrpkK5HUc9GrbKDAoPeEddNxa08PKHp6oRezySSZlDznGu5nwB52ndmJyhCsq2+tZVABeQBRskZxy4CUQLn4/w6kY=;24:mM+2L97gnd+DkW2L3fdMVZ+qp3IrOWYkKfPoGpfPgJ9D71jtYCJ9RTeZqz6G4sfRfpAqKvSK8EGfmKzahk27HTVm/dpiKaxvTrN/J/hnwEQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1443;7:uy1QRqz/dJtkBipudSrw3VLBFlk8zR+Vx4HI0GqRDyFD1c+kORrzUzGyjCHd8KNC3JcL/AHCW2YPaRH0lIonOlNGVp6/f26XDmC0s6ftp74WGZ8CfKlEx0rroVUknoqxnW4IgX3qWcYncIkowq3lUHuuXqTQ62caErgZMC58INhozAsmozmnQaBNT4cya2EnaiR7jJsSp5S6xcm7HT62LOAzZUgELpMKEIsN3CNGt7Yf3SgJgdzTZAssym/ZA0MC/S0Q6WF2hIpGzVOZEOUkD4mSMuy4PKhdGI4/oAgE+fFamirpj+aHFXZv5Q+ibfXnODqjRiPpspB2+ljHiY4/oSpGfEt4PC8THHBhi38WLCJDb0os2RLfY3cnDOFHKZ4E/J9yJRZXqKPyk+OdJHuL2TVy0RAlDBWtW/6sCXN3jZxi8vm9O5cOvDBsk7hxNVGSj800wrYttid4tEFDImCezQ==;20:Z9zXOEpgWoC2JZZhkY3/wZCYdrv6FqZXmkPowePwcbu9mO0ArwsrVE0HTUFkMhcze8n+F75QFDPrijsZqXNMqJ9YjNyfhWn5qPntRsR0gg5agX0wCdQr3r0jdEgtEBx483iooBzIDah+hhldkOSHhGgZ0hCUNeYxyFwZDCTZe3QGjW74Gjb+iA20HRnJbjxBBH00w5H7hnK3gwt8Z/Gehp6RdgbCDQmockRbqiA+xVWQf0ItYMTQoJBZCsEXPCwJ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jan 2017 07:24:28.0754 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1443 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, then replaces the 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 754595e..ae55485 100644 --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c @@ -1228,7 +1228,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; @@ -1272,7 +1272,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; @@ -3341,7 +3341,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 157e934..515d4c1 100644 --- a/drivers/iommu/amd_iommu_init.c +++ b/drivers/iommu/amd_iommu_init.c @@ -164,7 +164,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; @@ -269,6 +271,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) @@ -1333,7 +1340,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