|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] VT-d: fold iommu_flush_iotlb{,_pages}()
commit 59fbdf8a3667ce42c1cf70c94c3bcd0451afd4d8
Author: Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Thu Jun 9 10:56:08 2022 +0200
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Thu Jun 9 10:56:08 2022 +0200
VT-d: fold iommu_flush_iotlb{,_pages}()
With iommu_flush_iotlb_all() gone, iommu_flush_iotlb_pages() is merely a
wrapper around the not otherwise called iommu_flush_iotlb(). Fold both
functions.
No functional change intended.
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
Reviewed-by: Kevin Tian <kevin.tian@xxxxxxxxx>
Reviewed-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
---
xen/drivers/passthrough/vtd/iommu.c | 40 +++++++++++++++----------------------
1 file changed, 16 insertions(+), 24 deletions(-)
diff --git a/xen/drivers/passthrough/vtd/iommu.c
b/xen/drivers/passthrough/vtd/iommu.c
index 2acacc3679..f1e91b3d18 100644
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -719,9 +719,9 @@ static int __must_check iommu_flush_all(void)
return rc;
}
-static int __must_check iommu_flush_iotlb(struct domain *d, dfn_t dfn,
- bool_t dma_old_pte_present,
- unsigned long page_count)
+static int __must_check cf_check iommu_flush_iotlb(struct domain *d, dfn_t dfn,
+ unsigned long page_count,
+ unsigned int flush_flags)
{
struct domain_iommu *hd = dom_iommu(d);
struct acpi_drhd_unit *drhd;
@@ -730,6 +730,17 @@ static int __must_check iommu_flush_iotlb(struct domain
*d, dfn_t dfn,
int iommu_domid;
int ret = 0;
+ if ( flush_flags & IOMMU_FLUSHF_all )
+ {
+ dfn = INVALID_DFN;
+ page_count = 0;
+ }
+ else
+ {
+ ASSERT(page_count && !dfn_eq(dfn, INVALID_DFN));
+ ASSERT(flush_flags);
+ }
+
/*
* No need pcideves_lock here because we have flush
* when assign/deassign device
@@ -756,7 +767,7 @@ static int __must_check iommu_flush_iotlb(struct domain *d,
dfn_t dfn,
rc = iommu_flush_iotlb_psi(iommu, iommu_domid,
dfn_to_daddr(dfn),
get_order_from_pages(page_count),
- !dma_old_pte_present,
+ !(flush_flags & IOMMU_FLUSHF_modified),
flush_dev_iotlb);
if ( rc > 0 )
@@ -768,25 +779,6 @@ static int __must_check iommu_flush_iotlb(struct domain
*d, dfn_t dfn,
return ret;
}
-static int __must_check cf_check iommu_flush_iotlb_pages(
- struct domain *d, dfn_t dfn, unsigned long page_count,
- unsigned int flush_flags)
-{
- if ( flush_flags & IOMMU_FLUSHF_all )
- {
- dfn = INVALID_DFN;
- page_count = 0;
- }
- else
- {
- ASSERT(page_count && !dfn_eq(dfn, INVALID_DFN));
- ASSERT(flush_flags);
- }
-
- return iommu_flush_iotlb(d, dfn, flush_flags & IOMMU_FLUSHF_modified,
- page_count);
-}
-
/* clear one page's page table */
static int dma_pte_clear_one(struct domain *domain, daddr_t addr,
unsigned int order,
@@ -3147,7 +3139,7 @@ static const struct iommu_ops __initconst_cf_clobber
vtd_ops = {
.suspend = vtd_suspend,
.resume = vtd_resume,
.crash_shutdown = vtd_crash_shutdown,
- .iotlb_flush = iommu_flush_iotlb_pages,
+ .iotlb_flush = iommu_flush_iotlb,
.get_reserved_device_memory = intel_iommu_get_reserved_device_memory,
.dump_page_tables = vtd_dump_page_tables,
};
--
generated by git-patchbot for /home/xen/git/xen.git#staging
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |