[PATCH 12/24] iommu/amd: Pass iommu and devid to amd_iommu_make_clear_dte()
Suravee Suthikulpanit <[email protected]> Mon, 27 Jul 2026 13:29:01 +0000
| Newsgroups | dev.linux.lists.iommu,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Take struct amd_iommu and device ID explicitly instead of deriving the IOMMU from struct iommu_dev_data. Reviewed-by: Jason Gunthorpe <[email protected]> Signed-off-by: Suravee Suthikulpanit <[email protected]> --- 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 2aece7ffac2f..aecdfe6e9796 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 081448fc7b42..d6e18a2df9c7 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -2237,7 +2237,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) @@ -2269,7 +2269,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