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 4/5] iommu/amd: Add support for IOMMU default DMA mode build options Date: Fri, 11 Jun 2021 20:20:42 +0800 [thread overview] Message-ID: <1623414043-40745-5-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 AMD_IOMMU config is set, which matches current behaviour. For "fullflush" param, just call iommu_set_dma_strict(true) directly. Since this is called from __setup(), it should occur prior to iommu_subsys_init(). As such, since we get a strict vs lazy mode print there, drop the prints in amd_iommu_init_dma_ops(). Also drop global flag amd_iommu_unmap_flush, as it has no purpose any longer. Note that we should not conflict with iommu.strict param when we set strict mode, as that param is not for x86. [jpg: Rebase for relocated file an drop amd_iommu_unmap_flush] Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com> Signed-off-by: John Garry <john.garry@huawei.com> --- drivers/iommu/Kconfig | 2 +- drivers/iommu/amd/amd_iommu_types.h | 6 ------ drivers/iommu/amd/init.c | 3 +-- drivers/iommu/amd/iommu.c | 6 ------ 4 files changed, 2 insertions(+), 15 deletions(-) diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig index 4467353f981b..8c1e0f2bba0d 100644 --- a/drivers/iommu/Kconfig +++ b/drivers/iommu/Kconfig @@ -94,7 +94,7 @@ choice prompt "IOMMU default DMA mode" depends on IOMMU_DMA - default IOMMU_DEFAULT_LAZY if INTEL_IOMMU + default IOMMU_DEFAULT_LAZY if (AMD_IOMMU || 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/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_iommu_types.h index 94c1a7a9876d..8dbe61e2b3c1 100644 --- a/drivers/iommu/amd/amd_iommu_types.h +++ b/drivers/iommu/amd/amd_iommu_types.h @@ -779,12 +779,6 @@ extern u16 amd_iommu_last_bdf; /* allocation bitmap for domain ids */ extern unsigned long *amd_iommu_pd_alloc_bitmap; -/* - * If true, the addresses will be flushed on unmap time, not when - * they are reused - */ -extern bool amd_iommu_unmap_flush; - /* Smallest max PASID supported by any IOMMU in the system */ extern u32 amd_iommu_max_pasid; diff --git a/drivers/iommu/amd/init.c b/drivers/iommu/amd/init.c index 46280e6e1535..0e6ae6d68f14 100644 --- a/drivers/iommu/amd/init.c +++ b/drivers/iommu/amd/init.c @@ -161,7 +161,6 @@ u16 amd_iommu_last_bdf; /* largest PCI device id we have to handle */ LIST_HEAD(amd_iommu_unity_map); /* a list of required unity mappings we find in ACPI */ -bool amd_iommu_unmap_flush; /* if true, flush on every unmap */ LIST_HEAD(amd_iommu_list); /* list of all AMD IOMMUs in the system */ @@ -3099,7 +3098,7 @@ static int __init parse_amd_iommu_options(char *str) { for (; *str; ++str) { if (strncmp(str, "fullflush", 9) == 0) - amd_iommu_unmap_flush = true; + iommu_set_dma_strict(true); if (strncmp(str, "force_enable", 12) == 0) amd_iommu_force_enable = true; if (strncmp(str, "off", 3) == 0) diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index b1fbf2c83df5..32b541ee2e11 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -1775,12 +1775,6 @@ void amd_iommu_domain_update(struct protection_domain *domain) static void __init amd_iommu_init_dma_ops(void) { swiotlb = (iommu_default_passthrough() || sme_me_mask) ? 1 : 0; - - if (amd_iommu_unmap_flush) - pr_info("IO/TLB flush on unmap enabled\n"); - else - pr_info("Lazy IO/TLB flushing enabled\n"); - iommu_set_dma_strict(amd_iommu_unmap_flush); } int __init amd_iommu_init_api(void) -- 2.26.2
WARNING: multiple messages have this Message-ID (diff)
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, linuxarm@huawei.com, iommu@lists.linux-foundation.org Subject: [PATCH v12 4/5] iommu/amd: Add support for IOMMU default DMA mode build options Date: Fri, 11 Jun 2021 20:20:42 +0800 [thread overview] Message-ID: <1623414043-40745-5-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 AMD_IOMMU config is set, which matches current behaviour. For "fullflush" param, just call iommu_set_dma_strict(true) directly. Since this is called from __setup(), it should occur prior to iommu_subsys_init(). As such, since we get a strict vs lazy mode print there, drop the prints in amd_iommu_init_dma_ops(). Also drop global flag amd_iommu_unmap_flush, as it has no purpose any longer. Note that we should not conflict with iommu.strict param when we set strict mode, as that param is not for x86. [jpg: Rebase for relocated file an drop amd_iommu_unmap_flush] Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com> Signed-off-by: John Garry <john.garry@huawei.com> --- drivers/iommu/Kconfig | 2 +- drivers/iommu/amd/amd_iommu_types.h | 6 ------ drivers/iommu/amd/init.c | 3 +-- drivers/iommu/amd/iommu.c | 6 ------ 4 files changed, 2 insertions(+), 15 deletions(-) diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig index 4467353f981b..8c1e0f2bba0d 100644 --- a/drivers/iommu/Kconfig +++ b/drivers/iommu/Kconfig @@ -94,7 +94,7 @@ choice prompt "IOMMU default DMA mode" depends on IOMMU_DMA - default IOMMU_DEFAULT_LAZY if INTEL_IOMMU + default IOMMU_DEFAULT_LAZY if (AMD_IOMMU || 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/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_iommu_types.h index 94c1a7a9876d..8dbe61e2b3c1 100644 --- a/drivers/iommu/amd/amd_iommu_types.h +++ b/drivers/iommu/amd/amd_iommu_types.h @@ -779,12 +779,6 @@ extern u16 amd_iommu_last_bdf; /* allocation bitmap for domain ids */ extern unsigned long *amd_iommu_pd_alloc_bitmap; -/* - * If true, the addresses will be flushed on unmap time, not when - * they are reused - */ -extern bool amd_iommu_unmap_flush; - /* Smallest max PASID supported by any IOMMU in the system */ extern u32 amd_iommu_max_pasid; diff --git a/drivers/iommu/amd/init.c b/drivers/iommu/amd/init.c index 46280e6e1535..0e6ae6d68f14 100644 --- a/drivers/iommu/amd/init.c +++ b/drivers/iommu/amd/init.c @@ -161,7 +161,6 @@ u16 amd_iommu_last_bdf; /* largest PCI device id we have to handle */ LIST_HEAD(amd_iommu_unity_map); /* a list of required unity mappings we find in ACPI */ -bool amd_iommu_unmap_flush; /* if true, flush on every unmap */ LIST_HEAD(amd_iommu_list); /* list of all AMD IOMMUs in the system */ @@ -3099,7 +3098,7 @@ static int __init parse_amd_iommu_options(char *str) { for (; *str; ++str) { if (strncmp(str, "fullflush", 9) == 0) - amd_iommu_unmap_flush = true; + iommu_set_dma_strict(true); if (strncmp(str, "force_enable", 12) == 0) amd_iommu_force_enable = true; if (strncmp(str, "off", 3) == 0) diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index b1fbf2c83df5..32b541ee2e11 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -1775,12 +1775,6 @@ void amd_iommu_domain_update(struct protection_domain *domain) static void __init amd_iommu_init_dma_ops(void) { swiotlb = (iommu_default_passthrough() || sme_me_mask) ? 1 : 0; - - if (amd_iommu_unmap_flush) - pr_info("IO/TLB flush on unmap enabled\n"); - else - pr_info("Lazy IO/TLB flushing enabled\n"); - iommu_set_dma_strict(amd_iommu_unmap_flush); } int __init amd_iommu_init_api(void) -- 2.26.2 _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
next prev parent reply other threads:[~2021-06-11 12:26 UTC|newest] Thread overview: 54+ 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 ` John Garry 2021-06-11 12:20 ` [PATCH v12 1/5] iommu: Print strict or lazy mode at init time John Garry 2021-06-11 12:20 ` John Garry 2021-06-14 15:54 ` Robin Murphy 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-11 12:20 ` John Garry 2021-06-12 1:21 ` Lu Baolu 2021-06-12 1:21 ` Lu Baolu 2021-06-14 8:11 ` John Garry 2021-06-14 8:11 ` John Garry 2021-06-12 2:12 ` Lu Baolu 2021-06-12 2:12 ` Lu Baolu 2021-06-14 16:03 ` Robin Murphy 2021-06-14 16:03 ` Robin Murphy 2021-06-11 12:20 ` [PATCH v12 3/5] iommu/vt-d: Add support for " John Garry 2021-06-11 12:20 ` John Garry 2021-06-12 2:14 ` Lu Baolu 2021-06-12 2:14 ` Lu Baolu 2021-06-14 8:03 ` John Garry 2021-06-14 8:03 ` John Garry 2021-06-15 7:26 ` Lu Baolu 2021-06-15 7:26 ` Lu Baolu 2021-06-15 8:25 ` Robin Murphy 2021-06-15 8:25 ` Robin Murphy 2021-06-16 8:42 ` Lu Baolu 2021-06-16 8:42 ` Lu Baolu 2021-06-12 2:22 ` Lu Baolu 2021-06-12 2:22 ` Lu Baolu 2021-06-14 7:53 ` John Garry 2021-06-14 7:53 ` John Garry 2021-06-14 14:11 ` Robin Murphy 2021-06-14 14:11 ` Robin Murphy 2021-06-14 14:19 ` John Garry 2021-06-14 14:19 ` John Garry 2021-06-14 15:05 ` Robin Murphy 2021-06-14 15:05 ` Robin Murphy 2021-06-11 12:20 ` John Garry [this message] 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-11 12:20 ` John Garry 2021-06-12 2:23 ` Lu Baolu 2021-06-12 2:23 ` Lu Baolu 2021-06-14 7:46 ` John Garry 2021-06-14 7:46 ` John Garry 2021-06-14 16:25 ` Robin Murphy 2021-06-14 16:25 ` Robin Murphy 2021-06-14 17:03 ` John Garry 2021-06-14 17:03 ` John Garry 2021-06-14 17:19 ` Robin Murphy 2021-06-14 17:19 ` Robin Murphy 2021-06-14 17:24 ` John Garry 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-5-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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.