mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
iommu: remove unused iommu_ops method and tasklet
The VT-d and AMD IOMMU implementations both use the general x86 IOMMU page table allocator and ARM always shares page tables with CPU. Hence there is no need to retain the free_page_table() method or the tasklet which invokes it. Signed-off-by: Paul Durrant <pdurrant@amazon.com> Reviewed-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
3eef6d07d7
commit
b5622eb627
2 files changed
-27
No files matched your search
@@ -49,10 +49,6 @@ bool_t __read_mostly amd_iommu_perdev_intremap = 1;
|
|||||||
|
|
||||||
DEFINE_PER_CPU(bool_t, iommu_dont_flush_iotlb);
|
DEFINE_PER_CPU(bool_t, iommu_dont_flush_iotlb);
|
||||||
|
|
||||||
DEFINE_SPINLOCK(iommu_pt_cleanup_lock);
|
|
||||||
PAGE_LIST_HEAD(iommu_pt_cleanup_list);
|
|
||||||
static struct tasklet iommu_pt_cleanup_tasklet;
|
|
||||||
|
|
||||||
static int __init parse_iommu_param(const char *s)
|
static int __init parse_iommu_param(const char *s)
|
||||||
{
|
{
|
||||||
const char *ss;
|
const char *ss;
|
||||||
@@ -226,9 +222,6 @@ static void iommu_teardown(struct domain *d)
|
|||||||
struct domain_iommu *hd = dom_iommu(d);
|
struct domain_iommu *hd = dom_iommu(d);
|
||||||
|
|
||||||
iommu_vcall(hd->platform_ops, teardown, d);
|
iommu_vcall(hd->platform_ops, teardown, d);
|
||||||
|
|
||||||
if ( hd->platform_ops->free_page_table )
|
|
||||||
tasklet_schedule(&iommu_pt_cleanup_tasklet);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void iommu_domain_destroy(struct domain *d)
|
void iommu_domain_destroy(struct domain *d)
|
||||||
@@ -368,23 +361,6 @@ int iommu_lookup_page(struct domain *d, dfn_t dfn, mfn_t *mfn,
|
|||||||
return iommu_call(hd->platform_ops, lookup_page, d, dfn, mfn, flags);
|
return iommu_call(hd->platform_ops, lookup_page, d, dfn, mfn, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void iommu_free_pagetables(void *unused)
|
|
||||||
{
|
|
||||||
do {
|
|
||||||
struct page_info *pg;
|
|
||||||
|
|
||||||
spin_lock(&iommu_pt_cleanup_lock);
|
|
||||||
pg = page_list_remove_head(&iommu_pt_cleanup_list);
|
|
||||||
spin_unlock(&iommu_pt_cleanup_lock);
|
|
||||||
if ( !pg )
|
|
||||||
return;
|
|
||||||
iommu_vcall(iommu_get_ops(), free_page_table, pg);
|
|
||||||
} while ( !softirq_pending(smp_processor_id()) );
|
|
||||||
|
|
||||||
tasklet_schedule_on_cpu(&iommu_pt_cleanup_tasklet,
|
|
||||||
cpumask_cycle(smp_processor_id(), &cpu_online_map));
|
|
||||||
}
|
|
||||||
|
|
||||||
int iommu_iotlb_flush(struct domain *d, dfn_t dfn, unsigned int page_count,
|
int iommu_iotlb_flush(struct domain *d, dfn_t dfn, unsigned int page_count,
|
||||||
unsigned int flush_flags)
|
unsigned int flush_flags)
|
||||||
{
|
{
|
||||||
@@ -508,7 +484,6 @@ int __init iommu_setup(void)
|
|||||||
#ifndef iommu_intremap
|
#ifndef iommu_intremap
|
||||||
printk("Interrupt remapping %sabled\n", iommu_intremap ? "en" : "dis");
|
printk("Interrupt remapping %sabled\n", iommu_intremap ? "en" : "dis");
|
||||||
#endif
|
#endif
|
||||||
tasklet_init(&iommu_pt_cleanup_tasklet, iommu_free_pagetables, NULL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
|
|||||||
@@ -263,8 +263,6 @@ struct iommu_ops {
|
|||||||
int __must_check (*lookup_page)(struct domain *d, dfn_t dfn, mfn_t *mfn,
|
int __must_check (*lookup_page)(struct domain *d, dfn_t dfn, mfn_t *mfn,
|
||||||
unsigned int *flags);
|
unsigned int *flags);
|
||||||
|
|
||||||
void (*free_page_table)(struct page_info *);
|
|
||||||
|
|
||||||
#ifdef CONFIG_X86
|
#ifdef CONFIG_X86
|
||||||
int (*enable_x2apic)(void);
|
int (*enable_x2apic)(void);
|
||||||
void (*disable_x2apic)(void);
|
void (*disable_x2apic)(void);
|
||||||
|
|||||||