From: John Garry <john.garry@huawei.com>
To: <joro@8bytes.org>, <will@kernel.org>, <dwmw2@infradead.org>,
<baolu.lu@linux.intel.com>, <robin.murphy@arm.com>
Cc: <linux-kernel@vger.kernel.org>,
<iommu@lists.linux-foundation.org>, <linuxarm@huawei.com>,
<thunder.leizhen@huawei.com>, <chenxiang66@hisilicon.com>,
John Garry <john.garry@huawei.com>
Subject: [PATCH v12 3/5] iommu/vt-d: Add support for IOMMU default DMA mode build options
Date: Fri, 11 Jun 2021 20:20:41 +0800 [thread overview]
Message-ID: <1623414043-40745-4-git-send-email-john.garry@huawei.com> (raw)
In-Reply-To: <1623414043-40745-1-git-send-email-john.garry@huawei.com>
From: Zhen Lei <thunder.leizhen@huawei.com>
Make IOMMU_DEFAULT_LAZY default for when INTEL_IOMMU config is set,
as is current behaviour.
Also delete global flag intel_iommu_strict:
- In intel_iommu_setup(), call iommu_set_dma_strict(true) directly. The
accompanying print is removed, as it replicates the print in
iommu_subsys_init(), and, since called from __setup(), should before
iommu_subsys_init() (so desired ordering).
- For cap_caching_mode() set in intel_iommu_setup(), call
iommu_set_dma_strict(true) directly, and reword the accompanying print
and add the missing '\n'.
- For Ironlake GPU, again call iommu_set_dma_strict(true) directly and
keep the accompanying print.
Note that we should not conflict with iommu.strict param conflicting when
we set strict mode, as that param is not for x86.
[jpg: Remove intel_iommu_strict]
Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
Signed-off-by: John Garry <john.garry@huawei.com>
---
drivers/iommu/Kconfig | 1 +
drivers/iommu/intel/iommu.c | 15 ++++++---------
2 files changed, 7 insertions(+), 9 deletions(-)
diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig
index 2a71347611d4..4467353f981b 100644
--- a/drivers/iommu/Kconfig
+++ b/drivers/iommu/Kconfig
@@ -94,6 +94,7 @@ choice
prompt "IOMMU default DMA mode"
depends on IOMMU_DMA
+ default IOMMU_DEFAULT_LAZY if INTEL_IOMMU
default IOMMU_DEFAULT_STRICT
help
This option allows an IOMMU DMA mode to be chosen at build time, to
diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
index be35284a2016..6763e516362c 100644
--- a/drivers/iommu/intel/iommu.c
+++ b/drivers/iommu/intel/iommu.c
@@ -360,7 +360,6 @@ int intel_iommu_enabled = 0;
EXPORT_SYMBOL_GPL(intel_iommu_enabled);
static int dmar_map_gfx = 1;
-static int intel_iommu_strict;
static int intel_iommu_superpage = 1;
static int iommu_identity_mapping;
static int iommu_skip_te_disable;
@@ -453,8 +452,7 @@ static int __init intel_iommu_setup(char *str)
pr_warn("intel_iommu=forcedac deprecated; use iommu.forcedac instead\n");
iommu_dma_forcedac = true;
} else if (!strncmp(str, "strict", 6)) {
- pr_info("Disable batched IOTLB flush\n");
- intel_iommu_strict = 1;
+ iommu_set_dma_strict(true);
} else if (!strncmp(str, "sp_off", 6)) {
pr_info("Disable supported super page\n");
intel_iommu_superpage = 0;
@@ -4392,9 +4390,9 @@ int __init intel_iommu_init(void)
* is likely to be much lower than the overhead of synchronizing
* the virtual and physical IOMMU page-tables.
*/
- if (!intel_iommu_strict && cap_caching_mode(iommu->cap)) {
- pr_warn("IOMMU batching is disabled due to virtualization");
- intel_iommu_strict = 1;
+ if (cap_caching_mode(iommu->cap)) {
+ pr_warn("IOMMU batching disallowed due to virtualization\n");
+ iommu_set_dma_strict(true);
}
iommu_device_sysfs_add(&iommu->iommu, NULL,
intel_iommu_groups,
@@ -4403,7 +4401,6 @@ int __init intel_iommu_init(void)
}
up_read(&dmar_global_lock);
- iommu_set_dma_strict(intel_iommu_strict);
bus_set_iommu(&pci_bus_type, &intel_iommu_ops);
if (si_domain && !hw_pass_through)
register_memory_notifier(&intel_iommu_memory_nb);
@@ -5666,8 +5663,8 @@ static void quirk_calpella_no_shadow_gtt(struct pci_dev *dev)
} else if (dmar_map_gfx) {
/* we have to ensure the gfx device is idle before we flush */
pci_info(dev, "Disabling batched IOTLB flush on Ironlake\n");
- intel_iommu_strict = 1;
- }
+ iommu_set_dma_strict(true);
+ }
}
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0040, quirk_calpella_no_shadow_gtt);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0044, quirk_calpella_no_shadow_gtt);
--
2.26.2
next prev parent reply other threads:[~2021-06-11 12:26 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-11 12:20 [PATCH v12 0/5] Enhance IOMMU default DMA mode build options John Garry
2021-06-11 12:20 ` [PATCH v12 1/5] iommu: Print strict or lazy mode at init time John Garry
2021-06-14 15:54 ` Robin Murphy
2021-06-11 12:20 ` [PATCH v12 2/5] iommu: Enhance IOMMU default DMA mode build options John Garry
2021-06-12 1:21 ` Lu Baolu
2021-06-14 8:11 ` John Garry
2021-06-12 2:12 ` Lu Baolu
2021-06-14 16:03 ` Robin Murphy
2021-06-11 12:20 ` John Garry [this message]
2021-06-12 2:14 ` [PATCH v12 3/5] iommu/vt-d: Add support for " Lu Baolu
2021-06-14 8:03 ` John Garry
2021-06-15 7:26 ` Lu Baolu
2021-06-15 8:25 ` Robin Murphy
2021-06-16 8:42 ` Lu Baolu
2021-06-12 2:22 ` Lu Baolu
2021-06-14 7:53 ` John Garry
2021-06-14 14:11 ` Robin Murphy
2021-06-14 14:19 ` John Garry
2021-06-14 15:05 ` Robin Murphy
2021-06-11 12:20 ` [PATCH v12 4/5] iommu/amd: " John Garry
2021-06-11 12:20 ` [PATCH v12 5/5] iommu: Remove mode argument from iommu_set_dma_strict() John Garry
2021-06-12 2:23 ` Lu Baolu
2021-06-14 7:46 ` John Garry
2021-06-14 16:25 ` Robin Murphy
2021-06-14 17:03 ` John Garry
2021-06-14 17:19 ` Robin Murphy
2021-06-14 17:24 ` John Garry
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1623414043-40745-4-git-send-email-john.garry@huawei.com \
--to=john.garry@huawei.com \
--cc=baolu.lu@linux.intel.com \
--cc=chenxiang66@hisilicon.com \
--cc=dwmw2@infradead.org \
--cc=iommu@lists.linux-foundation.org \
--cc=joro@8bytes.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxarm@huawei.com \
--cc=robin.murphy@arm.com \
--cc=thunder.leizhen@huawei.com \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).