diff options
author | Aaron Durbin <adurbin@chromium.org> | 2013-01-03 17:38:47 -0600 |
---|---|---|
committer | Ronald G. Minnich <rminnich@gmail.com> | 2013-03-14 05:01:50 +0100 |
commit | 50a34648cdc7fc55e1fa75d51ece608c0e27245a (patch) | |
tree | 4c0853f9500e4b01007b6c24caebbea1007ff9a0 /src/cpu/x86/Kconfig | |
parent | 5ca4f4119bf00a1ec64358f3e6b41d696b1dc123 (diff) | |
download | coreboot-50a34648cdc7fc55e1fa75d51ece608c0e27245a.tar.xz |
x86: SMM Module Support
Add support for SMM modules by leveraging the RMODULE lib. This allows
for easier dynamic SMM handler placement. The SMM module support
consists of a common stub which puts the executing CPU into protected
mode and calls into a pre-defined handler. This stub can then be used
for SMM relocation as well as the real SMM handler. For the relocation
one can call back into coreboot ramstage code to perform relocation in
C code.
The handler is essentially a copy of smihandler.c, but it drops the TSEG
differences. It also doesn't rely on the SMM revision as the cpu code
should know what processor it is supported.
Ideally the CONFIG_SMM_TSEG option could be removed once the existing
users of that option transitioned away from tseg_relocate() and
smi_get_tseg_base().
The generic SMI callbacks are now not marked as weak in the
declaration so that there aren't unlinked references. The handler
has default implementations of the generic SMI callbacks which are
marked as weak. If an external compilation module has a strong symbol
the linker will use that instead of the link one.
Additionally, the parameters to the generic callbacks are dropped as
they don't seem to be used directly. The SMM runtime can provide the
necessary support if needed.
Change-Id: I1e2fed71a40b2eb03197697d29e9c4b246e3b25e
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: http://review.coreboot.org/2693
Tested-by: build bot (Jenkins)
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
Diffstat (limited to 'src/cpu/x86/Kconfig')
-rw-r--r-- | src/cpu/x86/Kconfig | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/cpu/x86/Kconfig b/src/cpu/x86/Kconfig index ae3241e8b3..62d78b5436 100644 --- a/src/cpu/x86/Kconfig +++ b/src/cpu/x86/Kconfig @@ -66,3 +66,21 @@ config SMM_TSEG config SMM_TSEG_SIZE hex default 0 + +config SMM_MODULES + bool + default n + depends on HAVE_SMI_HANDLER + select RELOCATABLE_MODULES + help + If SMM_MODULES is selected then SMM handlers are built as modules. + A SMM stub along with a SMM loader/relocator. All the handlers are + written in C with stub being the only assembly. + +config SMM_MODULE_HEAP_SIZE + hex + default 0x4000 + depends on SMM_MODULES + help + This option determines the size of the heap within the SMM handler + modules. |