From owner-cvs-src-old@FreeBSD.ORG Fri Aug 27 19:54:09 2010 Return-Path: Delivered-To: cvs-src-old@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E0E821065781 for ; Fri, 27 Aug 2010 19:54:09 +0000 (UTC) (envelope-from jchandra@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id CD1538FC14 for ; Fri, 27 Aug 2010 19:54:09 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.4/8.14.4) with ESMTP id o7RJs9iC041303 for ; Fri, 27 Aug 2010 19:54:09 GMT (envelope-from jchandra@repoman.freebsd.org) Received: (from svn2cvs@localhost) by repoman.freebsd.org (8.14.4/8.14.4/Submit) id o7RJs9Yd041302 for cvs-src-old@freebsd.org; Fri, 27 Aug 2010 19:54:09 GMT (envelope-from jchandra@repoman.freebsd.org) Message-Id: <201008271954.o7RJs9Yd041302@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: svn2cvs set sender to jchandra@repoman.freebsd.org using -f From: "Jayachandran C." Date: Fri, 27 Aug 2010 19:53:57 +0000 (UTC) To: cvs-src-old@freebsd.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/mips/rmi interrupt.h intr_machdep.c iodi.c pic.h xlr_machdep.c xlr_pci.c X-BeenThere: cvs-src-old@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: **OBSOLETE** CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Aug 2010 19:54:10 -0000 jchandra 2010-08-27 19:53:57 UTC FreeBSD src repository Modified files: sys/mips/rmi interrupt.h intr_machdep.c iodi.c pic.h xlr_machdep.c xlr_pci.c Log: SVN rev 211893 on 2010-08-27 19:53:57Z by jchandra Revamp XLR interrupt handling, the previous scheme does not work well on SMP. We used to route all PIC based interrupts to cpu 0, and used the per-CPU interrupt mask to enable/disable interrupts. But the interrupt threads can run on any cpu on SMP, and the interrupt thread will re-enable the interrupts on the CPU it runs on when it is done, and not on cpu0 where the PIC will still send interrupts to. The fix is move the disable/enable for PIC based interrupts to PIC, we will ack on PIC only when the interrupt thread is done, and we do not use the per-CPU interrupt mask. The changes also introduce a way for subsystems to add a function that will be called to clear the interrupt on the subsystem. Currently This is used by the PCI/PCIe for doing additional work during the interrupt handling. Revision Changes Path 1.4 +4 -5 src/sys/mips/rmi/interrupt.h 1.8 +81 -49 src/sys/mips/rmi/intr_machdep.c 1.8 +3 -3 src/sys/mips/rmi/iodi.c 1.9 +10 -39 src/sys/mips/rmi/pic.h 1.18 +4 -4 src/sys/mips/rmi/xlr_machdep.c 1.7 +8 -29 src/sys/mips/rmi/xlr_pci.c