From owner-cvs-src-old@FreeBSD.ORG Sat Oct 31 22:28:26 2009 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 D3B26106568D for ; Sat, 31 Oct 2009 22:28:26 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id C1D588FC15 for ; Sat, 31 Oct 2009 22:28:26 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n9VMSQuK039055 for ; Sat, 31 Oct 2009 22:28:26 GMT (envelope-from marcel@repoman.freebsd.org) Received: (from svn2cvs@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n9VMSQiD039054 for cvs-src-old@freebsd.org; Sat, 31 Oct 2009 22:28:26 GMT (envelope-from marcel@repoman.freebsd.org) Message-Id: <200910312228.n9VMSQiD039054@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: svn2cvs set sender to marcel@repoman.freebsd.org using -f From: Marcel Moolenaar Date: Sat, 31 Oct 2009 22:27:31 +0000 (UTC) To: cvs-src-old@freebsd.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/conf files.ia64 src/sys/ia64/ia64 highfp.c interrupt.c machdep.c trap.c vm_machdep.c src/sys/ia64/include md_var.h proc.h 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: Sat, 31 Oct 2009 22:28:26 -0000 marcel 2009-10-31 22:27:31 UTC FreeBSD src repository Modified files: sys/conf files.ia64 sys/ia64/ia64 interrupt.c machdep.c trap.c vm_machdep.c sys/ia64/include md_var.h proc.h Added files: sys/ia64/ia64 highfp.c Log: SVN rev 198733 on 2009-10-31 22:27:31Z by marcel Reimplement the lazy FP context switching: o Move all code into a single file for easier maintenance. o Use a single global lock to avoid having to handle either multiple locks or race conditions. o Make sure to disable the high FP registers after saving or dropping them. o use msleep() to wait for the other CPU to save the high FP registers. This change fixes the high FP inconsistency panics. A single global lock typically serializes too much, which may be noticable when a lot of threads use the high FP registers, but in that case it's probably better to switch the high FP context synchronuously. Put differently: cpu_switch() should switch the high FP registers if the incoming and outgoing threads both use the high FP registers. Revision Changes Path 1.101 +1 -0 src/sys/conf/files.ia64 1.1 +181 -0 src/sys/ia64/ia64/highfp.c (new) 1.72 +1 -8 src/sys/ia64/ia64/interrupt.c 1.248 +0 -75 src/sys/ia64/ia64/machdep.c 1.131 +3 -59 src/sys/ia64/ia64/trap.c 1.97 +2 -3 src/sys/ia64/ia64/vm_machdep.c 1.30 +2 -0 src/sys/ia64/include/md_var.h 1.16 +0 -1 src/sys/ia64/include/proc.h