PERFORCE change 98153 for review
Kip Macy
kmacy at FreeBSD.org
Tue May 30 12:28:48 PDT 2006
http://perforce.freebsd.org/chv.cgi?CH=98153
Change 98153 by kmacy at kmacy_storage:sun4v_work on 2006/05/30 19:25:49
for fast interrupts call fast interrupt handler directly
if there are no collisions on a vector
Affected files ...
.. //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/intr_machdep.c#8 edit
Differences ...
==== //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/intr_machdep.c#8 (text+ko) ====
@@ -205,9 +205,15 @@
ps = intr_disable();
if (vec != -1) {
- intr_vectors[vec].iv_func = ivf;
- intr_vectors[vec].iv_arg = iva;
- intr_vectors[vec].iv_pri = pri;
+ if ((char *)intr_vectors[vec].iv_func == (char *)intr_stray_level) {
+ intr_vectors[vec].iv_func = ivf;
+ intr_vectors[vec].iv_arg = iva;
+ } else {
+ intr_vectors[vec].iv_func = intr_execute_handlers;
+ intr_vectors[vec].iv_arg = &intr_vectors[vec];
+ }
+ if (pri > intr_vectors[vec].iv_pri)
+ intr_vectors[vec].iv_pri = pri;
intr_vectors[vec].iv_vec = vec;
}
snprintf(pilname, MAXCOMLEN + 1, "pil%d: %s", pri, pil_names[pri]);
@@ -315,8 +321,9 @@
struct intr_vector *iv;
struct intr_event *ie; /* descriptor for the IRQ */
struct intr_event *orphan;
- int errcode;
-
+ int errcode, pil;
+ iv_func_t *ivf;
+ void *iva;
/*
* Work around a race where more than one CPU may be registering
* handlers on the same IRQ at the same time.
@@ -347,8 +354,11 @@
if (errcode)
return (errcode);
- intr_setup(flags & INTR_FAST ? PIL_FAST : PIL_ITHREAD, intr_fast, vec,
- intr_execute_handlers, iv);
+ pil = (flags & INTR_FAST) ? PIL_FAST : PIL_ITHREAD;
+ ivf = (flags & INTR_FAST) ? handler : intr_execute_handlers;
+ iva = (flags & INTR_FAST) ? arg : iv;
+
+ intr_setup(pil, intr_fast, vec, ivf, iva);
intr_stray_count[vec] = 0;
More information about the p4-projects
mailing list