From owner-cvs-all@FreeBSD.ORG Tue Mar 23 14:28:17 2004 Return-Path: Delivered-To: cvs-all@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 4C09416A4CE; Tue, 23 Mar 2004 14:28:17 -0800 (PST) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 4710F43D2D; Tue, 23 Mar 2004 14:28:17 -0800 (PST) (envelope-from jhb@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.10/8.12.10) with ESMTP id i2NMSHGe042821; Tue, 23 Mar 2004 14:28:17 -0800 (PST) (envelope-from jhb@repoman.freebsd.org) Received: (from jhb@localhost) by repoman.freebsd.org (8.12.10/8.12.10/Submit) id i2NMSHb2042820; Tue, 23 Mar 2004 14:28:17 -0800 (PST) (envelope-from jhb) Message-Id: <200403232228.i2NMSHb2042820@repoman.freebsd.org> From: John Baldwin Date: Tue, 23 Mar 2004 14:28:16 -0800 (PST) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/alpha/alpha interrupt.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Mar 2004 22:28:17 -0000 jhb 2004/03/23 14:28:16 PST FreeBSD src repository Modified files: sys/alpha/alpha interrupt.c Log: Enable interrupt preemption on Alpha. Previously, flipping this switch on caused hangs on SMP systems under load. My theory was that an interrupted thread was migrating and returning to PAL on a different CPU and that that caused the hangs. To prevent this, I used the recently added sched_pin() API to pin the interrupted thread to the CPU that received the interrupt across ithread_schedule() to prevent migration. This seems to have fixed the hangs based on tests by several folks on the alpha@ list. Tested by: wilko, tisco, several others on alpha@ Revision Changes Path 1.77 +10 -1 src/sys/alpha/alpha/interrupt.c