Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 Jun 2010 19:11:01 +0000 (UTC)
From:      Nathan Whitehorn <nwhitehorn@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject:   svn commit: r208996 - stable/8/sys/powerpc/powerpc
Message-ID:  <201006101911.o5AJB1ak038919@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: nwhitehorn
Date: Thu Jun 10 19:11:00 2010
New Revision: 208996
URL: http://svn.freebsd.org/changeset/base/208996

Log:
  MFC r208835:
  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
  Approved by:	re (kensmith)

Modified:
  stable/8/sys/powerpc/powerpc/intr_machdep.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)
  stable/8/sys/geom/sched/   (props changed)

Modified: stable/8/sys/powerpc/powerpc/intr_machdep.c
==============================================================================
--- stable/8/sys/powerpc/powerpc/intr_machdep.c	Thu Jun 10 18:04:25 2010	(r208995)
+++ stable/8/sys/powerpc/powerpc/intr_machdep.c	Thu Jun 10 19:11:00 2010	(r208996)
@@ -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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201006101911.o5AJB1ak038919>