All of lore.kernel.org
 help / color / mirror / Atom feed
From: Robin Murphy <robin.murphy@arm.com>
To: John Garry <john.garry@huawei.com>,
	joro@8bytes.org, will@kernel.org, dwmw2@infradead.org,
	baolu.lu@linux.intel.com
Cc: linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org,
	linuxarm@huawei.com, thunder.leizhen@huawei.com,
	chenxiang66@hisilicon.com
Subject: Re: [PATCH v12 2/5] iommu: Enhance IOMMU default DMA mode build options
Date: Mon, 14 Jun 2021 17:03:31 +0100	[thread overview]
Message-ID: <2fe7d268-bc9f-9808-29a5-610527a0fd32@arm.com> (raw)
In-Reply-To: <1623414043-40745-3-git-send-email-john.garry@huawei.com>

On 2021-06-11 13:20, John Garry wrote:
> From: Zhen Lei <thunder.leizhen@huawei.com>
> 
> First, add build options IOMMU_DEFAULT_{LAZY|STRICT}, so that we have the
> opportunity to set {lazy|strict} mode as default at build time. Then put
> the two config options in an choice, as they are mutually exclusive.
> 
> [jpg: Make choice between strict and lazy only (and not passthrough)]
> Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
> Signed-off-by: John Garry <john.garry@huawei.com>
> ---
>   drivers/iommu/Kconfig | 38 ++++++++++++++++++++++++++++++++++++++
>   drivers/iommu/iommu.c |  3 ++-
>   2 files changed, 40 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig
> index 1f111b399bca..2a71347611d4 100644
> --- a/drivers/iommu/Kconfig
> +++ b/drivers/iommu/Kconfig
> @@ -90,6 +90,44 @@ config IOMMU_DEFAULT_PASSTHROUGH
>   
>   	  If unsure, say N here.
>   
> +choice
> +	prompt "IOMMU default DMA mode"
> +	depends on IOMMU_DMA
> +
> +	default IOMMU_DEFAULT_STRICT
> +	help
> +	  This option allows an IOMMU DMA mode to be chosen at build time, to
> +	  override the default DMA mode of each ARCH, removing the need to
> +	  pass in kernel parameters through command line. It is still possible
> +	  to provide ARCH-specific or common boot options to override this
> +	  option.
> +
> +	  If unsure, keep the default.
> +
> +config IOMMU_DEFAULT_STRICT
> +	bool "strict"
> +	help
> +	  For every IOMMU DMA unmap operation, the flush operation of IOTLB and
> +	  the free operation of IOVA are guaranteed to be done in the unmap
> +	  function.
> +
> +config IOMMU_DEFAULT_LAZY
> +	bool "lazy"
> +	help
> +	  Support lazy mode, where for every IOMMU DMA unmap operation, the
> +	  flush operation of IOTLB and the free operation of IOVA are deferred.
> +	  They are only guaranteed to be done before the related IOVA will be
> +	  reused.
> +
> +	  The isolation provided in this mode is not as secure as STRICT mode,
> +	  such that a vulnerable time window may be created between the DMA
> +	  unmap and the mapping finally being torn down in the IOMMU, where the
> +	  device can still access the system memory. However this mode may
> +	  provide better performance in high throughput scenarios, and is still
> +	  considerably more secure than passthrough mode or no IOMMU.
> +
> +endchoice
> +
>   config OF_IOMMU
>   	def_bool y
>   	depends on OF && IOMMU_API
> diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
> index cf58949cc2f3..ccbd5d4c1a50 100644
> --- a/drivers/iommu/iommu.c
> +++ b/drivers/iommu/iommu.c
> @@ -29,7 +29,8 @@ static struct kset *iommu_group_kset;
>   static DEFINE_IDA(iommu_group_ida);
>   
>   static unsigned int iommu_def_domain_type __read_mostly;
> -static bool iommu_dma_strict __read_mostly = true;
> +static bool iommu_dma_strict __read_mostly =
> +			IS_ENABLED(CONFIG_IOMMU_DEFAULT_STRICT);

Nit: I reckon this is a fine place to wield the 100-character 
relaxation, but it's not my call in the end.

With the wording tweaks already mentioned,

Reviewed-by: Robin Murphy <robin.murphy@arm.com>

