Date: Mon, 13 Aug 2012 16:33:22 +0000 (UTC) From: John Baldwin <jhb@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r239235 - in head/sys: amd64/amd64 i386/i386 Message-ID: <201208131633.q7DGXMj4064288@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201208131633.q7DGXMj4064288>