diff options
author | David Vrabel <david.vrabel@citrix.com> | 2013-03-12 14:28:04 -0400 |
---|---|---|
committer | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2014-01-06 10:07:32 -0500 |
commit | 872951850666689e931e567ebdc7c483135d14cf (patch) | |
tree | 679aacb5e91a459456e9190b17db9be395538e95 | |
parent | b7ef4a6dd35d1b47db72fbd1a31c8fd0da7a74f3 (diff) |
xen/events: refactor retrigger_dynirq() and resend_irq_on_evtchn()
These two function did the same thing with different parameters, put
the common bits in retrigger_evtchn().
This changes the return value of resend_irq_on_evtchn() but the only
caller (in arch/ia64/xen/irq_xen.c) ignored the return value so this
is fine.
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
-rw-r--r-- | drivers/xen/events.c | 27 |
1 files changed, 9 insertions, 18 deletions
diff --git a/drivers/xen/events.c b/drivers/xen/events.c index 4035e833ea26..ddcdbb508dab 100644 --- a/drivers/xen/events.c +++ b/drivers/xen/events.c | |||
@@ -1558,13 +1558,13 @@ static int set_affinity_irq(struct irq_data *data, const struct cpumask *dest, | |||
1558 | return rebind_irq_to_cpu(data->irq, tcpu); | 1558 | return rebind_irq_to_cpu(data->irq, tcpu); |
1559 | } | 1559 | } |
1560 | 1560 | ||
1561 | int resend_irq_on_evtchn(unsigned int irq) | 1561 | static int retrigger_evtchn(int evtchn) |
1562 | { | 1562 | { |
1563 | int masked, evtchn = evtchn_from_irq(irq); | 1563 | int masked; |
1564 | struct shared_info *s = HYPERVISOR_shared_info; | 1564 | struct shared_info *s = HYPERVISOR_shared_info; |
1565 | 1565 | ||
1566 | if (!VALID_EVTCHN(evtchn)) | 1566 | if (!VALID_EVTCHN(evtchn)) |
1567 | return 1; | 1567 | return 0; |
1568 | 1568 | ||
1569 | masked = sync_test_and_set_bit(evtchn, BM(s->evtchn_mask)); | 1569 | masked = sync_test_and_set_bit(evtchn, BM(s->evtchn_mask)); |
1570 | sync_set_bit(evtchn, BM(s->evtchn_pending)); | 1570 | sync_set_bit(evtchn, BM(s->evtchn_pending)); |
@@ -1574,6 +1574,11 @@ int resend_irq_on_evtchn(unsigned int irq) | |||
1574 | return 1; | 1574 | return 1; |
1575 | } | 1575 | } |
1576 | 1576 | ||
1577 | int resend_irq_on_evtchn(unsigned int irq) | ||
1578 | { | ||
1579 | return retrigger_evtchn(evtchn_from_irq(irq)); | ||
1580 | } | ||
1581 | |||
1577 | static void enable_dynirq(struct irq_data *data) | 1582 | static void enable_dynirq(struct irq_data *data) |
1578 | { | 1583 | { |
1579 | int evtchn = evtchn_from_irq(data->irq); | 1584 | int evtchn = evtchn_from_irq(data->irq); |
@@ -1608,21 +1613,7 @@ static void mask_ack_dynirq(struct irq_data *data) | |||
1608 | 1613 | ||
1609 | static int retrigger_dynirq(struct irq_data *data) | 1614 | static int retrigger_dynirq(struct irq_data *data) |
1610 | { | 1615 | { |
1611 | int evtchn = evtchn_from_irq(data->irq); | 1616 | return retrigger_evtchn(evtchn_from_irq(data->irq)); |
1612 | struct shared_info *sh = HYPERVISOR_shared_info; | ||
1613 | int ret = 0; | ||
1614 | |||
1615 | if (VALID_EVTCHN(evtchn)) { | ||
1616 | int masked; | ||
1617 | |||
1618 | masked = sync_test_and_set_bit(evtchn, BM(sh->evtchn_mask)); | ||
1619 | sync_set_bit(evtchn, BM(sh->evtchn_pending)); | ||
1620 | if (!masked) | ||
1621 | unmask_evtchn(evtchn); | ||
1622 | ret = 1; | ||
1623 | } | ||
1624 | |||
1625 | return ret; | ||
1626 | } | 1617 | } |
1627 | 1618 | ||
1628 | static void restore_pirqs(void) | 1619 | static void restore_pirqs(void) |