[PATCH v2 19/24] iommu: Expose DMA domain strictness via sysfs

Lu Baolu baolu.lu at linux.intel.com
Thu Jul 29 23:10:28 PDT 2021


On 7/28/21 11:58 PM, Robin Murphy wrote:
> The sysfs interface for default domain types exists primarily so users
> can choose the performance/security tradeoff relevant to their own
> workload. As such, the choice between the policies for DMA domains fits
> perfectly as an additional point on that scale - downgrading a
> particular device from a strict default to non-strict may be enough to
> let it reach the desired level of performance, while still retaining
> more peace of mind than with a wide-open identity domain. Now that we've
> abstracted non-strict mode as a distinct type of DMA domain, allow it to
> be chosen through the user interface as well.
> 
> Signed-off-by: Robin Murphy <robin.murphy at arm.com>
> ---
>   Documentation/ABI/testing/sysfs-kernel-iommu_groups | 2 ++
>   drivers/iommu/iommu.c                               | 2 ++
>   2 files changed, 4 insertions(+)
> 
> diff --git a/Documentation/ABI/testing/sysfs-kernel-iommu_groups b/Documentation/ABI/testing/sysfs-kernel-iommu_groups
> index eae2f1c1e11e..43ba764ba5b7 100644
> --- a/Documentation/ABI/testing/sysfs-kernel-iommu_groups
> +++ b/Documentation/ABI/testing/sysfs-kernel-iommu_groups
> @@ -42,6 +42,8 @@ Description:	/sys/kernel/iommu_groups/<grp_id>/type shows the type of default
>   		========  ======================================================
>   		DMA       All the DMA transactions from the device in this group
>   		          are translated by the iommu.
> +		DMA-FQ    As above, but using batched invalidation to lazily
> +		          remove translations after use.
>   		identity  All the DMA transactions from the device in this group
>   		          are not translated by the iommu.
>   		auto      Change to the type the device was booted with.
> diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
> index eecb5657de69..5a08e0806cbb 100644
> --- a/drivers/iommu/iommu.c
> +++ b/drivers/iommu/iommu.c
> @@ -3265,6 +3265,8 @@ static ssize_t iommu_group_store_type(struct iommu_group *group,
>   		req_type = IOMMU_DOMAIN_IDENTITY;
>   	else if (sysfs_streq(buf, "DMA"))
>   		req_type = IOMMU_DOMAIN_DMA;
> +	else if (sysfs_streq(buf, "DMA-FQ"))
> +		req_type = IOMMU_DOMAIN_DMA_FQ;
>   	else if (sysfs_streq(buf, "auto"))
>   		req_type = 0;
>   	else
> 


Reviewed-by: Lu Baolu <baolu.lu at linux.intel.com>

Best regards,
baolu



More information about the linux-arm-kernel mailing list