Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp3172530yba; Sun, 28 Apr 2019 19:18:22 -0700 (PDT) X-Google-Smtp-Source: APXvYqx29e/umiAj0fV83dGtYO9a8I/dtwLQ12iBlB8fgjqHWX6G2muaBHwmSVD2ca7tYMsKhQFx X-Received: by 2002:a63:5c24:: with SMTP id q36mr4861017pgb.314.1556504302391; Sun, 28 Apr 2019 19:18:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556504302; cv=none; d=google.com; s=arc-20160816; b=G57vIE7NUKOEDI7Z4v9MFLJQAvRVHfET26DQTUMK1A5Yynp2zBZ//11fxKbrZyyAjc qftcMeOm9fpyzjbFl1HEmYVYddLDUbVeOYB4I3CSGH8bWdDbkZu7yAR7a2+AR1xQL5ls v/AmUfwVfLX73ZIiXDhdU7UR3AGNjfAh5R8I/SxqDbY7Wd2hgajX5QtSOs11fkAMjNOO FXmtedpqsdOMhF/wMxbWIIWlUktRqMafG/9FAZWtB/rwLnQwGPQ2uNUftbyLsFgOYgEO 5zSi6FbupDlLhDXko6OgggaOWqgHaYWgu78vhyAnZRhrzosSW/gWJfcu7uVUEae3k83p OYgw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=QTlJb6sXbcqON3kaAVLMbjamob722kngfBs0nHjo5lc=; b=c3o7JxOm+c7v6FOMq1TKb40t9C3jo+1R8wQPaGgOE4npHovrxYDAC1v8AWqH9EEbZN CALsRYNiA4t/1/OvXRs9B2jlKUZaoZGfA4RygP+M80g0s1TMTz9DLX18N8H+0EDNuGQ8 bIHyTLSsUoPRKuJSD/9OfIg9ZkXCV41iJCSkoQN1engGjHEmzk4it+eOvWuvJpNed+Iy WPT0U+WjngBuNxxZNY0KkN2B6pzXBsYEjrqlVHE7voFaMwXGTW7FaLGpKTvODZqBb6js iekllv+Yjmu0gN57X3lBjtvJTp4SXNxdE+H2LjbzpALvs4wdyNvJI6Qblcl2depZXIAF POOA== ARC-Authentication-Results: i=1; mx.google.com; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m3si32650729plb.245.2019.04.28.19.18.07; Sun, 28 Apr 2019 19:18:22 -0700 (PDT) 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; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727217AbfD2CQJ (ORCPT + 99 others); Sun, 28 Apr 2019 22:16:09 -0400 Received: from mga03.intel.com ([134.134.136.65]:46364 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727030AbfD2CQH (ORCPT ); Sun, 28 Apr 2019 22:16:07 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Apr 2019 19:16:07 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,408,1549958400"; d="scan'208";a="146537857" Received: from allen-box.sh.intel.com ([10.239.159.136]) by orsmga003.jf.intel.com with ESMTP; 28 Apr 2019 19:16:05 -0700 From: Lu Baolu To: David Woodhouse , Joerg Roedel Cc: ashok.raj@intel.com, jacob.jun.pan@intel.com, kevin.tian@intel.com, jamessewart@arista.com, tmurphy@arista.com, dima@arista.com, iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org, Lu Baolu Subject: [PATCH v3 4/8] iommu/vt-d: Enable DMA remapping after rmrr mapped Date: Mon, 29 Apr 2019 10:09:21 +0800 Message-Id: <20190429020925.18136-5-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190429020925.18136-1-baolu.lu@linux.intel.com> References: <20190429020925.18136-1-baolu.lu@linux.intel.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The rmrr devices require identity map of the rmrr regions before enabling DMA remapping. Otherwise, there will be a window during which DMA from/to the rmrr regions will be blocked. In order to alleviate this, we move enabling DMA remapping after all rmrr regions get mapped. Signed-off-by: Lu Baolu --- drivers/iommu/intel-iommu.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c index e9f31b062305..847e4a326d29 100644 --- a/drivers/iommu/intel-iommu.c +++ b/drivers/iommu/intel-iommu.c @@ -3527,11 +3527,6 @@ static int __init init_dmars(void) ret = dmar_set_interrupt(iommu); if (ret) goto free_iommu; - - if (!translation_pre_enabled(iommu)) - iommu_enable_translation(iommu); - - iommu_disable_protect_mem_regions(iommu); } return 0; @@ -4933,7 +4928,6 @@ int __init intel_iommu_init(void) goto out_free_reserved_range; } up_write(&dmar_global_lock); - pr_info("Intel(R) Virtualization Technology for Directed I/O\n"); #if defined(CONFIG_X86) && defined(CONFIG_SWIOTLB) swiotlb = 0; @@ -4956,6 +4950,16 @@ int __init intel_iommu_init(void) register_memory_notifier(&intel_iommu_memory_nb); cpuhp_setup_state(CPUHP_IOMMU_INTEL_DEAD, "iommu/intel:dead", NULL, intel_iommu_cpu_dead); + + /* Finally, we enable the DMA remapping hardware. */ + for_each_iommu(iommu, drhd) { + if (!translation_pre_enabled(iommu)) + iommu_enable_translation(iommu); + + iommu_disable_protect_mem_regions(iommu); + } + pr_info("Intel(R) Virtualization Technology for Directed I/O\n"); + intel_iommu_enabled = 1; intel_iommu_debugfs_init(); -- 2.17.1