diff options
Diffstat (limited to 'drivers/xen/events')
-rw-r--r-- | drivers/xen/events/events_2l.c | 6 | ||||
-rw-r--r-- | drivers/xen/events/events_base.c | 8 | ||||
-rw-r--r-- | drivers/xen/events/events_fifo.c | 1 |
3 files changed, 8 insertions, 7 deletions
diff --git a/drivers/xen/events/events_2l.c b/drivers/xen/events/events_2l.c index 7dd46312c..bdff01095 100644 --- a/drivers/xen/events/events_2l.c +++ b/drivers/xen/events/events_2l.c @@ -9,7 +9,6 @@ #include <linux/linkage.h> #include <linux/interrupt.h> #include <linux/irq.h> -#include <linux/module.h> #include <asm/sync_bitops.h> #include <asm/xen/hypercall.h> @@ -38,8 +37,9 @@ /* Find the first set bit in a evtchn mask */ #define EVTCHN_FIRST_BIT(w) find_first_bit(BM(&(w)), BITS_PER_EVTCHN_WORD) -static DEFINE_PER_CPU(xen_ulong_t [EVTCHN_2L_NR_CHANNELS/BITS_PER_EVTCHN_WORD], - cpu_evtchn_mask); +#define EVTCHN_MASK_SIZE (EVTCHN_2L_NR_CHANNELS/BITS_PER_EVTCHN_WORD) + +static DEFINE_PER_CPU(xen_ulong_t [EVTCHN_MASK_SIZE], cpu_evtchn_mask); static unsigned evtchn_2l_max_channels(void) { diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c index 44367783f..71d49a95f 100644 --- a/drivers/xen/events/events_base.c +++ b/drivers/xen/events/events_base.c @@ -26,7 +26,7 @@ #include <linux/linkage.h> #include <linux/interrupt.h> #include <linux/irq.h> -#include <linux/module.h> +#include <linux/moduleparam.h> #include <linux/string.h> #include <linux/bootmem.h> #include <linux/slab.h> @@ -487,7 +487,8 @@ static void eoi_pirq(struct irq_data *data) if (!VALID_EVTCHN(evtchn)) return; - if (unlikely(irqd_is_setaffinity_pending(data))) { + if (unlikely(irqd_is_setaffinity_pending(data)) && + likely(!irqd_irq_disabled(data))) { int masked = test_and_set_mask(evtchn); clear_evtchn(evtchn); @@ -1370,7 +1371,8 @@ static void ack_dynirq(struct irq_data *data) if (!VALID_EVTCHN(evtchn)) return; - if (unlikely(irqd_is_setaffinity_pending(data))) { + if (unlikely(irqd_is_setaffinity_pending(data)) && + likely(!irqd_irq_disabled(data))) { int masked = test_and_set_mask(evtchn); clear_evtchn(evtchn); diff --git a/drivers/xen/events/events_fifo.c b/drivers/xen/events/events_fifo.c index eff2b8800..9289a1771 100644 --- a/drivers/xen/events/events_fifo.c +++ b/drivers/xen/events/events_fifo.c @@ -36,7 +36,6 @@ #include <linux/linkage.h> #include <linux/interrupt.h> #include <linux/irq.h> -#include <linux/module.h> #include <linux/smp.h> #include <linux/percpu.h> #include <linux/cpu.h> |