intel 82801dx/gx/ix: Commit SMM relocation code to DRAM

Make sure relocation code reaches DRAM before issuing any
SMIs. Snooping and cache coherency may have undefined
behaviour as CPUs do not have uniform MTRR layout yet.

Change-Id: I47a7d684e05ff8c1c2f1f6a5bf8c0bbc561d9eac
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/17712
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
Kyösti Mälkki 2016-12-04 22:17:37 +02:00
parent 029cebc7cd
commit b6e9021b16
3 changed files with 3 additions and 0 deletions

View File

@ -252,6 +252,7 @@ static void smm_relocate(void)
/* copy the SMM relocation code */ /* copy the SMM relocation code */
memcpy((void *)0x38000, &smm_relocation_start, memcpy((void *)0x38000, &smm_relocation_start,
&smm_relocation_end - &smm_relocation_start); &smm_relocation_end - &smm_relocation_start);
wbinvd();
printk(BIOS_DEBUG, "\n"); printk(BIOS_DEBUG, "\n");
dump_smi_status(reset_smi_status()); dump_smi_status(reset_smi_status());

View File

@ -252,6 +252,7 @@ static void smm_relocate(void)
/* copy the SMM relocation code */ /* copy the SMM relocation code */
memcpy((void *)0x38000, &smm_relocation_start, memcpy((void *)0x38000, &smm_relocation_start,
&smm_relocation_end - &smm_relocation_start); &smm_relocation_end - &smm_relocation_start);
wbinvd();
printk(BIOS_DEBUG, "\n"); printk(BIOS_DEBUG, "\n");
dump_smi_status(reset_smi_status()); dump_smi_status(reset_smi_status());

View File

@ -256,6 +256,7 @@ static void smm_relocate(void)
/* copy the SMM relocation code */ /* copy the SMM relocation code */
memcpy((void *)0x38000, &smm_relocation_start, memcpy((void *)0x38000, &smm_relocation_start,
&smm_relocation_end - &smm_relocation_start); &smm_relocation_end - &smm_relocation_start);
wbinvd();
printk(BIOS_DEBUG, "\n"); printk(BIOS_DEBUG, "\n");
dump_smi_status(reset_smi_status()); dump_smi_status(reset_smi_status());