From bbba201165caa3a666dad98b9b28051b03333f62 Mon Sep 17 00:00:00 2001 From: Kyösti Mälkki Date: Fri, 11 Nov 2022 19:46:05 +0200 Subject: cpu/x86/smm: Use common SMM_ASEG region MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Idca56583c1c8dc41ad11d915ec3e8be781fb4e48 Signed-off-by: Kyösti Mälkki Reviewed-on: https://review.coreboot.org/c/coreboot/+/69665 Tested-by: build bot (Jenkins) Reviewed-by: Arthur Heymans --- src/cpu/x86/smm/Makefile.inc | 4 ---- src/cpu/x86/smm/smm_module_loader.c | 5 ----- src/cpu/x86/smm/tseg_region.c | 7 ++++++- 3 files changed, 6 insertions(+), 10 deletions(-) (limited to 'src/cpu/x86') diff --git a/src/cpu/x86/smm/Makefile.inc b/src/cpu/x86/smm/Makefile.inc index da93827274..327b6c6720 100644 --- a/src/cpu/x86/smm/Makefile.inc +++ b/src/cpu/x86/smm/Makefile.inc @@ -29,14 +29,10 @@ endif smm-y += save_state.c -ifeq ($(CONFIG_SMM_TSEG),y) - ramstage-y += tseg_region.c romstage-y += tseg_region.c postcar-y += tseg_region.c -endif - ifeq ($(CONFIG_PARALLEL_MP),y) smmstub-y += smm_stub.S diff --git a/src/cpu/x86/smm/smm_module_loader.c b/src/cpu/x86/smm/smm_module_loader.c index 6f334a2e81..6924f08e78 100644 --- a/src/cpu/x86/smm/smm_module_loader.c +++ b/src/cpu/x86/smm/smm_module_loader.c @@ -409,11 +409,6 @@ static int append_and_check_region(const struct region smram, int smm_load_module(const uintptr_t smram_base, const size_t smram_size, struct smm_loader_params *params) { - if (CONFIG(SMM_ASEG) && (smram_base != SMM_BASE || smram_size != SMM_CODE_SEGMENT_SIZE)) { - printk(BIOS_ERR, "SMM base & size are 0x%lx, 0x%zx, but must be 0x%x, 0x%x\n", - smram_base, smram_size, SMM_BASE, SMM_CODE_SEGMENT_SIZE); - return -1; - } /* * Place in .bss to reduce stack usage. * TODO: once CPU_INFO_V2 is used everywhere, use smaller stack for APs and move diff --git a/src/cpu/x86/smm/tseg_region.c b/src/cpu/x86/smm/tseg_region.c index f6aecd0557..413d5fcb8b 100644 --- a/src/cpu/x86/smm/tseg_region.c +++ b/src/cpu/x86/smm/tseg_region.c @@ -26,7 +26,12 @@ int smm_subregion(int sub, uintptr_t *start, size_t *size) const size_t ied_size = CONFIG_IED_REGION_SIZE; const size_t cache_size = CONFIG_SMM_RESERVED_SIZE; - smm_region(&sub_base, &sub_size); + if (CONFIG(SMM_TSEG)) + smm_region(&sub_base, &sub_size); + else if (CONFIG(SMM_ASEG)) + aseg_region(&sub_base, &sub_size); + else + return -1; ASSERT(IS_ALIGNED(sub_base, sub_size)); ASSERT(sub_size > (cache_size + ied_size)); -- cgit v1.2.3