* Yu-Cheng Liu email@example.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.