On Tue, Mar 31, 2015 at 12:51:04PM -0400, John Baldwin wrote:
> Also, I believe that the 100 millisecond timer referred to in step 14 above is
> a timeout on the entire AP-enumeration process and is the timer waited for in
> step 16.  It also seems that the BIOS uses broadcast (all-but-self) IPIs,
> whereas FreeBSD uses targeted (wake up a single AP at a time) IPIs.
Yes, I also noted that when I tried to understand why x2APIC fails in AP
startup sequence.

> 
> I don't really know if we need to increase the delays or not.  I have no idea
> what Intel's source for those numbers in the two documents are.  I don't think
> I've ever seen a rationale for why they were chosen.
It might beia time to run BIST + some sloppiness for the actual initialization
code.  Intel claims

9.1.2 Processor Built-In Self-Test (BIST)

The overhead for performing a BIST varies between processor families.
For example, the BIST takes approximately 30 million processor clock
periods to execute on the Pentium 4 processor. This clock count is
model-specific; Intel reserves the right to change the number of periods
for any Intel 64 or IA-32 processor, without notification.

> 
> BTW, Linux seems to use the equivalent of 100 milliseconds for the
> lapic_ipi_wait() stage before doing the other delays (see
> native_safe_apic_wait_icr_idle() for the non-X2APIC case).

My main observation is that we allow almost twice as much time for AP
to start in the xAPIC mode vs. x2APIC.  But increasing the delays did
not helped the machines where it fails.
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to