svn commit: r195002 - in head/sys: amd64/amd64 amd64/include
i386/i386 i386/include
John Baldwin
jhb at FreeBSD.org
Thu Jun 25 20:35:47 UTC 2009
Author: jhb
Date: Thu Jun 25 20:35:46 2009
New Revision: 195002
URL: http://svn.freebsd.org/changeset/base/195002
Log:
Fix kernels compiled without SMP support. Make intr_next_cpu() available
for UP kernels but as a stub that always returns the single CPU's local
APIC ID.
Reported by: kib
Modified:
head/sys/amd64/amd64/intr_machdep.c
head/sys/amd64/include/intr_machdep.h
head/sys/i386/i386/intr_machdep.c
head/sys/i386/include/intr_machdep.h
Modified: head/sys/amd64/amd64/intr_machdep.c
==============================================================================
--- head/sys/amd64/amd64/intr_machdep.c Thu Jun 25 20:09:53 2009 (r195001)
+++ head/sys/amd64/amd64/intr_machdep.c Thu Jun 25 20:35:46 2009 (r195002)
@@ -518,4 +518,14 @@ intr_shuffle_irqs(void *arg __unused)
}
SYSINIT(intr_shuffle_irqs, SI_SUB_SMP, SI_ORDER_SECOND, intr_shuffle_irqs,
NULL);
+#else
+/*
+ * Always route interrupts to the current processor in the UP case.
+ */
+u_int
+intr_next_cpu(void)
+{
+
+ return (PCPU_GET(apic_id));
+}
#endif
Modified: head/sys/amd64/include/intr_machdep.h
==============================================================================
--- head/sys/amd64/include/intr_machdep.h Thu Jun 25 20:09:53 2009 (r195001)
+++ head/sys/amd64/include/intr_machdep.h Thu Jun 25 20:35:46 2009 (r195002)
@@ -152,9 +152,7 @@ int intr_bind(u_int vector, u_char cpu);
int intr_config_intr(int vector, enum intr_trigger trig,
enum intr_polarity pol);
void intr_execute_handlers(struct intsrc *isrc, struct trapframe *frame);
-#ifdef SMP
u_int intr_next_cpu(void);
-#endif
struct intsrc *intr_lookup_source(int vector);
int intr_register_pic(struct pic *pic);
int intr_register_source(struct intsrc *isrc);
Modified: head/sys/i386/i386/intr_machdep.c
==============================================================================
--- head/sys/i386/i386/intr_machdep.c Thu Jun 25 20:09:53 2009 (r195001)
+++ head/sys/i386/i386/intr_machdep.c Thu Jun 25 20:35:46 2009 (r195002)
@@ -491,4 +491,14 @@ intr_shuffle_irqs(void *arg __unused)
}
SYSINIT(intr_shuffle_irqs, SI_SUB_SMP, SI_ORDER_SECOND, intr_shuffle_irqs,
NULL);
+#else
+/*
+ * Always route interrupts to the current processor in the UP case.
+ */
+u_int
+intr_next_cpu(void)
+{
+
+ return (PCPU_GET(apic_id));
+}
#endif
Modified: head/sys/i386/include/intr_machdep.h
==============================================================================
--- head/sys/i386/include/intr_machdep.h Thu Jun 25 20:09:53 2009 (r195001)
+++ head/sys/i386/include/intr_machdep.h Thu Jun 25 20:35:46 2009 (r195002)
@@ -139,9 +139,7 @@ int intr_bind(u_int vector, u_char cpu);
int intr_config_intr(int vector, enum intr_trigger trig,
enum intr_polarity pol);
void intr_execute_handlers(struct intsrc *isrc, struct trapframe *frame);
-#ifdef SMP
u_int intr_next_cpu(void);
-#endif
struct intsrc *intr_lookup_source(int vector);
int intr_register_pic(struct pic *pic);
int intr_register_source(struct intsrc *isrc);
More information about the svn-src-head
mailing list