Re: [PATCH v3 01/12] iommu/vt-d: Add cache tag assignment interface

From: Baolu Lu
Date: Tue Apr 23 2024 - 22:46:11 EST


On 4/23/24 5:01 PM, Tian, Kevin wrote:
From: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx>
Sent: Tuesday, April 16, 2024 4:07 PM

@@ -1757,6 +1759,9 @@ int domain_attach_iommu(struct dmar_domain
*domain, struct intel_iommu *iommu)
unsigned long ndomains;
int num, ret = -ENOSPC;

+ if (domain->domain.type == IOMMU_DOMAIN_SVA)
+ return 0;
+
info = kzalloc(sizeof(*info), GFP_KERNEL);
if (!info)
return -ENOMEM;
@@ -1804,6 +1809,9 @@ void domain_detach_iommu(struct dmar_domain
*domain, struct intel_iommu *iommu)
{
struct iommu_domain_info *info;

+ if (domain->domain.type == IOMMU_DOMAIN_SVA)
+ return;
+
spin_lock(&iommu->lock);
info = xa_load(&domain->iommu_array, iommu->seq_id);
if (--info->refcnt == 0) {

above two are not called for SVA. Why do they start checking
SVA type now?

domain_detach_iommu() is called in remove_dev_pasid path which covers
SVA domain as well.

I am moving the check to the domain_attach/detach_iommu() helpers so
that the call sites could be generic. I will later move the domain ID
management to the cache tag code, this kind of check will be dropped
then.

Best regards,
baolu