PERFORCE change 115531 for review
Paolo Pisati
piso at FreeBSD.org
Thu Mar 8 16:40:59 UTC 2007
http://perforce.freebsd.org/chv.cgi?CH=115531
Change 115531 by piso at piso_newluxor on 2007/03/08 16:40:44
Axe MD interrupt stray code for arm, ia64, ppc, sparc64 and sun4v.
Affected files ...
.. //depot/projects/soc2006/intr_filter/arm/arm/intr.c#21 edit
.. //depot/projects/soc2006/intr_filter/ia64/ia64/interrupt.c#23 edit
.. //depot/projects/soc2006/intr_filter/powerpc/powerpc/intr_machdep.c#29 edit
.. //depot/projects/soc2006/intr_filter/sparc64/sparc64/intr_machdep.c#23 edit
.. //depot/projects/soc2006/intr_filter/sun4v/sun4v/intr_machdep.c#8 edit
Differences ...
==== //depot/projects/soc2006/intr_filter/arm/arm/intr.c#21 (text+ko) ====
@@ -57,11 +57,8 @@
static int intrcnt_index = 0;
static int last_printed = 0;
-extern struct callout stray_callout_handle;
-
void arm_handler_execute(struct trapframe *, int);
-void intr_callout_reset(void);
static void intr_disab_eoi_src(void *arg);
extern struct bus_space i80321_bs_tag;
@@ -108,22 +105,6 @@
{
}
-/* Stray detection MD code */
-static struct intr_event *
-walk_intrs_events(void)
-{
- struct intr_event *ie;
- static int i = 0;
-
- while (i < NIRQ) {
- ie = intr_events[i++];
- if (ie != NULL)
- return (ie);
- }
- i = 0;
- return (NULL);
-}
-
static void
intr_disab_eoi_src(void *arg)
{
@@ -146,13 +127,3 @@
intr_event_handle(event, frame);
}
}
-
-void
-intr_callout_reset(void)
-{
-
- return;
- // XXX missing callout_init_mtx(&stray_callout_handle, ...);
- callout_reset(&stray_callout_handle, hz,
- &stray_detection, &walk_intrs_events);
-}
==== //depot/projects/soc2006/intr_filter/ia64/ia64/interrupt.c#23 (text+ko) ====
@@ -261,10 +261,6 @@
static struct mtx ia64_intrs_lock;
static struct ia64_intr *ia64_intrs[IA64_NUMI];
-extern struct callout stray_callout_handle;
-
-void intr_callout_reset(void);
-
extern struct sapic *ia64_sapics[];
extern int ia64_sapic_count;
@@ -273,7 +269,6 @@
{
mtx_init(&ia64_intrs_lock, "intr table", NULL, MTX_SPIN);
- callout_init(&stray_callout_handle, 1);
}
SYSINIT(ithds_init, SI_SUB_INTR, SI_ORDER_SECOND, ithds_init, NULL);
@@ -356,32 +351,6 @@
return (intr_event_remove_handler(cookie));
}
-/* Stray detection MD code */
-static struct intr_event *
-walk_intr_ia64(void)
-{
- struct ia64_intr *ia64_i;
- static int i = 0;
-
- while (i < IA64_NUMI) {
- mtx_lock_spin(&ia64_intrs_lock);
- ia64_i = ia64_intrs[i++];
- mtx_unlock_spin(&ia64_intrs_lock);
- if (ia64_i != NULL && ia64_i->event != NULL)
- return (ia64_i->event);
- }
- i = 0;
- return (NULL);
-}
-
-void
-intr_callout_reset(void)
-{
-
- callout_reset(&stray_callout_handle, hz,
- &stray_detection, &walk_intr_ia64);
-}
-
static void
intr_eoi_src(void *arg)
{
==== //depot/projects/soc2006/intr_filter/powerpc/powerpc/intr_machdep.c#29 (text+ko) ====
@@ -97,8 +97,6 @@
static void (*irq_enable)(uintptr_t);
static void intr_eoi_src(void *arg);
-extern struct callout stray_callout_handle;
-void intr_callout_reset(void);
static void
intrcnt_setname(const char *name, int index)
@@ -123,7 +121,6 @@
panic("intr_init: unable to allocate interrupt handler array");
mtx_init(&ppc_intrs_lock, "intr table", NULL, MTX_SPIN);
- callout_init(&stray_callout_handle, 1);
irq_enable = irq_e;
@@ -197,64 +194,6 @@
return (intr_event_remove_handler(cookie));
}
-#if 0
-void
-intr_handle_old(u_int irq)
-{
- struct ppc_intr *i;
- struct intr_event *ie;
- struct intr_handler *ih;
- int error, sched;
-
- i = ppc_intrs[irq];
- if (i == NULL)
- goto stray;
-
- atomic_add_long(i->cntp, 1);
-
- ie = i->event;
- KASSERT(ie != NULL, ("%s: interrupt without an event", __func__));
-
- if (TAILQ_EMPTY(&ie->ie_handlers))
- goto stray;
-
- /*
- * Execute all fast interrupt handlers directly without Giant. Note
- * that this means that any fast interrupt handler must be MP safe.
- */
- sched = 0;
- critical_enter();
- TAILQ_FOREACH(ih, &ie->ie_handlers, ih_next) {
- if (ih->ih_filter == NULL) {
- sched = 1;
- continue;
- }
- CTR4(KTR_INTR, "%s: exec %p(%p) for %s", __func__,
- ih->ih_filter, ih->ih_argument, ih->ih_name);
- ih->ih_filter(ih->ih_argument);
- }
- critical_exit();
-
- if (sched) {
- error = intr_event_schedule_thread(ie);
- KASSERT(error == 0, ("%s: impossible stray interrupt",
- __func__));
- } else
- irq_enable(irq);
- return;
-
-stray:
- atomic_add_long(&intrcnt[0], 1);
- if (intrcnt[0] <= MAX_STRAY_LOG) {
- printf("stray irq %d\n", irq);
- if (intrcnt[0] >= MAX_STRAY_LOG) {
- printf("got %d stray interrupts, not logging anymore\n",
- MAX_STRAY_LOG);
- }
- }
-}
-#endif
-
static void
stray_int(u_int irq)
{
@@ -278,31 +217,6 @@
irq_enable(nb);
}
-static struct intr_event *
-walk_intr_ppc(void)
-{
- struct ppc_intr *intr;
- static int i = 0;
-
- while (i < ppc_nintrs) {
- mtx_lock_spin(&ppc_intrs_lock);
- intr = ppc_intrs[i++];
- mtx_unlock_spin(&ppc_intrs_lock);
- if (intr != NULL && intr->event != NULL)
- return (intr->event);
- }
- i = 0;
- return (NULL);
-}
-
-void
-intr_callout_reset(void)
-{
-
- callout_reset(&stray_callout_handle, hz, &stray_detection,
- &walk_intr_ppc);
-}
-
void
intr_handle(u_int irq)
{
==== //depot/projects/soc2006/intr_filter/sparc64/sparc64/intr_machdep.c#23 (text+ko) ====
@@ -105,10 +105,6 @@
/* protect the intr_vectors table */
static struct mtx intr_table_lock;
-extern struct callout stray_callout_handle;
-
-void intr_callout_reset(void);
-
static void intr_execute_handlers(void *);
static void intr_stray_level(struct trapframe *);
static void intr_stray_vector(void *);
@@ -234,31 +230,6 @@
{
mtx_init(&intr_table_lock, "intr table", NULL, MTX_SPIN);
- callout_init(&stray_callout_handle, 1);
-}
-
-/* Stray detection MD code */
-static struct intr_event *
-walk_intr_sparc64(void)
-{
- struct intr_vector *iv;
- static int i = 0;
-
- while (i < IV_MAX) {
- iv = &intr_vectors[i++];
- if (iv != NULL && iv->iv_event != NULL)
- return (iv->iv_event);
- }
- i = 0;
- return (NULL);
-}
-
-void
-intr_callout_reset(void)
-{
-
- callout_reset(&stray_callout_handle, hz,
- &stray_detection, &walk_intr_sparc64);
}
static void
==== //depot/projects/soc2006/intr_filter/sun4v/sun4v/intr_machdep.c#8 (text+ko) ====
@@ -143,9 +143,6 @@
/* protect the intr_vectors table */
static struct mtx intr_table_lock;
-extern struct callout stray_callout_handle;
-void intr_callout_reset(void);
-
static void intr_execute_handlers(void *);
static void intr_stray_level(struct trapframe *);
static void intr_stray_vector(void *);
@@ -153,30 +150,6 @@
static void intrcnt_updatename(int, const char *, int);
static void cpu_intrq_alloc(void);
-/* Stray detection MD code */
-static struct intr_event *
-walk_intr_sun4v(void)
-{
- struct intr_vector *iv;
- static int i = 0;
-
- while (i < IV_MAX) {
- iv = &intr_vectors[i++];
- if (iv != NULL && iv->iv_event != NULL)
- return (iv->iv_event);
- }
- i = 0;
- return (NULL);
-}
-
-void
-intr_callout_reset(void)
-{
-
- callout_reset(&stray_callout_handle, hz,
- &stray_detection, &walk_intr_sun4v);
-}
-
/*
* not MPSAFE
*/
More information about the p4-projects
mailing list