[coreboot] Researching the SMM mode

Ramkumar Ramachandra artagnon at gmail.com
Wed Feb 5 16:08:31 CET 2014


I'm currently researching the SMM mode, and would appreciate pointers
on what the code in src/cpu/x86/smm does.

1. It seems to me that smi_handler() is executed everytime there's an
SMI interrupt. When does this occur? How can I inspect what exactly
happens when an SMI is fired? Also, what is smm_handler_start(), and
when is it executed?

2. Isn't the firmware supposed to write thermal and power data to
SMRAM while in SMM mode? Where is the code for this?

3. Is smm_setup_relocation_handler() called when the SMBASE is
relocated? I see comments in smmrelocate.S justifying why SMBASE needs
to be relocated from the default value. What does the Intel manual
have to say about this (I'm reading Chapter 34 from 3C)?

4. How does coreboot ensure that SMRAM isn't accessible from a non-SMM
mode? Various papers talk about D_LOCK and D_OPEN registers; where are
these registers set?

5. How does Linux interact with software that is executed in SMM mode,
if at all? I could only find one reference to SMM in the codebase:
Documentation/dcdbas.txt; it talks about a Dell Systems Management
Base Driver.



More information about the coreboot mailing list