summaryrefslogtreecommitdiffstats
path: root/src/cpu/x86/Kconfig
diff options
context:
space:
mode:
authorRocky Phagura <rphagura@fb.com>2020-07-21 14:48:48 -0700
committerPatrick Georgi <pgeorgi@google.com>2021-02-22 07:34:23 +0000
commit5434988bac2175c66fbe29b76d277abf2c0e1819 (patch)
tree3bcd2e43e96207afd213594187880284175b2325 /src/cpu/x86/Kconfig
parent6b395cb19077864571d1c85a55b076e8f4c5a2e8 (diff)
downloadcoreboot-5434988bac2175c66fbe29b76d277abf2c0e1819.tar.gz
coreboot-5434988bac2175c66fbe29b76d277abf2c0e1819.tar.bz2
coreboot-5434988bac2175c66fbe29b76d277abf2c0e1819.zip
cpu/x86/smm: Introduce SMM module loader version 2
Xeon-SP Skylake Scalable Processor can have 36 CPU threads (18 cores). Current coreboot SMM is unable to handle more than ~32 CPU threads. This patch introduces a version 2 of the SMM module loader which addresses this problem. Having two versions of the SMM module loader prevents any issues to current projects. Future Xeon-SP products will be using this version of the SMM loader. Subsequent patches will enable board specific functionality for Xeon-SP. The reason for moving to version 2 is the state save area begins to encroach upon the SMI handling code when more than 32 CPU threads are in the system. This can cause system hangs, reboots, etc. The second change is related to staggered entry points with simple near jumps. In the current loader, near jumps will not work because the CPU is jumping within the same code segment. In version 2, "far" address jumps are necessary therefore protected mode must be enabled first. The SMM layout and how the CPUs are staggered are documented in the code. By making the modifications above, this allows the smm module loader to expand easily as more CPU threads are added. TEST=build for Tiogapass platform under OCP mainboard. Enable the following in Kconfig. select CPU_INTEL_COMMON_SMM select SOC_INTEL_COMMON_BLOCK_SMM select SMM_TSEG select HAVE_SMI_HANDLER select ACPI_INTEL_HARDWARE_SLEEP_VALUES Debug console will show all 36 cores relocated. Further tested by generating SMI's to port 0xb2 using XDP/ITP HW debugger and ensured all cores entering and exiting SMM properly. In addition, booted to Linux 5.4 kernel and observed no issues during mp init. Original-Change-Id: I00a23a5f2a46110536c344254868390dbb71854c Original-Signed-off-by: Rocky Phagura <rphagura@fb.com> Original-Reviewed-on: https://review.coreboot.org/c/coreboot/+/43684 Original-Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Original-Reviewed-by: Angel Pons <th3fanbus@gmail.com> (cherry picked from commit afb7a814783cda12f5b72167163b9109ee1d15a7) Signed-off-by: Marc Jones <marcjones@sysproconsulting.com> Change-Id: I76bb506de56c816f6c0635bfd990125b789c5877 Reviewed-on: https://review.coreboot.org/c/coreboot/+/50313 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Reviewed-by: Jay Talbott <JayTalbott@sysproconsulting.com> Reviewed-by: Rocky Phagura
Diffstat (limited to 'src/cpu/x86/Kconfig')
-rw-r--r--src/cpu/x86/Kconfig8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/cpu/x86/Kconfig b/src/cpu/x86/Kconfig
index 85ebd831ea66..1c714d16560d 100644
--- a/src/cpu/x86/Kconfig
+++ b/src/cpu/x86/Kconfig
@@ -137,6 +137,14 @@ config SMM_STUB_STACK_SIZE
endif
+config X86_SMM_LOADER_VERSION2
+ bool
+ default n
+ depends on HAVE_SMI_HANDLER
+ help
+ This option enables SMM module loader that works with server
+ platforms which may contain more than 32 CPU threads.
+
config SMM_LAPIC_REMAP_MITIGATION
bool
default y if NORTHBRIDGE_INTEL_I945