[PATCH v3 12/22] iommu/amd: Pass iommu and devid to amd_iommu_make_clear_dte()
From: Suravee Suthikulpanit
Date: Mon Jun 29 2026 - 11:51:25 EST
Take struct amd_iommu and device ID explicitly instead of deriving
the IOMMU from struct iommu_dev_data.
Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@xxxxxxx>
---
drivers/iommu/amd/amd_iommu.h | 6 +++---
drivers/iommu/amd/iommu.c | 4 ++--
drivers/iommu/amd/nested.c | 2 +-
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/iommu/amd/amd_iommu.h b/drivers/iommu/amd/amd_iommu.h
index 20000722451f..269d0f448b9d 100644
--- a/drivers/iommu/amd/amd_iommu.h
+++ b/drivers/iommu/amd/amd_iommu.h
@@ -217,10 +217,10 @@ void amd_iommu_update_dte(struct amd_iommu *iommu,
int amd_iommu_completion_wait(struct amd_iommu *iommu);
static inline void
-amd_iommu_make_clear_dte(struct iommu_dev_data *dev_data, struct dev_table_entry *new)
+amd_iommu_make_clear_dte(struct amd_iommu *iommu, u16 devid,
+ struct dev_table_entry *new)
{
struct dev_table_entry *initial_dte;
- struct amd_iommu *iommu = get_amd_iommu_from_dev(dev_data->dev);
/* All existing DTE must have V bit set */
new->data128[0] = DTE_FLAG_V;
@@ -230,7 +230,7 @@ amd_iommu_make_clear_dte(struct iommu_dev_data *dev_data, struct dev_table_entry
* Restore cached persistent DTE bits, which can be set by information
* in IVRS table. See set_dev_entry_from_acpi().
*/
- initial_dte = amd_iommu_get_ivhd_dte_flags(iommu->pci_seg->id, dev_data->devid);
+ initial_dte = amd_iommu_get_ivhd_dte_flags(iommu->pci_seg->id, devid);
if (initial_dte) {
new->data128[0] |= initial_dte->data128[0];
new->data128[1] |= initial_dte->data128[1];
diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c
index 55257cf12bac..b9063a7d6a6e 100644
--- a/drivers/iommu/amd/iommu.c
+++ b/drivers/iommu/amd/iommu.c
@@ -2253,7 +2253,7 @@ static void set_dte_entry(struct amd_iommu *iommu,
struct gcr3_tbl_info *gcr3_info = &dev_data->gcr3_info;
struct dev_table_entry *dte = &get_dev_table(iommu)[dev_data->devid];
- amd_iommu_make_clear_dte(dev_data, &new);
+ amd_iommu_make_clear_dte(iommu, dev_data->devid, &new);
old_domid = READ_ONCE(dte->data[1]) & DTE_DOMID_MASK;
if (gcr3_info->gcr3_tbl)
@@ -2285,7 +2285,7 @@ static void clear_dte_entry(struct amd_iommu *iommu, struct iommu_dev_data *dev_
{
struct dev_table_entry new = {};
- amd_iommu_make_clear_dte(dev_data, &new);
+ amd_iommu_make_clear_dte(iommu, dev_data->devid, &new);
amd_iommu_update_dte(iommu, dev_data, &new);
}
diff --git a/drivers/iommu/amd/nested.c b/drivers/iommu/amd/nested.c
index 5b902598e68a..81a5ae00225e 100644
--- a/drivers/iommu/amd/nested.c
+++ b/drivers/iommu/amd/nested.c
@@ -200,7 +200,7 @@ static void set_dte_nested(struct amd_iommu *iommu, struct iommu_domain *dom,
return;
parent = ndom->viommu->parent;
- amd_iommu_make_clear_dte(dev_data, new);
+ amd_iommu_make_clear_dte(iommu, dev_data->devid, new);
/* Retrieve the current pagetable info via the IOMMU PT API. */
pt_iommu_amdv1_hw_info(&parent->amdv1, &pt_info);
--
2.34.1