linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Robin Murphy <robin.murphy@arm.com>
To: Will Deacon <will@kernel.org>
Cc: joro@8bytes.org, linux-kernel@vger.kernel.org,
	dianders@chromium.org, iommu@lists.linux-foundation.org,
	rajatja@google.com, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v3 24/25] iommu/dma: Factor out flush queue init
Date: Mon, 9 Aug 2021 15:47:32 +0100	[thread overview]
Message-ID: <4c6ecfb1-cf64-fa35-9fa7-f6fa39e2c066@arm.com> (raw)
In-Reply-To: <20210809125238.GB1097@willie-the-truck>

On 2021-08-09 13:52, Will Deacon wrote:
> On Wed, Aug 04, 2021 at 06:15:52PM +0100, Robin Murphy wrote:
>> Factor out flush queue setup from the initial domain init so that we
>> can potentially trigger it from sysfs later on in a domain's lifetime.
>>
>> Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com>
>> Reviewed-by: John Garry <john.garry@huawei.com>
>> Signed-off-by: Robin Murphy <robin.murphy@arm.com>
>> ---
>>   drivers/iommu/dma-iommu.c | 30 ++++++++++++++++++++----------
>>   include/linux/dma-iommu.h |  9 ++++++---
>>   2 files changed, 26 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c
>> index 2e19505dddf9..f51b8dc99ac6 100644
>> --- a/drivers/iommu/dma-iommu.c
>> +++ b/drivers/iommu/dma-iommu.c
>> @@ -310,6 +310,25 @@ static bool dev_is_untrusted(struct device *dev)
>>   	return dev_is_pci(dev) && to_pci_dev(dev)->untrusted;
>>   }
>>   
>> +int iommu_dma_init_fq(struct iommu_domain *domain)
>> +{
>> +	struct iommu_dma_cookie *cookie = domain->iova_cookie;
>> +
>> +	if (domain->type != IOMMU_DOMAIN_DMA_FQ)
>> +		return -EINVAL;
>> +	if (cookie->fq_domain)
>> +		return 0;
>> +
>> +	if (init_iova_flush_queue(&cookie->iovad, iommu_dma_flush_iotlb_all,
>> +				  iommu_dma_entry_dtor)) {
>> +		pr_warn("iova flush queue initialization failed\n");
>> +		domain->type = IOMMU_DOMAIN_DMA;
>> +		return -ENODEV;
> 
> I do find this a bit odd: we assert that the caller has set domain->type
> to IOMMU_DOMAIN_DMA_FQ but then on failure we reset it to IOMMU_DOMAIN_DMA
> here. I think it would be less error-prone if the setting of domain->type
> was handled in the same function.

On reflection I think I agree. For some reason I settled on the idea of 
doing this to make the callers simpler, but it turns out that unpicking 
it to flow logically is in fact a +4/-5 diff essentially just moving all 
the same statements to different places, and that's before I update 
comments since that theoretical race between the sysfs and DMA ops paths 
only exists because of sysfs having to dance around the type check here...

I'll send v4 later today or possibly tomorrow, but not in such a hurry 
that I skimp on the build-testing this time!

Cheers,
Robin.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2021-08-09 14:49 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-04 17:15 [PATCH v3 00/25] iommu: Refactor DMA domain strictness Robin Murphy
2021-08-04 17:15 ` [PATCH v3 01/25] iommu: Pull IOVA cookie management into the core Robin Murphy
2021-08-04 18:52   ` Heiko Stübner
2021-08-05  7:18   ` Marek Szyprowski
2021-08-05  9:15   ` Yoshihiro Shimoda
2021-08-04 17:15 ` [PATCH v3 02/25] iommu/amd: Drop IOVA cookie management Robin Murphy
2021-08-05  7:37   ` kernel test robot
2021-08-05  9:37   ` Robin Murphy
2021-08-04 17:15 ` [PATCH v3 03/25] iommu/arm-smmu: " Robin Murphy
2021-08-04 17:15 ` [PATCH v3 04/25] iommu/vt-d: " Robin Murphy
2021-08-04 17:15 ` [PATCH v3 05/25] iommu/exynos: " Robin Murphy
2021-08-05  7:19   ` Marek Szyprowski
2021-08-04 17:15 ` [PATCH v3 06/25] iommu/ipmmu-vmsa: " Robin Murphy
2021-08-05  9:15   ` Yoshihiro Shimoda
2021-08-04 17:15 ` [PATCH v3 07/25] iommu/mtk: " Robin Murphy
2021-08-04 17:15 ` [PATCH v3 08/25] iommu/rockchip: " Robin Murphy
2021-08-04 18:53   ` Heiko Stübner
2021-08-04 17:15 ` [PATCH v3 09/25] iommu/sprd: " Robin Murphy
2021-08-06  2:15   ` Chunyan Zhang
2021-08-04 17:15 ` [PATCH v3 10/25] iommu/sun50i: " Robin Murphy
2021-08-04 17:15 ` [PATCH v3 11/25] iommu/virtio: " Robin Murphy
2021-08-04 17:15 ` [PATCH v3 12/25] iommu/dma: Unexport " Robin Murphy
2021-08-04 17:15 ` [PATCH v3 13/25] iommu/dma: Remove redundant "!dev" checks Robin Murphy
2021-08-04 17:15 ` [PATCH v3 14/25] iommu: Indicate queued flushes via gather data Robin Murphy
2021-08-04 17:15 ` [PATCH v3 15/25] iommu/io-pgtable: Remove non-strict quirk Robin Murphy
2021-08-04 17:15 ` [PATCH v3 16/25] iommu: Introduce explicit type for non-strict DMA domains Robin Murphy
2021-08-04 17:15 ` [PATCH v3 17/25] iommu/amd: Prepare for multiple DMA domain types Robin Murphy
2021-08-04 17:15 ` [PATCH v3 18/25] iommu/arm-smmu: " Robin Murphy
2021-08-04 17:15 ` [PATCH v3 19/25] iommu/vt-d: " Robin Murphy
2021-08-04 17:15 ` [PATCH v3 20/25] iommu: Express DMA strictness via the domain type Robin Murphy
2021-08-04 17:15 ` [PATCH v3 21/25] iommu: Expose DMA domain strictness via sysfs Robin Murphy
2021-08-04 17:15 ` [PATCH v3 22/25] iommu: Only log strictness for DMA domains Robin Murphy
2021-08-04 17:15 ` [PATCH v3 23/25] iommu: Merge strictness and domain type configs Robin Murphy
2021-08-06  9:15   ` John Garry
2021-08-04 17:15 ` [PATCH v3 24/25] iommu/dma: Factor out flush queue init Robin Murphy
2021-08-09 12:52   ` Will Deacon
2021-08-09 14:47     ` Robin Murphy [this message]
2021-08-09 19:05   ` Rajat Jain
2021-08-09 19:59     ` Robin Murphy
2021-08-09 20:15       ` Rajat Jain
2021-08-04 17:15 ` [PATCH v3 25/25] iommu: Allow enabling non-strict mode dynamically Robin Murphy
2021-08-09 12:49   ` Will Deacon
2021-08-09 13:40     ` Robin Murphy

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=4c6ecfb1-cf64-fa35-9fa7-f6fa39e2c066@arm.com \
    --to=robin.murphy@arm.com \
    --cc=dianders@chromium.org \
    --cc=iommu@lists.linux-foundation.org \
    --cc=joro@8bytes.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rajatja@google.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).