From owner-svn-src-head@FreeBSD.ORG Sun Jan 25 17:50:53 2009 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9CE07106566B; Sun, 25 Jan 2009 17:50:53 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8AC148FC22; Sun, 25 Jan 2009 17:50:53 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n0PHorU3023772; Sun, 25 Jan 2009 17:50:53 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n0PHorku023771; Sun, 25 Jan 2009 17:50:53 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <200901251750.n0PHorku023771@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 25 Jan 2009 17:50:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r187691 - head/sys/powerpc/powerpc X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jan 2009 17:50:55 -0000 Author: nwhitehorn Date: Sun Jan 25 17:50:53 2009 New Revision: 187691 URL: http://svn.freebsd.org/changeset/base/187691 Log: Fix a race condition where interrupts set up after boot could be enabled in the PIC before the interrupt handler was set. If the interrupt triggered in that window, then the interrupt vector would be disabled. Reported by: Marco Trillo Modified: head/sys/powerpc/powerpc/intr_machdep.c Modified: head/sys/powerpc/powerpc/intr_machdep.c ============================================================================== --- head/sys/powerpc/powerpc/intr_machdep.c Sun Jan 25 16:59:29 2009 (r187690) +++ head/sys/powerpc/powerpc/intr_machdep.c Sun Jan 25 17:50:53 2009 (r187691) @@ -243,7 +243,7 @@ powerpc_setup_intr(const char *name, u_i driver_intr_t handler, void *arg, enum intr_type flags, void **cookiep) { struct powerpc_intr *i; - int error; + int error, enable = 0; i = intr_lookup(irq); if (i == NULL) @@ -258,13 +258,16 @@ powerpc_setup_intr(const char *name, u_i i->cntp = &intrcnt[i->vector]; - if (!cold) - PIC_ENABLE(pic, i->irq, i->vector); + enable = 1; } error = intr_event_add_handler(i->event, name, filter, handler, arg, intr_priority(flags), flags, cookiep); intrcnt_setname(i->event->ie_fullname, i->vector); + + if (!cold && enable) + PIC_ENABLE(pic, i->irq, i->vector); + return (error); }