From: Jeremy Fitzhardinge Date: Wed, 22 Sep 2010 22:28:52 +0000 (-0700) Subject: xen: set up IRQ before binding virq to evtchn X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=a52521f149c42b35a28423ee30be9a7afa51dfbf;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git xen: set up IRQ before binding virq to evtchn Make sure the irq is set up before binding a virq event channel to it. Signed-off-by: Jeremy Fitzhardinge --- diff --git a/drivers/xen/events.c b/drivers/xen/events.c index b4e73011a80e..a3362479cfcf 100644 --- a/drivers/xen/events.c +++ b/drivers/xen/events.c @@ -436,6 +436,11 @@ static int bind_virq_to_irq(unsigned int virq, unsigned int cpu) irq = per_cpu(virq_to_irq, cpu)[virq]; if (irq == -1) { + irq = find_unbound_irq(); + + set_irq_chip_and_handler_name(irq, &xen_percpu_chip, + handle_percpu_irq, "virq"); + bind_virq.virq = virq; bind_virq.vcpu = cpu; if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_virq, @@ -443,11 +448,6 @@ static int bind_virq_to_irq(unsigned int virq, unsigned int cpu) BUG(); evtchn = bind_virq.port; - irq = find_unbound_irq(); - - set_irq_chip_and_handler_name(irq, &xen_percpu_chip, - handle_percpu_irq, "virq"); - evtchn_to_irq[evtchn] = irq; irq_info[irq] = mk_virq_info(evtchn, virq);