>   static u32 iommu_cmd_line __read_mostly;
>   
>   struct iommu_group {
> 

WARNING: multiple messages have this Message-ID (diff)
From: Robin Murphy <robin.murphy@arm.com>
To: John Garry <john.garry@huawei.com>,
	joro@8bytes.org, will@kernel.org, dwmw2@infradead.org,
	baolu.lu@linux.intel.com
Cc: iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org,
	linuxarm@huawei.com
Subject: Re: [PATCH v12 2/5] iommu: Enhance IOMMU default DMA mode build options
Date: Mon, 14 Jun 2021 17:03:31 +0100	[thread overview]
Message-ID: <2fe7d268-bc9f-9808-29a5-610527a0fd32@arm.com> (raw)
In-Reply-To: <1623414043-40745-3-git-send-email-john.garry@huawei.com>

On 2021-06-11 13:20, John Garry wrote:
> From: Zhen Lei <thunder.leizhen@huawei.com>
> 
> First, add build options IOMMU_DEFAULT_{LAZY|STRICT}, so that we have the
> opportunity to set {lazy|strict} mode as default at build time. Then put
> the two config options in an choice, as they are mutually exclusive.
> 
> [jpg: Make choice between strict and lazy only (and not passthrough)]
> Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
> Signed-off-by: John Garry <john.garry@huawei.com>
> ---
>   drivers/iommu/Kconfig | 38 ++++++++++++++++++++++++++++++++++++++
>   drivers/iommu/iommu.c |  3 ++-
>   2 files changed, 40 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig
> index 1f111b399bca..2a71347611d4 100644
> --- a/drivers/iommu/Kconfig
> +++ b/drivers/iommu/Kconfig
> @@ -90,6 +90,44 @@ config IOMMU_DEFAULT_PASSTHROUGH
>   
>   	  If unsure, say N here.
>   
> +choice
> +	prompt "IOMMU default DMA mode"
> +	depends on IOMMU_DMA
> +
> +	default IOMMU_DEFAULT_STRICT
> +	help
> +	  This option allows an IOMMU DMA mode to be chosen at build time, to
> +	  override the default DMA mode of each ARCH, removing the need to
> +	  pass in kernel parameters through command line. It is still possible
> +	  to provide ARCH-specific or common boot options to override this
> +	  option.
> +
> +	  If unsure, keep the default.
> +
> +config IOMMU_DEFAULT_STRICT
> +	bool "strict"
> +	help
> +	  For every IOMMU DMA unmap operation, the flush operation of IOTLB and
> +	  the free operation of IOVA are guaranteed to be done in the unmap
> +	  function.
> +
> +config IOMMU_DEFAULT_LAZY
> +	bool "lazy"
> +	help
> +	  Support lazy mode, where for every IOMMU DMA unmap operation, the
> +	  flush operation of IOTLB and the free operation of IOVA are deferred.
> +	  They are only guaranteed to be done before the related IOVA will be
> +	  reused.
> +
> +	  The isolation provided in this mode is not as secure as STRICT mode,
> +	  such that a vulnerable time window may be created between the DMA
> +	  unmap and the mapping finally being torn down in the IOMMU, where the
> +	  device can still access the system memory. However this mode may
> +	  provide better performance in high throughput scenarios, and is still
> +	  considerably more secure than passthrough mode or no IOMMU.
> +
> +endchoice
> +
>   config OF_IOMMU
>   	def_bool y
>   	depends on OF && IOMMU_API
> diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
> index cf58949cc2f3..ccbd5d4c1a50 100644
> --- a/drivers/iommu/iommu.c
> +++ b/drivers/iommu/iommu.c
> @@ -29,7 +29,8 @@ static struct kset *iommu_group_kset;
>   static DEFINE_IDA(iommu_group_ida);
>   
>   static unsigned int iommu_def_domain_type __read_mostly;
> -static bool iommu_dma_strict __read_mostly = true;
> +static bool iommu_dma_strict __read_mostly =
> +			IS_ENABLED(CONFIG_IOMMU_DEFAULT_STRICT);

Nit: I reckon this is a fine place to wield the 100-character 
relaxation, but it's not my call in the end.

With the wording tweaks already mentioned,

Reviewed-by: Robin Murphy <robin.murphy@arm.com>

>   static u32 iommu_cmd_line __read_mostly;
>   
>   struct iommu_group {
> 
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

  parent reply	other threads:[~2021-06-14 16:03 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 [this message]
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 ` [PATCH v12 4/5] iommu/amd: " John Garry
2021-06-11 12:20   ` 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=2fe7d268-bc9f-9808-29a5-610527a0fd32@arm.com \
    --to=robin.murphy@arm.com \
    --cc=baolu.lu@linux.intel.com \
    --cc=chenxiang66@hisilicon.com \
    --cc=dwmw2@infradead.org \
    --cc=iommu@lists.linux-foundation.org \
    --cc=john.garry@huawei.com \
    --cc=joro@8bytes.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxarm@huawei.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 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.