Arthur Heymans has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/69122 )
Change subject: cpu/x86: Drop !CPU_INFO_V2 code ......................................................................
cpu/x86: Drop !CPU_INFO_V2 code
Now that all platforms use parallel_mp this is the only codepath used for cpu_info() local thread storage.
Change-Id: I119214e703aea8a4fe93f83b784159cf86d859d3 Signed-off-by: Arthur Heymans arthur@aheymans.xyz --- M src/Kconfig M src/arch/x86/c_start.S M src/arch/x86/include/arch/cpu.h M src/cpu/x86/Kconfig M src/security/intel/txt/getsec_enteraccs.S 5 files changed, 16 insertions(+), 24 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/22/69122/1
diff --git a/src/Kconfig b/src/Kconfig index b33ea62..08b2437 100644 --- a/src/Kconfig +++ b/src/Kconfig @@ -715,7 +715,7 @@ config COOP_MULTITASKING def_bool n select TIMER_QUEUE - depends on ARCH_X86 && CPU_INFO_V2 + depends on ARCH_X86 help Cooperative multitasking allows callbacks to be multiplexed on the main thread. With this enabled it allows for multiple execution paths diff --git a/src/arch/x86/c_start.S b/src/arch/x86/c_start.S index 84fbed2..02a9b89 100644 --- a/src/arch/x86/c_start.S +++ b/src/arch/x86/c_start.S @@ -80,7 +80,6 @@
push_cpu_info
-#if CONFIG(CPU_INFO_V2) /* Allocate the per_cpu_segment_data on the stack */ push_per_cpu_segment_data
@@ -93,7 +92,6 @@ mov $per_cpu_segment_selector, %eax movl (%eax), %eax mov %eax, %gs -#endif
/* * Now we are finished. Memory is up, data is copied and @@ -222,7 +220,6 @@ .word 0xffff, 0x0000 .byte 0x00, 0x9b, 0xaf, 0x00 #endif -#if CONFIG(CPU_INFO_V2) per_cpu_segment_descriptors: .rept CONFIG_MAX_CPUS /* flat data segment */ @@ -233,14 +230,11 @@ .byte 0x00, 0x93, 0xcf, 0x00 #endif .endr -#endif /* CPU_INFO_V2 */ gdt_end:
-#if CONFIG(CPU_INFO_V2) /* Segment selector pointing to the first per_cpu_segment_descriptor. */ per_cpu_segment_selector: .long per_cpu_segment_descriptors - gdt -#endif /* CPU_INFO_V2 */
.section ".text._start", "ax", @progbits #if ENV_X86_64 diff --git a/src/arch/x86/include/arch/cpu.h b/src/arch/x86/include/arch/cpu.h index 3402215..ca33423 100644 --- a/src/arch/x86/include/arch/cpu.h +++ b/src/arch/x86/include/arch/cpu.h @@ -150,7 +150,6 @@ static inline struct cpu_info *cpu_info(void) { /* We use a #if because we don't want to mess with the &s below. */ -#if CONFIG(CPU_INFO_V2) struct cpu_info *ci = NULL;
__asm__("mov %%gs:%c[offset], %[ci]" @@ -159,11 +158,6 @@ );
return ci; -#else - char s; - uintptr_t info = ALIGN_UP((uintptr_t)&s, CONFIG_STACK_SIZE) - sizeof(struct cpu_info); - return (struct cpu_info *)info; -#endif /* CPU_INFO_V2 */ }
struct cpuinfo_x86 { diff --git a/src/cpu/x86/Kconfig b/src/cpu/x86/Kconfig index b136e9e..1d6b489 100644 --- a/src/cpu/x86/Kconfig +++ b/src/cpu/x86/Kconfig @@ -2,7 +2,6 @@
config PARALLEL_MP def_bool y - select CPU_INFO_V2 help This option uses common MP infrastructure for bringing up APs in parallel. It additionally provides a more flexible mechanism @@ -210,12 +209,4 @@ However, modern OSes use PAT to control cacheability instead of using MTRRs.
-config CPU_INFO_V2 - bool - depends on PARALLEL_MP - help - Enables the new method of locating struct cpu_info. This new method - uses the %gs segment to locate the cpu_info pointer. The old method - relied on the stack being CONFIG_STACK_SIZE aligned. - endif # ARCH_X86 diff --git a/src/security/intel/txt/getsec_enteraccs.S b/src/security/intel/txt/getsec_enteraccs.S index cbb24b6..ff9db05 100644 --- a/src/security/intel/txt/getsec_enteraccs.S +++ b/src/security/intel/txt/getsec_enteraccs.S @@ -227,7 +227,7 @@ movd %esp, %xmm0 movd %ebp, %xmm1
- /* Backup %gs used by CPU_INFO_V2 */ + /* Backup %gs used by cpu_info() */ movl %gs, %eax movd %eax, %xmm2
@@ -265,7 +265,7 @@ movl %eax, %es movl %eax, %ss movl %eax, %fs - /* Restore %gs used by CPU_INFO_V2 */ + /* Restore %gs used by cpu_info */ movd %xmm2, %eax movl %eax, %gs