From owner-cvs-all@FreeBSD.ORG Sat Aug 27 16:03:40 2005 Return-Path: X-Original-To: cvs-all@FreeBSD.org 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 97E3716A41F; Sat, 27 Aug 2005 16:03:40 +0000 (GMT) (envelope-from jkoshy@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6846B43D45; Sat, 27 Aug 2005 16:03:40 +0000 (GMT) (envelope-from jkoshy@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id j7RG3eIk062684; Sat, 27 Aug 2005 16:03:40 GMT (envelope-from jkoshy@repoman.freebsd.org) Received: (from jkoshy@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id j7RG3eMI062683; Sat, 27 Aug 2005 16:03:40 GMT (envelope-from jkoshy) Message-Id: <200508271603.j7RG3eMI062683@repoman.freebsd.org> From: Joseph Koshy Date: Sat, 27 Aug 2005 16:03:40 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Cc: Subject: cvs commit: src/sys/amd64/amd64 db_trace.c exception.S genassym.c trap.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.5 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: Sat, 27 Aug 2005 16:03:40 -0000 jkoshy 2005-08-27 16:03:40 UTC FreeBSD src repository Modified files: sys/amd64/amd64 db_trace.c exception.S genassym.c trap.c Log: - Special-case NMI handling on the AMD64. On entry or exit from the kernel the 'alltraps' and 'doreti' code used taken by normal traps disables interrupts to protect the critical sections where it is setting up %gs. This protection is insufficient in the presence of NMIs since NMIs can be taken even when the processor has disabled normal interrupts. Thus the NMI handler needs to actually read MSR_GBASE on entry to the kernel to determine whether a swap of %gs using 'swapgs' is needed. However, reads of MSRs are expensive and integrating this check into the 'alltraps'/'doreti' path would penalize normal interrupts. - Teach DDB about the 'nmi_calltrap' symbol. Reviewed by: bde, peter (older versions of this change) Revision Changes Path 1.69 +2 -1 src/sys/amd64/amd64/db_trace.c 1.127 +76 -2 src/sys/amd64/amd64/exception.S 1.156 +2 -0 src/sys/amd64/amd64/genassym.c 1.290 +2 -1 src/sys/amd64/amd64/trap.c