mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
IOMMU: page table dumping adjustments
For one none of the three IOMMU implementations on Arm specify a dumping hook. Generalize VT-d's "don't dump shared page tables" to cover for this. Further in the past I was told that on Arm in principle there could be multiple different IOMMUs, and hence different domains' platform_ops pointers could differ. Use each domain's ops for calling the dump hook. (In the long run all uses of iommu_get_ops() would likely need to disappear for this reason.) Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Kevin Tian <kevin.tian@intel.com>
This commit is contained in:
1 parent
3e910b648b
commit
fd7e0b14a8
2 files changed
+7
-10
No files matched your search
@@ -587,12 +587,9 @@ bool_t iommu_has_feature(struct domain *d, enum iommu_feature feature)
|
||||
static void iommu_dump_page_tables(unsigned char key)
|
||||
{
|
||||
struct domain *d;
|
||||
const struct iommu_ops *ops;
|
||||
|
||||
ASSERT(iommu_enabled);
|
||||
|
||||
ops = iommu_get_ops();
|
||||
|
||||
rcu_read_lock(&domlist_read_lock);
|
||||
|
||||
for_each_domain(d)
|
||||
@@ -600,7 +597,13 @@ static void iommu_dump_page_tables(unsigned char key)
|
||||
if ( is_hardware_domain(d) || !is_iommu_enabled(d) )
|
||||
continue;
|
||||
|
||||
ops->dump_page_tables(d);
|
||||
if ( iommu_use_hap_pt(d) )
|
||||
{
|
||||
printk("%pd sharing page tables\n", d);
|
||||
continue;
|
||||
}
|
||||
|
||||
dom_iommu(d)->platform_ops->dump_page_tables(d);
|
||||
}
|
||||
|
||||
rcu_read_unlock(&domlist_read_lock);
|
||||
|
||||
@@ -2668,12 +2668,6 @@ static void vtd_dump_page_tables(struct domain *d)
|
||||
{
|
||||
const struct domain_iommu *hd = dom_iommu(d);
|
||||
|
||||
if ( iommu_use_hap_pt(d) )
|
||||
{
|
||||
printk(VTDPREFIX " %pd sharing EPT table\n", d);
|
||||
return;
|
||||
}
|
||||
|
||||
printk(VTDPREFIX" %pd table has %d levels\n", d,
|
||||
agaw_to_level(hd->arch.vtd.agaw));
|
||||
vtd_dump_page_table_level(hd->arch.vtd.pgd_maddr,
|
||||
|
||||