Rocky Phagura uploaded patch set #2 to this change.

View Change

cpu/x86/smm: SMM module loader version 2

Xeon-SP a 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 specifc 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
is 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.

Change-Id: I00a23a5f2a46110536c344254868390dbb71854c
Signed-off-by: Rocky Phagura <rphagura@fb.com>
---
M src/cpu/x86/Kconfig
M src/cpu/x86/smm/Makefile.inc
A src/cpu/x86/smm/smm_module_loaderv2.c
M src/include/cpu/x86/smm.h
4 files changed, 678 insertions(+), 0 deletions(-)

git pull ssh://review.coreboot.org:29418/coreboot refs/changes/84/43684/2

To view, visit change 43684. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I00a23a5f2a46110536c344254868390dbb71854c
Gerrit-Change-Number: 43684
Gerrit-PatchSet: 2
Gerrit-Owner: Rocky Phagura
Gerrit-Reviewer: Angel Pons <th3fanbus@gmail.com>
Gerrit-Reviewer: David Hendricks <david.hendricks@gmail.com>
Gerrit-Reviewer: Eugene Myers <cedarhouse1@comcast.net>
Gerrit-Reviewer: Jonathan Zhang <jonzhang@fb.com>
Gerrit-Reviewer: Martin Roth <martinroth@google.com>
Gerrit-Reviewer: Patrick Georgi <pgeorgi@google.com>
Gerrit-Reviewer: Patrick Rudolph <patrick.rudolph@9elements.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org>
Gerrit-MessageType: newpatchset