From: Jan Beulich Date: Fri, 21 Jun 2019 15:16:52 +0000 (+0200) Subject: AMD/IOMMU: initialize IRQ tasklet only once X-Git-Tag: archive/raspbian/4.14.0+80-gd101b417b7-1+rpi1^2~63^2~2002 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=587c39e552fbbdfa4ca64c703ad9df7191a76e8e;p=xen.git AMD/IOMMU: initialize IRQ tasklet only once 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 Acked-by: Andrew Cooper Acked-by: Brian Woods --- diff --git a/xen/drivers/passthrough/amd/iommu_init.c b/xen/drivers/passthrough/amd/iommu_init.c index 72ea8824b0..5913277e52 100644 --- 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(struct amd_iommu *iommu) 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: