Yield while spinning on APs and avoid announcing all CPUs unless bootverbose

is set. These improve startup performance on massively multithreaded systems
with 8-way SMT and dozens to hundreds of CPUs.

MFC after:	3 weeks
This commit is contained in:
Nathan Whitehorn 2017-11-25 22:01:55 +00:00
parent de2dd83fb9
commit f04a8fd6a9

View file

@ -78,7 +78,8 @@ machdep_ap_bootstrap(void)
__asm __volatile("msync; isync");
while (ap_letgo == 0)
;
__asm __volatile("or 27,27,27");
__asm __volatile("or 6,6,6");
/* Initialize DEC and TB, sync with the BSP values */
platform_smp_timebase_sync(ap_timebase, 1);
@ -177,6 +178,9 @@ cpu_mp_announce(void)
struct pcpu *pc;
int i;
if (!bootverbose)
return;
CPU_FOREACH(i) {
pc = pcpu_find(i);
if (pc == NULL)