cpu/x86/smm: Promote smm_memory_map()
Change-Id: I909e9b5fead317928d3513a677cfab25e3c42f64 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/34792 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
544878b563
commit
7cdb047ce7
|
@ -3,7 +3,6 @@ CONFIG_VENDOR_INTEL=y
|
||||||
CONFIG_BOARD_INTEL_GALILEO=y
|
CONFIG_BOARD_INTEL_GALILEO=y
|
||||||
# CONFIG_FSP_DEBUG_ALL is not set
|
# CONFIG_FSP_DEBUG_ALL is not set
|
||||||
CONFIG_DISPLAY_MTRRS=y
|
CONFIG_DISPLAY_MTRRS=y
|
||||||
CONFIG_DISPLAY_SMM_MEMORY_MAP=y
|
|
||||||
CONFIG_DISPLAY_ESRAM_LAYOUT=y
|
CONFIG_DISPLAY_ESRAM_LAYOUT=y
|
||||||
CONFIG_BOOTBLOCK_NORMAL=y
|
CONFIG_BOOTBLOCK_NORMAL=y
|
||||||
CONFIG_ON_DEVICE_ROM_LOAD=y
|
CONFIG_ON_DEVICE_ROM_LOAD=y
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
#include <cpu/intel/romstage.h>
|
#include <cpu/intel/romstage.h>
|
||||||
#include <cpu/x86/mtrr.h>
|
#include <cpu/x86/mtrr.h>
|
||||||
|
#include <cpu/x86/smm.h>
|
||||||
#include <arch/symbols.h>
|
#include <arch/symbols.h>
|
||||||
#include <commonlib/helpers.h>
|
#include <commonlib/helpers.h>
|
||||||
#include <program_loading.h>
|
#include <program_loading.h>
|
||||||
|
@ -69,6 +70,9 @@ static void romstage_main(unsigned long bist)
|
||||||
printk(BIOS_DEBUG, "Smashed stack detected in romstage!\n");
|
printk(BIOS_DEBUG, "Smashed stack detected in romstage!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (CONFIG(SMM_TSEG))
|
||||||
|
smm_list_regions();
|
||||||
|
|
||||||
prepare_and_run_postcar(&early_mtrrs);
|
prepare_and_run_postcar(&early_mtrrs);
|
||||||
/* We do not return here. */
|
/* We do not return here. */
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,3 +84,23 @@ void __weak stage_cache_external_region(void **base, size_t *size)
|
||||||
*size = 0;
|
*size = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void smm_list_regions(void)
|
||||||
|
{
|
||||||
|
uintptr_t base;
|
||||||
|
size_t size;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
smm_region(&base, &size);
|
||||||
|
if (!size)
|
||||||
|
return;
|
||||||
|
|
||||||
|
printk(BIOS_DEBUG, "SMM Memory Map\n");
|
||||||
|
printk(BIOS_DEBUG, "SMRAM : 0x%zx 0x%zx\n", base, size);
|
||||||
|
|
||||||
|
for (i = 0; i < SMM_SUBREGION_NUM; i++) {
|
||||||
|
if (smm_subregion(i, &base, &size))
|
||||||
|
continue;
|
||||||
|
printk(BIOS_DEBUG, " Subregion %d: 0x%zx 0x%zx\n", i, base, size);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -30,25 +30,6 @@ __weak void soc_after_silicon_init(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Display SMM memory map */
|
|
||||||
static void smm_memory_map(void)
|
|
||||||
{
|
|
||||||
uintptr_t base;
|
|
||||||
size_t size;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
printk(BIOS_SPEW, "SMM Memory Map\n");
|
|
||||||
|
|
||||||
smm_region(&base, &size);
|
|
||||||
printk(BIOS_SPEW, "SMRAM : 0x%zx 0x%zx\n", base, size);
|
|
||||||
|
|
||||||
for (i = 0; i < SMM_SUBREGION_NUM; i++) {
|
|
||||||
if (smm_subregion(i, &base, &size))
|
|
||||||
continue;
|
|
||||||
printk(BIOS_SPEW, " Subregion %d: 0x%zx 0x%zx\n", i, base, size);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void display_hob_info(FSP_INFO_HEADER *fsp_info_header)
|
static void display_hob_info(FSP_INFO_HEADER *fsp_info_header)
|
||||||
{
|
{
|
||||||
const EFI_GUID graphics_info_guid = EFI_PEI_GRAPHICS_INFO_HOB_GUID;
|
const EFI_GUID graphics_info_guid = EFI_PEI_GRAPHICS_INFO_HOB_GUID;
|
||||||
|
@ -147,9 +128,6 @@ void fsp_run_silicon_init(FSP_INFO_HEADER *fsp_info_header, int is_s3_wakeup)
|
||||||
|
|
||||||
static void fsp_cache_save(struct prog *fsp)
|
static void fsp_cache_save(struct prog *fsp)
|
||||||
{
|
{
|
||||||
if (CONFIG(DISPLAY_SMM_MEMORY_MAP))
|
|
||||||
smm_memory_map();
|
|
||||||
|
|
||||||
if (CONFIG(NO_STAGE_CACHE))
|
if (CONFIG(NO_STAGE_CACHE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -160,4 +160,7 @@ enum {
|
||||||
* 0 on success, < 0 on failure. */
|
* 0 on success, < 0 on failure. */
|
||||||
int smm_subregion(int sub, uintptr_t *start, size_t *size);
|
int smm_subregion(int sub, uintptr_t *start, size_t *size);
|
||||||
|
|
||||||
|
/* Print the SMM memory layout on console. */
|
||||||
|
void smm_list_regions(void);
|
||||||
|
|
||||||
#endif /* CPU_X86_SMM_H */
|
#endif /* CPU_X86_SMM_H */
|
||||||
|
|
|
@ -94,7 +94,6 @@ config FSP_DEBUG_ALL
|
||||||
# Enable display and verification for coreboot build tests
|
# Enable display and verification for coreboot build tests
|
||||||
select DISPLAY_HOBS
|
select DISPLAY_HOBS
|
||||||
select DISPLAY_MTRRS
|
select DISPLAY_MTRRS
|
||||||
select DISPLAY_SMM_MEMORY_MAP
|
|
||||||
select DISPLAY_UPD_DATA
|
select DISPLAY_UPD_DATA
|
||||||
select DISPLAY_ESRAM_LAYOUT
|
select DISPLAY_ESRAM_LAYOUT
|
||||||
select DISPLAY_FSP_CALLS_AND_STATUS
|
select DISPLAY_FSP_CALLS_AND_STATUS
|
||||||
|
|
|
@ -67,6 +67,9 @@ asmlinkage void car_stage_entry(void)
|
||||||
if (romstage_handoff_init(s3_resume))
|
if (romstage_handoff_init(s3_resume))
|
||||||
printk(BIOS_ERR, "Failed to set romstage handoff data\n");
|
printk(BIOS_ERR, "Failed to set romstage handoff data\n");
|
||||||
|
|
||||||
|
if (CONFIG(SMM_TSEG))
|
||||||
|
smm_list_regions();
|
||||||
|
|
||||||
post_code(0x44);
|
post_code(0x44);
|
||||||
if (postcar_frame_init(&pcf, 1 * KiB))
|
if (postcar_frame_init(&pcf, 1 * KiB))
|
||||||
die("Unable to initialize postcar frame.\n");
|
die("Unable to initialize postcar frame.\n");
|
||||||
|
|
|
@ -152,6 +152,9 @@ asmlinkage void car_stage_entry(void)
|
||||||
if (romstage_handoff_init(s3_resume))
|
if (romstage_handoff_init(s3_resume))
|
||||||
printk(BIOS_ERR, "Failed to set romstage handoff data\n");
|
printk(BIOS_ERR, "Failed to set romstage handoff data\n");
|
||||||
|
|
||||||
|
if (CONFIG(SMM_TSEG))
|
||||||
|
smm_list_regions();
|
||||||
|
|
||||||
post_code(0x44);
|
post_code(0x44);
|
||||||
if (postcar_frame_init(&pcf, 0))
|
if (postcar_frame_init(&pcf, 0))
|
||||||
die("Unable to initialize postcar frame.\n");
|
die("Unable to initialize postcar frame.\n");
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
#include <cbmem.h>
|
#include <cbmem.h>
|
||||||
#include <cpu/x86/mtrr.h>
|
#include <cpu/x86/mtrr.h>
|
||||||
|
#include <cpu/x86/smm.h>
|
||||||
#if CONFIG(EC_GOOGLE_CHROMEEC)
|
#if CONFIG(EC_GOOGLE_CHROMEEC)
|
||||||
#include <ec/google/chromeec/ec.h>
|
#include <ec/google/chromeec/ec.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -146,6 +147,9 @@ static void romstage_main(uint64_t tsc, uint32_t bist)
|
||||||
/* Call into mainboard. */
|
/* Call into mainboard. */
|
||||||
mainboard_romstage_entry(&rp);
|
mainboard_romstage_entry(&rp);
|
||||||
|
|
||||||
|
if (CONFIG(SMM_TSEG))
|
||||||
|
smm_list_regions();
|
||||||
|
|
||||||
prepare_and_run_postcar(&early_mtrrs);
|
prepare_and_run_postcar(&early_mtrrs);
|
||||||
/* We do not return here. */
|
/* We do not return here. */
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,10 +15,6 @@ source "src/soc/intel/common/pch/Kconfig"
|
||||||
comment "Intel SoC Common coreboot stages"
|
comment "Intel SoC Common coreboot stages"
|
||||||
source "src/soc/intel/common/basecode/Kconfig"
|
source "src/soc/intel/common/basecode/Kconfig"
|
||||||
|
|
||||||
config DISPLAY_SMM_MEMORY_MAP
|
|
||||||
bool "SMM: Display the SMM memory map"
|
|
||||||
default n
|
|
||||||
|
|
||||||
config SOC_INTEL_COMMON_RESET
|
config SOC_INTEL_COMMON_RESET
|
||||||
bool
|
bool
|
||||||
default n
|
default n
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include <console/usb.h>
|
#include <console/usb.h>
|
||||||
#include <cbmem.h>
|
#include <cbmem.h>
|
||||||
#include <cpu/x86/mtrr.h>
|
#include <cpu/x86/mtrr.h>
|
||||||
|
#include <cpu/x86/smm.h>
|
||||||
#include <program_loading.h>
|
#include <program_loading.h>
|
||||||
#include <romstage_handoff.h>
|
#include <romstage_handoff.h>
|
||||||
#include <timestamp.h>
|
#include <timestamp.h>
|
||||||
|
@ -255,9 +256,11 @@ void romstage_main_continue(EFI_STATUS status, void *hob_list_ptr)
|
||||||
|
|
||||||
romstage_handoff_init(prev_sleep_state == ACPI_S3);
|
romstage_handoff_init(prev_sleep_state == ACPI_S3);
|
||||||
|
|
||||||
post_code(0x4f);
|
if (CONFIG(SMM_TSEG))
|
||||||
|
smm_list_regions();
|
||||||
|
|
||||||
/* Load the ramstage. */
|
/* Load the ramstage. */
|
||||||
|
post_code(0x4f);
|
||||||
run_ramstage();
|
run_ramstage();
|
||||||
while (1);
|
while (1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
#include <console/usb.h>
|
#include <console/usb.h>
|
||||||
#include <cpu/x86/mtrr.h>
|
#include <cpu/x86/mtrr.h>
|
||||||
|
#include <cpu/x86/smm.h>
|
||||||
#include <program_loading.h>
|
#include <program_loading.h>
|
||||||
#include <timestamp.h>
|
#include <timestamp.h>
|
||||||
#include <version.h>
|
#include <version.h>
|
||||||
|
@ -169,6 +170,9 @@ void romstage_main_continue(EFI_STATUS status, void *hob_list_ptr)
|
||||||
if (!CONFIG(FSP_MEMORY_DOWN))
|
if (!CONFIG(FSP_MEMORY_DOWN))
|
||||||
save_dimm_info();
|
save_dimm_info();
|
||||||
|
|
||||||
|
if (CONFIG(SMM_TSEG))
|
||||||
|
smm_list_regions();
|
||||||
|
|
||||||
/* Load the ramstage. */
|
/* Load the ramstage. */
|
||||||
post_code(0x4e);
|
post_code(0x4e);
|
||||||
run_ramstage();
|
run_ramstage();
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include "southbridge/intel/fsp_rangeley/gpio.h"
|
#include "southbridge/intel/fsp_rangeley/gpio.h"
|
||||||
#include "southbridge/intel/fsp_rangeley/romstage.h"
|
#include "southbridge/intel/fsp_rangeley/romstage.h"
|
||||||
#include <cpu/x86/msr.h>
|
#include <cpu/x86/msr.h>
|
||||||
|
#include <cpu/x86/smm.h>
|
||||||
#include "gpio.h"
|
#include "gpio.h"
|
||||||
|
|
||||||
void main(FSP_INFO_HEADER *fsp_info_header)
|
void main(FSP_INFO_HEADER *fsp_info_header)
|
||||||
|
@ -121,9 +122,11 @@ void romstage_main_continue(EFI_STATUS status, void *hob_list_ptr) {
|
||||||
*(u32*)cbmem_hob_ptr = (u32)hob_list_ptr;
|
*(u32*)cbmem_hob_ptr = (u32)hob_list_ptr;
|
||||||
post_code(0x4e);
|
post_code(0x4e);
|
||||||
|
|
||||||
post_code(0x4f);
|
if (CONFIG(SMM_TSEG))
|
||||||
|
smm_list_regions();
|
||||||
|
|
||||||
/* Load the ramstage. */
|
/* Load the ramstage. */
|
||||||
|
post_code(0x4f);
|
||||||
run_ramstage();
|
run_ramstage();
|
||||||
while (1);
|
while (1);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue