From owner-svn-src-head@FreeBSD.ORG Mon Aug 13 16:33:22 2012 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B36161065672; Mon, 13 Aug 2012 16:33:22 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9D9A78FC0A; Mon, 13 Aug 2012 16:33:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q7DGXMKW064291; Mon, 13 Aug 2012 16:33:22 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q7DGXMj4064288; Mon, 13 Aug 2012 16:33:22 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201208131633.q7DGXMj4064288@svn.freebsd.org> From: John Baldwin Date: Mon, 13 Aug 2012 16:33:22 +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: r239235 - in head/sys: amd64/amd64 i386/i386 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: Mon, 13 Aug 2012 16:33:22 -0000 Author: jhb Date: Mon Aug 13 16:33:22 2012 New Revision: 239235 URL: http://svn.freebsd.org/changeset/base/239235 Log: Add a 10 millisecond delay after sending the initial INIT IPI. This matches the algorithm in the MP specification (1.4). Previously we were sending out the deassert INIT IPI immediately after the initial INIT IPI was sent. Modified: head/sys/amd64/amd64/mp_machdep.c head/sys/i386/i386/mp_machdep.c Modified: head/sys/amd64/amd64/mp_machdep.c ============================================================================== --- head/sys/amd64/amd64/mp_machdep.c Mon Aug 13 16:03:30 2012 (r239234) +++ head/sys/amd64/amd64/mp_machdep.c Mon Aug 13 16:33:22 2012 (r239235) @@ -1048,14 +1048,15 @@ ipi_startup(int apic_id, int vector) /* wait for pending status end */ lapic_ipi_wait(-1); + DELAY(10000); /* wait ~10mS */ /* do an INIT IPI: deassert RESET */ lapic_ipi_raw(APIC_DEST_ALLESELF | APIC_TRIGMOD_LEVEL | APIC_LEVEL_DEASSERT | APIC_DESTMODE_PHY | APIC_DELMODE_INIT, 0); /* wait for pending status end */ - DELAY(10000); /* wait ~10mS */ lapic_ipi_wait(-1); + DELAY(10000); /* wait ~10mS */ /* * next we do a STARTUP IPI: the previous INIT IPI might still be Modified: head/sys/i386/i386/mp_machdep.c ============================================================================== --- head/sys/i386/i386/mp_machdep.c Mon Aug 13 16:03:30 2012 (r239234) +++ head/sys/i386/i386/mp_machdep.c Mon Aug 13 16:33:22 2012 (r239235) @@ -1148,14 +1148,15 @@ ipi_startup(int apic_id, int vector) /* wait for pending status end */ lapic_ipi_wait(-1); + DELAY(10000); /* wait ~10mS */ /* do an INIT IPI: deassert RESET */ lapic_ipi_raw(APIC_DEST_ALLESELF | APIC_TRIGMOD_LEVEL | APIC_LEVEL_DEASSERT | APIC_DESTMODE_PHY | APIC_DELMODE_INIT, 0); /* wait for pending status end */ - DELAY(10000); /* wait ~10mS */ lapic_ipi_wait(-1); + DELAY(10000); /* wait ~10mS */ /* * next we do a STARTUP IPI: the previous INIT IPI might still be