summaryrefslogtreecommitdiff
path: root/src/cpu
diff options
context:
space:
mode:
authorRaul E Rangel <rrangel@chromium.org>2021-10-08 13:10:38 -0600
committerFelix Held <felix-coreboot@felixheld.de>2021-10-18 12:37:35 +0000
commitdb3e4b943a826eacbc2e38e0866b52cbaea1f19b (patch)
tree5f526ec10e0ca7a1b809f6a8c848ca18410b6afd /src/cpu
parent8e9db4eed5989cb2bffda11c2e10df5536e41ee3 (diff)
cpu/x86/smm/smm_stub: Remove cpu_info
Now that cpu_info() is no longer used by COOP_MULTITASKING, we no longer need to set up cpu_info in SMM. When using CPU_INFO_V2, if something does manage to call cpu_info() while executing in SMM mode, the %gs segment is disabled, so it will generate an exception. BUG=b:179699789 TEST=Boot guybrush to OS with threads enabled Signed-off-by: Raul E Rangel <rrangel@chromium.org> Change-Id: Id64f32cc63082880a92dab6deb473431b2238cd0 Reviewed-on: https://review.coreboot.org/c/coreboot/+/58204 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Karthik Ramasubramanian <kramasub@google.com> Reviewed-by: Paul Menzel <paulepanter@mailbox.org>
Diffstat (limited to 'src/cpu')
-rw-r--r--src/cpu/x86/smm/smm_stub.S32
1 files changed, 1 insertions, 31 deletions
diff --git a/src/cpu/x86/smm/smm_stub.S b/src/cpu/x86/smm/smm_stub.S
index e409983eae..c83839cc01 100644
--- a/src/cpu/x86/smm/smm_stub.S
+++ b/src/cpu/x86/smm/smm_stub.S
@@ -9,7 +9,6 @@
* found in smm.h.
*/
-#include <cpu/x86/cpu_info.S.inc>
#include <cpu/x86/cr.h>
#include <cpu/x86/msr.h>
#include <cpu/x86/lapic_def.h>
@@ -83,21 +82,8 @@ smm_relocate_gdt:
/* gdt selector 0x20 tss segment */
.word 0xffff, 0x0000
.byte 0x00, 0x8b, 0x80, 0x00
-
-#if CONFIG(CPU_INFO_V2)
-per_cpu_segment_descriptors:
- .rept CONFIG_MAX_CPUS
- /* selgdt 0x28, flat data segment */
- .word 0xffff, 0x0000
- .byte 0x00, 0x93, 0xcf, 0x00
- .endr
-#endif /* CPU_INFO_V2 */
smm_relocate_gdt_end:
-#if CONFIG(CPU_INFO_V2)
-.set per_cpu_segment_selector, per_cpu_segment_descriptors - smm_relocate_gdt
-#endif /* CPU_INFO_V2 */
-
.align 4
.code32
.global smm_trampoline32
@@ -109,7 +95,7 @@ smm_trampoline32:
movw %ax, %ss
xor %ax, %ax /* zero out the gs and fs segment index */
movw %ax, %fs
- movw %ax, %gs /* Will be used for cpu_info */
+ movw %ax, %gs /* Used by cpu_info in ramstage */
/* The CPU number is calculated by reading the initial APIC id. Since
* the OS can manipulate the APIC id use the non-changing cpuid result
@@ -167,22 +153,6 @@ apicid_end:
movl $0, 4(%ebx)
#endif
-#if CONFIG(CPU_INFO_V2)
- push_cpu_info index=%ecx
- push_per_cpu_segment_data
-
- /*
- * Update the AP's per_cpu_segment_descriptor to point to the
- * per_cpu_segment_data that was allocated on the stack.
- */
- set_segment_descriptor_base $per_cpu_segment_descriptors, %esp, %ecx
-
- mov %ecx, %eax
- shl $3, %eax /* The index is << 3 in the segment selector */
- add $per_cpu_segment_selector, %eax
- mov %eax, %gs
-#endif
-
/* Create stack frame by pushing a NULL stack base pointer */
pushl $0x0
mov %esp, %ebp