x86: even faster core_id()s with segmentation
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 12 Jun 2014 04:32:46 +0000 (21:32 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 12 Jun 2014 04:32:46 +0000 (21:32 -0700)
commitad10b25d2fcf82e46f5ab9b9b91db251f6dfe8d2
treecf3f051d34488a25223ccdf62b5f170d8999fd73
parentcc9a8fe35e22d51b3381e2152c02cf7374bf3ffe
x86: even faster core_id()s with segmentation

The old slow core_id reads, using the LAPIC and the os_coreid() lookup
took about 50 TSC ticks per core_id() call (avg time in a for loop of
100000 calls).

The rdtscp option (the old FAST_COREID) was about 30 ticks.

The segmentation lookup is 1 tick.

rdtscp still has the pcoreid in ecx, so that userspace can use it.
kern/arch/x86/Kconfig
kern/arch/x86/coreid.h
kern/arch/x86/cpuinfo.c
kern/arch/x86/smp_boot.c
kern/include/smp.h