[PATCH 2/2] xen: do not implement irq_mask and irq_unmask in xen_percpu_chip

From: stefano.stabellini
Date: Fri May 06 2011 - 07:36:09 EST


From: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>

irq_mask and irq_unmask are not needed by handle_percpu_irq, but
they are called by fixup_irqs when changing affinity.
At the moment calling fixup_irqs can result in unmasking an interrupt
that was previously masked because of the call to irq_unmask.
However xen_percpu_chip doesn't even support irq_set_affinity, and we
don't need irq_mask and irq_unmask, so we can just change them to noops,
following the example of uv_irq_chip.

Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
---
drivers/xen/events.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/xen/events.c b/drivers/xen/events.c
index bb59651..8eb5316 100644
--- a/drivers/xen/events.c
+++ b/drivers/xen/events.c
@@ -120,6 +120,7 @@ static struct irq_chip xen_percpu_chip;
static struct irq_chip xen_pirq_chip;
static void enable_dynirq(struct irq_data *data);
static void disable_dynirq(struct irq_data *data);
+static void evtchn_noop(struct irq_data *data) { }

/* Get info for IRQ */
static struct irq_info *info_for_irq(unsigned irq)
@@ -1595,9 +1596,10 @@ static struct irq_chip xen_pirq_chip __read_mostly = {
static struct irq_chip xen_percpu_chip __read_mostly = {
.name = "xen-percpu",

+ .irq_enable = enable_dynirq,
.irq_disable = disable_dynirq,
- .irq_mask = disable_dynirq,
- .irq_unmask = enable_dynirq,
+ .irq_mask = evtchn_noop,
+ .irq_unmask = evtchn_noop,

.irq_ack = ack_dynirq,
};
--
1.7.2.3

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/