PERFORCE change 98153 for review

Kip Macy kip.macy at gmail.com
Thu Jun 1 17:26:37 PDT 2006


> I'd rather avoid this for now as it will have to be backed out for interrupt
> filters.

I don't know anything about interrupt filters, so please let me know
what you have in mind. The whole of interrupt handling is far too
heavyweight at the moment.


 -Kip

>
> >
> > 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;
> >
> >
>
> --
> John Baldwin
>


More information about the p4-projects mailing list