Received: by 10.223.164.202 with SMTP id h10csp1544459wrb; Sat, 18 Nov 2017 00:59:23 -0800 (PST) X-Google-Smtp-Source: AGs4zMY5hBWcI9QoxeamtPQNuE0J/V3SUPmj3u1hNUztsbQcRCnnRE9VK/H/gUUXYdVDx/sWU0KZ X-Received: by 10.99.120.2 with SMTP id t2mr7807219pgc.333.1510995563634; Sat, 18 Nov 2017 00:59:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510995563; cv=none; d=google.com; s=arc-20160816; b=akbt+TRMvMo6Hc9X/2u+WyuwAP3255nFIYtiF7CH3zqy8DSnpawuqzD47eArBvlbPJ 95L0JP2q5/1cjs+hYUA4R32tBaM2fRkHyh1DWLiYWeTY6epTDV5Bl/F6rZ5QWjulW1Cf 6VRLyIgx9Oj9NqZ9S0LZWxTSErfmpjML0dkP86VMQW+BzGHB5DJ4i96t9q40hYYhNVaU c2eircFAuGmJ1rhG6x50MZ9VLXs7OhLWm8Olj0SszU5hOH+IRebxD798NH/XdKa0Vngf 7mi7EQzsNXXh4eTzKQgIm4lyioAx0f/z8ZOT7wwle576LMP0Y0k/FgkY2TVU+QACRm18 HqWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:spamdiagnosticmetadata :spamdiagnosticoutput:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature:arc-authentication-results; bh=wHmquqsHwaRykO1YBrp6hUWAVbksYmX1QChrKEU7J54=; b=mKqD5hPD+QS1tYQ5ODIlzeu07+kbiAKUSVeSOdbB5CYrYgYJIdm/9grK/aku6FYh/H iMqoMQsf7LUA9414fan/4bNQsVunhtW8WNRbqibkP54cs0IgbhPkgNV6CgRqSMGWhWQu EfPvJKkNDuVSt+w/s7ArxT1w4OIqQT+/LB5xitBMi2ePooedcwLit7nRopO9TmMWxCvw 1f5YcTUaXzG8pNj4glmUcfrLcnwQ7nuvdtg0J+uudm4kqCk/Hh0CFopHA9k4TgW0k4Sn hOQlWbBk9hRdcGPUhccfVVcll6B/MAQw13N0sFRXGT0adOUoOEaYtAW5QZYdSzE2nla6 6FrQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amdcloud.onmicrosoft.com header.s=selector1-amd-com header.b=pTk96uc4; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s188si4174452pgb.646.2017.11.18.00.59.10; Sat, 18 Nov 2017 00:59:23 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@amdcloud.onmicrosoft.com header.s=selector1-amd-com header.b=pTk96uc4; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1762205AbdKQVMd (ORCPT + 93 others); Fri, 17 Nov 2017 16:12:33 -0500 Received: from mail-bl2nam02on0089.outbound.protection.outlook.com ([104.47.38.89]:20274 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1762172AbdKQVL6 (ORCPT ); Fri, 17 Nov 2017 16:11:58 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=wHmquqsHwaRykO1YBrp6hUWAVbksYmX1QChrKEU7J54=; b=pTk96uc4uJuPMaThVF2wFA7PK9l57rA4hErU7Mvu2Cg20lqrbsJIe5N7NCCUDR4DNhZQxrAjEpIvcxk0rCe4F8QdjkiiX9eIhyJP/KPt29b9Y3/21Yqde+dp3iztp+40i8yPFzAvBFvJMwP05aGvk4XwZd7fQJpGoxv+4O88cAw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Suravee.Suthikulpanit@amd.com; Received: from ssuthiku-rhel73-zp.amd.com (165.204.77.1) by MWHPR12MB1742.namprd12.prod.outlook.com (10.175.55.13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.239.5; Fri, 17 Nov 2017 21:11:46 +0000 From: Suravee Suthikulpanit To: linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org Cc: joro@8bytes.org, jroedel@suse.de, alex.williamson@redhat.com, Suravee Suthikulpanit Subject: [PATCH 2/2] iommu/amd: Add support for fast IOTLB flushing Date: Fri, 17 Nov 2017 15:11:20 -0600 Message-Id: <1510953080-5619-3-git-send-email-Suravee.Suthikulpanit@amd.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1510953080-5619-1-git-send-email-Suravee.Suthikulpanit@amd.com> References: <1510953080-5619-1-git-send-email-Suravee.Suthikulpanit@amd.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN4PR0501CA0100.namprd05.prod.outlook.com (10.167.128.17) To MWHPR12MB1742.namprd12.prod.outlook.com (10.175.55.13) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c43d7b16-b91c-4980-ee15-08d52dffcfb9 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(2017052603258);SRVR:MWHPR12MB1742; X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1742;3:G9Fi16BS9eQd80nzz7tKDWm4Oo4YxW0s3i95X0aqNBe6d1DYaoU36VO8W4NFvbZ8NGyb/sBNhQE8xMcrn0GOTNAAmdwwDZAmNgscHxQYqL2QXTY8r/0qOxvqTcjowsQfIigydeHyr5Zxt7qkXwKzEZ1Wyc8RkK9T5Yprq2y2LkbRG/PSEXgNG7ZRn4fumsQWHNdW1/gr/RIuh7B6j48oaVwc2a4SUkwcB4Y/k9eNe063PmnZ0Z73wCB7WnPa3q8e;25:Xh53ASC+cJ6DTvtMkRwemUTv/RU8LdyfP+k7yLKD0Y+zZVR9SNcCPYYt4q3/nxHBWt2hx2MMNC3jLsKcqObd9FlJqSnJCVTjFSMFC+RG7+kcVvY4i3obbaEo3d3d+PDwNfxbHVcgLeGFHhaEglhlqvYANm4y0OQaFQ83z8Tv0VC8YDqhUeTeZ8cw/nP5A3q4ubgQJBijwrAnvseUodJkjEE5i/7CKp9nDkBKBeDQ6ubwTOeSN8QVbmAaz+cd9mLQh1grY0enxJvHc/32zgDXv9hs7341/I+t96Gp5sq4vIYYZRRGnbJHpx3pB0AQfnc38a02msG0tFKo0rakNY2swQ==;31:VUOPBj+utZSfU1STjWRtwOkF1J/y2US3drqC8thaZoImGtgzGvEp206vEiA5VhmThgKwLfbcjQxa1uU7mqIxrQVh0fbgmxfmOXN9ai0zfnWfwnkwhJDxWGcyTRY8wlrFB2mdk/eMYOWrpV3fYy/MsOteqIOHB4iYdFgjFqMsjkXoM1VFpnpyYXO+mVcdemxfTxExlBteCuNKyETtCxIiYgtfVJ/faCDW9pp4pMoJ0uc= X-MS-TrafficTypeDiagnostic: MWHPR12MB1742: X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1742;20:HCPUoVpU3k565gYwU+beA2ruNwrjVF5IG0xESXojeEvz9INGJtxu6cQDbz6BXTdVtTIAWHDNrshqF3UdaTc/blr8ucQNB3Vx5Oo45r/YutiQv9dVVHZ2mx92UXKp5ib+i4Tj/bUhgrzoRA20cGfmc91McD+fT02vFlEncW/mIQSOeJwyjBXU3qgpsRzyx3etBcWI3R+S6Oyd/rnbYOllrIQrp9p/PM4osg8dnYBosRRTwh/T+4U/nH1PJzRQ6IyMicgbEUt/4t9gKQ60M663L58R773IewIDKHAtidNCh+09NddAa3u6Omx4Qzces/l67dSFJNIR3ENJEsgd9FCqlu1y8OtgEAiaNebnpCWkCTP+EhDcBlEA51ahfTbJeD01JAvuVu3Xnay6L/3ODawbpWYQPYN38muCyz6VfR+fHz84gjZtMR0qCfdl5PoFt5CKYeROKF93Pn2zONRTKEN8UVMUSJGg4qFuKdpmljGxTAhIGGXZeSAYcjXOH3z4K45/;4:8Tdwt3u8M2mKfJ18x7DCzmi+0p62U/o09W2Tmyz1IDzyLFjmd1fxfIQ+FXy1l6kBdMtWjtEDUDjPWviHbpH9hCqaqNvB4aBSjnaYMvmLU9tIbgf1tKEv8lFuKT/MXew+Zx8vjU+25ab/8ioUZGK+C/urxk3KfOVye/qxvRohtwxVCAxN5RaUSzyKWaLSFFBjN+MO+pO9K+hwwHtjGS4MRncTykhydBFW/dMTLA8F21TA64L6kHDeU5azTDrMxlQso/mtWwguNcxOHik06xopBC8m8T92N71j9I7P7DRTVI4cjY8ZCZ3j56T00SwGyjy0 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(10201501046)(100000703101)(100105400095)(3231022)(93006095)(93001095)(3002001)(6055026)(6041248)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123560025)(20161123558100)(20161123564025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:MWHPR12MB1742;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:MWHPR12MB1742; X-Forefront-PRVS: 049486C505 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(346002)(39860400002)(376002)(199003)(189002)(36756003)(5890100001)(48376002)(50986999)(478600001)(6116002)(101416001)(3846002)(81156014)(8676002)(81166006)(16526018)(76176999)(4720700003)(189998001)(16586007)(305945005)(2906002)(2950100002)(7736002)(6666003)(72206003)(86362001)(316002)(50226002)(47776003)(5003940100001)(6486002)(50466002)(97736004)(53416004)(68736007)(105586002)(53936002)(8936002)(66066001)(106356001)(25786009)(4326008)(5660300001);DIR:OUT;SFP:1101;SCL:1;SRVR:MWHPR12MB1742;H:ssuthiku-rhel73-zp.amd.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;MWHPR12MB1742;23:yFzaQRxXHy1+GPLol7cmfqzYP9lGAkX6CTIFZsAXS?= =?us-ascii?Q?XSuYf0Utasm5QqyCb8bY52jcq00GbftzNmx22y5nNO9lbnwpumZ2hl3oormY?= =?us-ascii?Q?0pS520fbdR7N1K4SXun4g7APGCLQie9+dunjllFQrpmoB+UTKWc6Pqedv8oR?= =?us-ascii?Q?uZkvGJzs57D5baKuTsKggLq7ZhPDmPIgclZsgH2pi/3qVS2hVfOGsanHNPRv?= =?us-ascii?Q?BXJjSB3Le4UJIEyKde8SPEe7M9k74EOm2M1bQo+eldPuLkyQMGCwDHMv7FSx?= =?us-ascii?Q?yeuoekhiQJPSNf2Z89khxUCmwWII/OwE01d8tCMhwx/WTL3lqY2evx4HCGIX?= =?us-ascii?Q?WF9cw4u6wBCuISmME8iBEXySjdSn+/8Sf92iUnaoBUszPG+e65sZZYfkavjj?= =?us-ascii?Q?Fb3B40/kwrC0sv+pG9+NN8684mjGWtHE49sMC1Yd4LwkZBoAVj5YTfjnCQ0k?= =?us-ascii?Q?u06woLBwVy2HnimzXBUiAGOi2KVXIL4/6Bv/YkmeKoUennfPHCCVrjyHOTXt?= =?us-ascii?Q?51q88q9SWzX+hRBXZpmWONnQU3VV1zJn4XeQjqpSqsoFKt+RX+4r6PPd6kV0?= =?us-ascii?Q?qk66cv0F8dN1OwhikfTuuKsHElyo6A2AAIxxyBQjS6Xu/l1mFTC1mPsUTAh7?= =?us-ascii?Q?UBQtInO/s4qovdi4piSdIGc46mNGHSj8z+PhyKwqzz8muo3iHAN4/3XoaGCT?= =?us-ascii?Q?Z0qZ0QZUy46EtDA0vEaDWEALR4fYrBrCfa6JSQtDQyZ/p6ONIDZWTgeW2GOD?= =?us-ascii?Q?mXeNhamQeA9c15GNTm4Bz5FULY5jDQJ4HurOOeGYeq4c5UPMn+iu8tW8V5k1?= =?us-ascii?Q?EYd6BOpqIB0x3E4D9+TlC6VaVCbYsO22ydCbVt4GXm/6tXgwfAWZ3sRQCiv5?= =?us-ascii?Q?LCf1zAe+4SSr5dHYxInthsXaWWYopmig2iI6gfR/VrbnKFa9gAKtPFzObyBq?= =?us-ascii?Q?a+QIVpYcghoM1h5ZuBQ+0rIDn5RJb45mtIljVskWB7Dw4hXtVXvIVWAmLSKB?= =?us-ascii?Q?TQfBw8yO9Vohjaajc7CigieGKHbwriVcFDhCp3ZaBQp8NS24cdHN2QasVUur?= =?us-ascii?Q?98xijF+4N3ydbLkkF8JaZxq5+RHDIc4YA+YtoOfcFSPeL0lEg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1742;6:K89DpL4xBrxGwqhE2OAYcam5wk5myYdb+exlxm5gInKfBhLNPRBotLB01Ejy57NWblWGw2PfwV+Ahb6Ffm/VBE9cdJfGl2ea30n84EofQd4VMW3MifACTrPyr6LhNsMn1hupenIheel0kTnGIMm7jRSZDcfP8CWamx6aCzQe4DmVTBFyuO2VeROQYGBF+HLVjtYfWgRxeZQNl4ltNW6SehmnaaTRFvpxBiblgqCcZe1QpIPxdAKYp7xteFYv1JdIPU/28dp3cYYBaTpUUfJO6ydj7QhDWM56boDc7Pw4mYKGTnIOhBHdS5vSIH7LxMdxZBtzmp/2j44w63FnZFTgGUiB/RK2GptrS56XqmXiwKw=;5:tvh6GVUwaVR1rH/LlIUZRN0omOx5I89f+IhXMwhv5xkqcDLmGkQtTUPfvdLCKctPI9naIOgOEqKDaH7mZ5wG/5IqmXQmrpKNx2YaUkwmadkQ3UdrCCVwPPVSfnCGYBzlUxx0r8JM6YbXTleYknAw37+ggDvRFzpFg/oe3CvxvbA=;24:+/tb6HG8EWR4FuW7iF2m3i4XzhaJ2ibnLLbXlfAsp7l30KKFQoyiDWyVFaVO78i7/ViVaxFohBIh6vtCbvDOCJQodbiZAcrrCwOIhY+uIWM=;7:BUVz1eOKTtj1Kxc2kshr91GBnrgGrtlDRbiXVLW0Gaq6R6SNSzTntgExS7pbZR1U4ZRpG6D5JEO6YRWU1imM+y/ftaiUBygSQ6yZr8/CP2BRSWcyIilyyszH3GmBLd1FtiQ7ugB1FgzHvGPU6kQU/RWYmigOvsWj1c+U54Is0XNXK9H1zVG0HVF5YaGuGy5lcwKsINg1UydgvmoB3LXoec7J8KVec1ImusLUVueCUYWJwR7g7U5pjRWCkKs2cvSX SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1742;20:ku+uf1G1frNu6qPtkEdAE49bSnfN2P+PCjT5F0YAVgjxZWkvDcxFbqON28C/JVvXR9F/cszvL9v/YBbsehGRMJLBU1mg6Og/+eb/CMSIaOVGnbmtfthp0bHwsBXkpmgYz195wOhbOzuXbf1y/VtqAuAPG6vWIYd6hGyzO2h5GL+dT6t2sYtROtNhvYJc81J+440ux7d29LkYQHPGBGT+QbFP5ITrlr5qeScrlOcpmvd6cJ+Scy5Fme1YtgA+QiAE X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Nov 2017 21:11:46.2459 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c43d7b16-b91c-4980-ee15-08d52dffcfb9 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1742 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Suravee Suthikulpanit Implement the newly added IOTLB flushing interface by introducing per-protection-domain IOTLB flush list, which maintains a list of IOVAs to be invalidated (by INVALIDATE_IOTLB_PAGES command) during IOTLB sync. Cc: Joerg Roedel Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd_iommu.c | 77 ++++++++++++++++++++++++++++++++++++++++- drivers/iommu/amd_iommu_init.c | 2 -- drivers/iommu/amd_iommu_types.h | 2 ++ 3 files changed, 78 insertions(+), 3 deletions(-) diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c index 8e8874d..bf92809 100644 --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c @@ -130,6 +130,12 @@ struct dma_ops_domain { static struct iova_domain reserved_iova_ranges; static struct lock_class_key reserved_rbtree_key; +struct iotlb_flush_entry { + struct list_head list; + unsigned long iova; + size_t size; +}; + /**************************************************************************** * * Helper functions @@ -2838,11 +2844,13 @@ static void protection_domain_free(struct protection_domain *domain) static int protection_domain_init(struct protection_domain *domain) { spin_lock_init(&domain->lock); + spin_lock_init(&domain->iotlb_flush_list_lock); mutex_init(&domain->api_lock); domain->id = domain_id_alloc(); if (!domain->id) return -ENOMEM; INIT_LIST_HEAD(&domain->dev_list); + INIT_LIST_HEAD(&domain->iotlb_flush_list); return 0; } @@ -3047,7 +3055,6 @@ static size_t amd_iommu_unmap(struct iommu_domain *dom, unsigned long iova, unmap_size = iommu_unmap_page(domain, iova, page_size); mutex_unlock(&domain->api_lock); - domain_flush_tlb_pde(domain); domain_flush_complete(domain); return unmap_size; @@ -3167,6 +3174,71 @@ static bool amd_iommu_is_attach_deferred(struct iommu_domain *domain, return dev_data->defer_attach; } +static void amd_iommu_flush_iotlb_all(struct iommu_domain *domain) +{ + struct protection_domain *dom = to_pdomain(domain); + + domain_flush_tlb_pde(dom); +} + +static void amd_iommu_iotlb_range_add(struct iommu_domain *domain, + unsigned long iova, size_t size) +{ + struct protection_domain *pdom = to_pdomain(domain); + struct iotlb_flush_entry *entry, *p; + unsigned long flags; + bool found = false; + + spin_lock_irqsave(&pdom->iotlb_flush_list_lock, flags); + list_for_each_entry(p, &pdom->iotlb_flush_list, list) { + if (iova != p->iova) + continue; + + if (size > p->size) { + p->size = size; + pr_debug("%s: update range: iova=%#lx, size = %#lx\n", + __func__, p->iova, p->size); + } + found = true; + break; + } + + if (!found) { + entry = kzalloc(sizeof(struct iotlb_flush_entry), + GFP_ATOMIC); + if (!entry) + return; + + pr_debug("%s: new range: iova=%lx, size=%#lx\n", + __func__, iova, size); + + entry->iova = iova; + entry->size = size; + list_add(&entry->list, &pdom->iotlb_flush_list); + } + spin_unlock_irqrestore(&pdom->iotlb_flush_list_lock, flags); +} + +static void amd_iommu_iotlb_sync(struct iommu_domain *domain) +{ + struct protection_domain *pdom = to_pdomain(domain); + struct iotlb_flush_entry *entry, *next; + unsigned long flags; + + /* Note: + * Currently, IOMMU driver just flushes the whole IO/TLB for + * a given domain. So, just remove entries from the list here. + */ + spin_lock_irqsave(&pdom->iotlb_flush_list_lock, flags); + list_for_each_entry_safe(entry, next, &pdom->iotlb_flush_list, list) { + list_del(&entry->list); + kfree(entry); + } + spin_unlock_irqrestore(&pdom->iotlb_flush_list_lock, flags); + + domain_flush_tlb_pde(pdom); +} + const struct iommu_ops amd_iommu_ops = { .capable = amd_iommu_capable, .domain_alloc = amd_iommu_domain_alloc, @@ -3185,6 +3257,9 @@ static bool amd_iommu_is_attach_deferred(struct iommu_domain *domain, .apply_resv_region = amd_iommu_apply_resv_region, .is_attach_deferred = amd_iommu_is_attach_deferred, .pgsize_bitmap = AMD_IOMMU_PGSIZES, + .flush_iotlb_all = amd_iommu_flush_iotlb_all, + .iotlb_range_add = amd_iommu_iotlb_range_add, + .iotlb_sync = amd_iommu_iotlb_sync, }; /***************************************************************************** diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c index 6fe2d03..1659377 100644 --- a/drivers/iommu/amd_iommu_init.c +++ b/drivers/iommu/amd_iommu_init.c @@ -2489,8 +2489,6 @@ static int __init early_amd_iommu_init(void) */ __set_bit(0, amd_iommu_pd_alloc_bitmap); - spin_lock_init(&amd_iommu_pd_lock); - /* * now the data structures are allocated and basically initialized * start the real acpi table scan diff --git a/drivers/iommu/amd_iommu_types.h b/drivers/iommu/amd_iommu_types.h index f6b24c7..30e1c68 100644 --- a/drivers/iommu/amd_iommu_types.h +++ b/drivers/iommu/amd_iommu_types.h @@ -462,9 +462,11 @@ struct amd_iommu_fault { struct protection_domain { struct list_head list; /* for list of all protection domains */ struct list_head dev_list; /* List of all devices in this domain */ + struct list_head iotlb_flush_list; /* store iovas for iotlb sync */ struct iommu_domain domain; /* generic domain handle used by iommu core code */ spinlock_t lock; /* mostly used to lock the page table*/ + spinlock_t iotlb_flush_list_lock; /* protect iova flush list */ struct mutex api_lock; /* protect page tables in the iommu-api path */ u16 id; /* the domain id written to the device table */ int mode; /* paging mode (0-6 levels) */ -- 1.8.3.1 From 1584380471979914201@xxx Sat Nov 18 05:29:23 +0000 2017 X-GM-THRID: 1584380471979914201 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread