Author: nwhitehorn
Date: Sat Jun  5 16:21:55 2010
New Revision: 208835
URL: http://svn.freebsd.org/changeset/base/208835

Log:
  Make sure that interrupt sense settings set after interrupts are enabled
  are respected. This fixes loading the Apple onboard audio driver
  (snd_ai2s) as a module after boot, which would previously cause a panic.
  
  PR:           powerpc/146888
  MFC after:    5 days

Modified:
  head/sys/powerpc/powerpc/intr_machdep.c

Modified: head/sys/powerpc/powerpc/intr_machdep.c
==============================================================================
--- head/sys/powerpc/powerpc/intr_machdep.c     Sat Jun  5 16:00:53 2010        
(r208834)
+++ head/sys/powerpc/powerpc/intr_machdep.c     Sat Jun  5 16:21:55 2010        
(r208835)
@@ -164,6 +164,7 @@ intr_lookup(u_int irq)
        i->trig = INTR_TRIGGER_CONFORM;
        i->pol = INTR_POLARITY_CONFORM;
        i->irq = irq;
+       i->pic = NULL;
        i->vector = -1;
 
        mtx_lock(&intr_table_lock);
@@ -325,6 +326,11 @@ powerpc_setup_intr(const char *name, u_i
 
        if (!cold) {
                error = powerpc_map_irq(i);
+
+               if (!error && (i->trig != INTR_TRIGGER_CONFORM ||
+                   i->pol != INTR_POLARITY_CONFORM))
+                       PIC_CONFIG(i->pic, i->intline, i->trig, i->pol);
+
                if (!error && enable)
                        PIC_ENABLE(i->pic, i->intline, i->vector);
        }
@@ -350,7 +356,7 @@ powerpc_config_intr(int irq, enum intr_t
        i->trig = trig;
        i->pol = pol;
 
-       if (!cold)
+       if (!cold && i->pic != NULL)
                PIC_CONFIG(i->pic, i->intline, trig, pol);
 
        return (0);
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to