Commit ca4dbc668412d5fe039be3e26e8e717a616d1ca5

Authored by Eric W. Biederman
Committed by H. Peter Anvin
1 parent 2b633e3fac

xen: Remove unnecessary arch specific xen irq functions.

Right now xen's use of the x86 and ia64 handle_irq is just bizarre and very
fragile as it is very non-obvious the function exists and is is used by
code out in drivers/....  Luckily using handle_irq is completely unnecessary,
and we can just use the generic irq apis instead.

This still leaves drivers/xen/events.c as a problematic user of the generic
irq apis it has "static struct irq_info irq_info[NR_IRQS]" but that can be
fixed some other time.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
LKML-Reference: <4B7CAAD2.10803@kernel.org>
Acked-by: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Ian Campbell <Ian.Campbell@citrix.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>

Showing 2 changed files with 6 additions and 6 deletions Side-by-side Diff

arch/ia64/include/asm/xen/events.h
... ... @@ -36,10 +36,6 @@
36 36 return !(ia64_psr(regs)->i);
37 37 }
38 38  
39   -static inline void handle_irq(int irq, struct pt_regs *regs)
40   -{
41   - __do_IRQ(irq);
42   -}
43 39 #define irq_ctx_init(cpu) do { } while (0)
44 40  
45 41 #endif /* _ASM_IA64_XEN_EVENTS_H */
drivers/xen/events.c
... ... @@ -649,9 +649,13 @@
649 649 int bit_idx = __ffs(pending_bits);
650 650 int port = (word_idx * BITS_PER_LONG) + bit_idx;
651 651 int irq = evtchn_to_irq[port];
  652 + struct irq_desc *desc;
652 653  
653   - if (irq != -1)
654   - handle_irq(irq, regs);
  654 + if (irq != -1) {
  655 + desc = irq_to_desc(irq);
  656 + if (desc)
  657 + generic_handle_irq_desc(irq, desc);
  658 + }
655 659 }
656 660 }
657 661