From 852c25eda2e5dab087370823a64fb37eca492794 Mon Sep 17 00:00:00 2001 From: Kip Macy Date: Fri, 26 Sep 2008 05:54:24 +0000 Subject: [PATCH] move ipi_pcpu to evtchn.c --- sys/i386/include/xen/evtchn.h | 1 + sys/i386/xen/mp_machdep.c | 12 +----------- sys/xen/evtchn/evtchn.c | 22 +++++++++++++++------- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/sys/i386/include/xen/evtchn.h b/sys/i386/include/xen/evtchn.h index 1124105573b8..92ee578601e7 100644 --- a/sys/i386/include/xen/evtchn.h +++ b/sys/i386/include/xen/evtchn.h @@ -59,6 +59,7 @@ notify_remote_via_evtchn(int port) */ int irq_to_evtchn_port(int irq); +void ipi_pcpu(unsigned int cpu, int vector); /* * CHARACTER-DEVICE DEFINITIONS diff --git a/sys/i386/xen/mp_machdep.c b/sys/i386/xen/mp_machdep.c index 651d14d3e6dc..c1af917a8a1f 100644 --- a/sys/i386/xen/mp_machdep.c +++ b/sys/i386/xen/mp_machdep.c @@ -85,6 +85,7 @@ __FBSDID("$FreeBSD$"); #include +#include #include #include @@ -906,17 +907,6 @@ smp_masked_invlpg_range(u_int mask, vm_offset_t addr1, vm_offset_t addr2) } } -static __inline void -ipi_pcpu(unsigned int cpu, int vector) -{ -#ifdef notyet - int irq = per_cpu(ipi_to_irq, cpu)[vector]; - - notify_remote_via_irq(irq); -#endif -} - - void ipi_bitmap_handler(struct trapframe frame) { diff --git a/sys/xen/evtchn/evtchn.c b/sys/xen/evtchn/evtchn.c index de3cf0c05628..53b41accb427 100644 --- a/sys/xen/evtchn/evtchn.c +++ b/sys/xen/evtchn/evtchn.c @@ -112,14 +112,14 @@ enum { #define index_from_irq(irq) ((uint8_t)(irq_info[irq] >> 16)) #define type_from_irq(irq) ((uint8_t)(irq_info[irq] >> 24)) -/* IRQ <-> VIRQ mapping. */ -DEFINE_PER_CPU(int, virq_to_irq[NR_VIRQS]); - -/* IRQ <-> IPI mapping. */ -#ifndef NR_IPIS +/* IRQ <-> VIRQ mapping. */ +DEFINE_PER_CPU(int, virq_to_irq[NR_VIRQS]) = {[0 ... NR_VIRQS-1] = -1}; + +/* IRQ <-> IPI mapping. */ +#ifndef NR_IPIS #define NR_IPIS 1 -#endif -DEFINE_PER_CPU(int, ipi_to_irq[NR_IPIS]); +#endif +DEFINE_PER_CPU(int, ipi_to_irq[NR_IPIS]) = {[0 ... NR_IPIS-1] = -1}; /* Bitmap indicating which PIRQs require Xen to be notified on unmask. */ static unsigned long pirq_needs_unmask_notify[NR_PIRQS/sizeof(unsigned long)]; @@ -219,6 +219,14 @@ evtchn_do_upcall(struct trapframe *frame) } } +void +ipi_pcpu(unsigned int cpu, int vector) +{ + int irq = per_cpu(ipi_to_irq, cpu)[vector]; + + notify_remote_via_irq(irq); +} + static int find_unbound_irq(void) {