diff options
author | Yinghai Lu <yinghai@kernel.org> | 2009-04-27 20:59:21 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-04-28 06:21:16 -0400 |
commit | d5dedd4507d307eb3f35f21b6e16f336fdc0d82a (patch) | |
tree | 2c31b00395bde49ec4c5a415b081daaec44d3dab /drivers/xen | |
parent | fcef5911c7ea89b80d5bfc727f402f37c9eefd57 (diff) |
irq: change ->set_affinity() to return status
according to Ingo, change set_affinity() in irq_chip should return int,
because that way we can handle failure cases in a much cleaner way, in
the genirq layer.
v2: fix two typos
[ Impact: extend API ]
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: linux-arch@vger.kernel.org
LKML-Reference: <49F654E9.4070809@kernel.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers/xen')
-rw-r--r-- | drivers/xen/events.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/xen/events.c b/drivers/xen/events.c index 30963af5dba0..33389880279b 100644 --- a/drivers/xen/events.c +++ b/drivers/xen/events.c | |||
@@ -688,13 +688,13 @@ void rebind_evtchn_irq(int evtchn, int irq) | |||
688 | } | 688 | } |
689 | 689 | ||
690 | /* Rebind an evtchn so that it gets delivered to a specific cpu */ | 690 | /* Rebind an evtchn so that it gets delivered to a specific cpu */ |
691 | static void rebind_irq_to_cpu(unsigned irq, unsigned tcpu) | 691 | static int rebind_irq_to_cpu(unsigned irq, unsigned tcpu) |
692 | { | 692 | { |
693 | struct evtchn_bind_vcpu bind_vcpu; | 693 | struct evtchn_bind_vcpu bind_vcpu; |
694 | int evtchn = evtchn_from_irq(irq); | 694 | int evtchn = evtchn_from_irq(irq); |
695 | 695 | ||
696 | if (!VALID_EVTCHN(evtchn)) | 696 | if (!VALID_EVTCHN(evtchn)) |
697 | return; | 697 | return -1; |
698 | 698 | ||
699 | /* Send future instances of this interrupt to other vcpu. */ | 699 | /* Send future instances of this interrupt to other vcpu. */ |
700 | bind_vcpu.port = evtchn; | 700 | bind_vcpu.port = evtchn; |
@@ -707,13 +707,15 @@ static void rebind_irq_to_cpu(unsigned irq, unsigned tcpu) | |||
707 | */ | 707 | */ |
708 | if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_vcpu, &bind_vcpu) >= 0) | 708 | if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_vcpu, &bind_vcpu) >= 0) |
709 | bind_evtchn_to_cpu(evtchn, tcpu); | 709 | bind_evtchn_to_cpu(evtchn, tcpu); |
710 | } | ||
711 | 710 | ||
711 | return 0; | ||
712 | } | ||
712 | 713 | ||
713 | static void set_affinity_irq(unsigned irq, const struct cpumask *dest) | 714 | static int set_affinity_irq(unsigned irq, const struct cpumask *dest) |
714 | { | 715 | { |
715 | unsigned tcpu = cpumask_first(dest); | 716 | unsigned tcpu = cpumask_first(dest); |
716 | rebind_irq_to_cpu(irq, tcpu); | 717 | |
718 | return rebind_irq_to_cpu(irq, tcpu); | ||
717 | } | 719 | } |
718 | 720 | ||
719 | int resend_irq_on_evtchn(unsigned int irq) | 721 | int resend_irq_on_evtchn(unsigned int irq) |