[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251221014302.17738-3-dmaluka@chromium.org>
Date: Sun, 21 Dec 2025 02:43:02 +0100
From: Dmytro Maluka <dmaluka@...omium.org>
To: David Woodhouse <dwmw2@...radead.org>,
Lu Baolu <baolu.lu@...ux.intel.com>,
iommu@...ts.linux.dev
Cc: Joerg Roedel <joro@...tes.org>,
Will Deacon <will@...nel.org>,
Robin Murphy <robin.murphy@....com>,
linux-kernel@...r.kernel.org,
"Vineeth Pillai (Google)" <vineeth@...byteword.org>,
Aashish Sharma <aashish@...hishsharma.net>,
Grzegorz Jaszczyk <jaszczyk@...omium.org>,
Chuanxiao Dong <chuanxiao.dong@...el.com>,
Kevin Tian <kevin.tian@...el.com>,
Dmytro Maluka <dmaluka@...omium.org>
Subject: [PATCH 2/2] iommu/vt-d: Use WRITE_ONCE for setting root table entries
Like context table entries in the previous patch, root table entries may
also be set up at runtime, when DMA translation is already enabled (e.g.
due to a device hotplug). So to stay on the safe side, use WRITE_ONCE
when setting a root table entry, to prevent the compiler from doing
store tearing which could result in setting the present bit earlier than
the context table address bits.
Signed-off-by: Dmytro Maluka <dmaluka@...omium.org>
---
drivers/iommu/intel/iommu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
index 134302fbcd92..fe4d0d210a5f 100644
--- a/drivers/iommu/intel/iommu.c
+++ b/drivers/iommu/intel/iommu.c
@@ -374,7 +374,7 @@ struct context_entry *iommu_context_addr(struct intel_iommu *iommu, u8 bus,
__iommu_flush_cache(iommu, (void *)context, CONTEXT_SIZE);
phy_addr = virt_to_phys((void *)context);
- *entry = phy_addr | 1;
+ WRITE_ONCE(*entry, phy_addr | 1);
__iommu_flush_cache(iommu, entry, sizeof(*entry));
}
return &context[devfn];
--
2.47.3
Powered by blists - more mailing lists