[coreboot] No code in SMM handler address (0xa0000)

Stefan Reinauer stefan.reinauer at coreboot.org
Sat Aug 1 00:28:34 CEST 2015


* Yu-Cheng Liu <peter90609 at gmail.com> [150724 09:13]:
> hello,
> Here I have some questions in smi.c file (coreboot/src/southbridge/intel/
> i82801ix/smi.c)
> 
> in smm_install function, one statement is to copy handler to SMRAM(0xa0000):
> 1.I can't find copy source data ( _binary_smm_start ),where is it write? I
> watch (_binary_smm_start) memory address,and it has value in it.

The SMM handler is created as a separate binary that is then copied to
0xa0000. This binary is produced by src/cpu/x86/smm/Makefile.inc
> 
> 2.After execute the memcpy statement,there is nothing change in 0xa0000,the
> value in 65535

What do you mean by that?

After memcpy is done, the SMM region is locked again, so you will see
VGA memory shadowed over it, as long as you are not actually in SMM.

> In smm_relocate function, the pointer goes in the " if " statement and then
> "return" , the relocation code did not copy to 0x38000:
 
> 3.How do I let the program go through and do the job below the " if "
> statement?

>From when I was playing around with Qemu last, its SMM implementation is
not 100% correct. You should probably look at some actual hardware here.

Stefan 




More information about the coreboot mailing list