Date: Sat, 7 Mar 2015 08:17:19 -0800 From: Adrian Chadd <adrian@freebsd.org> To: Konstantin Belousov <kib@freebsd.org> Cc: "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>, "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>, "src-committers@freebsd.org" <src-committers@freebsd.org> Subject: Re: svn commit: r279406 - in head/sys: amd64/amd64 i386/i386 Message-ID: <CAJ-VmokwR9h6BBU9HT52toD57tcic6TXmGmPHWPOm%2ByA0cvzsA@mail.gmail.com> In-Reply-To: <CAJ-Vmokh7J1k3VXH-Zn_01_p92JLAgJZE_pO5ey7b1ivmUcY9A@mail.gmail.com> References: <201502282037.t1SKbdTI072217@svn.freebsd.org> <CAJ-Vmokh7J1k3VXH-Zn_01_p92JLAgJZE_pO5ey7b1ivmUcY9A@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Ugh, sorry to bring this up again, but I just updated to -HEAD and it started hanging again at the same spot. :( -adrian On 28 February 2015 at 14:08, Adrian Chadd <adrian@freebsd.org> wrote: > Thanks for promptly finding/fixing this! > > For the record, the CPU I have in this zenbook: > > CPU: Intel(R) Core(TM) i5-2467M CPU @ 1.60GHz (1596.41-MHz K8-class CPU) > > > > On 28 February 2015 at 12:37, Konstantin Belousov <kib@freebsd.org> wrote: >> Author: kib >> Date: Sat Feb 28 20:37:38 2015 >> New Revision: 279406 >> URL: https://svnweb.freebsd.org/changeset/base/279406 >> >> Log: >> Supposed fix for some SandyBridge mobile CPUs hang on AP startup when >> x2APIC mode is detected and enabled. Current theory is that switching >> the APIC mode while an IPI is in flight might be the issue. >> >> Postpone switching to x2APIC mode until we are guaranteed that all >> starting IPIs are already send and aknowledged. Use aps_ready signal >> as an indication that the BSP is done with us. >> >> Tested by: adrian >> Sponsored by: The FreeBSD Foundation >> MFC after: 2 months >> >> 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 Sat Feb 28 20:30:29 2015 (r279405) >> +++ head/sys/amd64/amd64/mp_machdep.c Sat Feb 28 20:37:38 2015 (r279406) >> @@ -705,12 +705,6 @@ init_secondary(void) >> wrmsr(MSR_STAR, msr); >> wrmsr(MSR_SF_MASK, PSL_NT|PSL_T|PSL_I|PSL_C|PSL_D); >> >> - /* >> - * On real hardware, switch to x2apic mode if possible. >> - * Disable local APIC until BSP directed APs to run. >> - */ >> - lapic_xapic_mode(); >> - >> /* signal our startup to the BSP. */ >> mp_naps++; >> >> @@ -718,6 +712,14 @@ init_secondary(void) >> while (!aps_ready) >> ia32_pause(); >> >> + /* >> + * On real hardware, switch to x2apic mode if possible. Do it >> + * after aps_ready was signalled, to avoid manipulating the >> + * mode while BSP might still want to send some IPI to us >> + * (second startup IPI is ignored on modern hardware etc). >> + */ >> + lapic_xapic_mode(); >> + >> /* Initialize the PAT MSR. */ >> pmap_init_pat(); >> >> >> Modified: head/sys/i386/i386/mp_machdep.c >> ============================================================================== >> --- head/sys/i386/i386/mp_machdep.c Sat Feb 28 20:30:29 2015 (r279405) >> +++ head/sys/i386/i386/mp_machdep.c Sat Feb 28 20:37:38 2015 (r279406) >> @@ -719,12 +719,6 @@ init_secondary(void) >> load_cr0(cr0); >> CHECK_WRITE(0x38, 5); >> >> - /* >> - * On real hardware, switch to x2apic mode if possible. >> - * Disable local APIC until BSP directed APs to run. >> - */ >> - lapic_xapic_mode(); >> - >> /* signal our startup to the BSP. */ >> mp_naps++; >> CHECK_WRITE(0x39, 6); >> @@ -742,6 +736,14 @@ init_secondary(void) >> lidt(&r_idt); >> #endif >> >> + /* >> + * On real hardware, switch to x2apic mode if possible. Do it >> + * after aps_ready was signalled, to avoid manipulating the >> + * mode while BSP might still want to send some IPI to us >> + * (second startup IPI is ignored on modern hardware etc). >> + */ >> + lapic_xapic_mode(); >> + >> /* Initialize the PAT MSR if present. */ >> pmap_init_pat(); >> >>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmokwR9h6BBU9HT52toD57tcic6TXmGmPHWPOm%2ByA0cvzsA>