Don't do this once per IOMMU, nor after setting up the IOMMU interrupt (which will want to schedule this tasklet). In fact it can be initialized at build time.
Signed-off-by: Jan Beulich <[email protected]> --- a/xen/drivers/passthrough/amd/iommu_init.c +++ b/xen/drivers/passthrough/amd/iommu_init.c @@ -31,7 +31,8 @@ static int __initdata nr_amd_iommus; -static struct tasklet amd_iommu_irq_tasklet; +static void do_amd_iommu_irq(unsigned long data); +static DECLARE_SOFTIRQ_TASKLET(amd_iommu_irq_tasklet, do_amd_iommu_irq, 0); unsigned int __read_mostly ivrs_bdf_entries; u8 __read_mostly ivhd_type; @@ -1056,8 +1057,6 @@ static int __init amd_iommu_init_one(str printk("AMD-Vi: IOMMU %d Enabled.\n", nr_amd_iommus ); nr_amd_iommus++; - softirq_tasklet_init(&amd_iommu_irq_tasklet, do_amd_iommu_irq, 0); - return 0; error_out: _______________________________________________ Xen-devel mailing list [email protected] https://lists.xenproject.org/mailman/listinfo/xen-devel
