Re: [PATCH v3 25/25] iommu: Allow enabling non-strict mode dynamically
From: Robin Murphy <robin.murphy@arm.com>
Date: 2021-08-09 13:40:15
Also in:
linux-iommu, lkml
On 2021-08-09 13:49, Will Deacon wrote:
On Wed, Aug 04, 2021 at 06:15:53PM +0100, Robin Murphy wrote:quoted
Allocating and enabling a flush queue is in fact something we can reasonably do while a DMA domain is active, without having to rebuild it from scratch. Thus we can allow a strict -> non-strict transition from sysfs without requiring to unbind the device's driver, which is of particular interest to users who want to make selective relaxations to critical devices like the one serving their root filesystem. Disabling and draining a queue also seems technically possible to achieve without rebuilding the whole domain, but would certainly be more involved. Furthermore there's not such a clear use-case for tightening up security *after* the device may already have done whatever it is that you don't trust it not to do, so we only consider the relaxation case. CC: Sai Praneeth Prakhya <redacted> Signed-off-by: Robin Murphy <robin.murphy@arm.com> --- v3: Actually think about concurrency, rework most of the fq data accesses to be (hopefully) safe and comment it all --- drivers/iommu/dma-iommu.c | 25 ++++++++++++++++++------- drivers/iommu/iommu.c | 16 ++++++++++++---- drivers/iommu/iova.c | 9 ++++++--- 3 files changed, 36 insertions(+), 14 deletions(-)I failed to break this, so hopefully you've caught everything now. Only thing I wasn't sure of is why we still need the smp_wmb() in init_iova_flush_queue(). Can we remove it now that we have one before assigning into the cookie?
Mostly because I failed to spot it, I think :) Indeed now that we don't have any callers other than iommu_dma_init_fq() to worry about, I don't think that one matters any more. It would if were testing cookie->iovad->fq directly as our indicator instead of cookie->fq_domain, but then we'd still need the new barrier to ensure iommu_dma_flush_iotlb_all() properly observes the latter, so we may as well rely on that everywhere and let it fully replace the old one. Thanks, Robin. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel