summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cpu/x86/smm/tseg_region.c9
-rw-r--r--src/lib/ext_stage_cache.c4
2 files changed, 7 insertions, 6 deletions
diff --git a/src/cpu/x86/smm/tseg_region.c b/src/cpu/x86/smm/tseg_region.c
index 413d5fcb8b..90e61dc426 100644
--- a/src/cpu/x86/smm/tseg_region.c
+++ b/src/cpu/x86/smm/tseg_region.c
@@ -53,8 +53,6 @@ int smm_subregion(int sub, uintptr_t *start, size_t *size)
sub_size = ied_size;
break;
default:
- *start = 0;
- *size = 0;
return -1;
}
@@ -65,11 +63,10 @@ int smm_subregion(int sub, uintptr_t *start, size_t *size)
void stage_cache_external_region(void **base, size_t *size)
{
- if (smm_subregion(SMM_SUBREGION_CACHE, (uintptr_t *)base, size)) {
+ *base = NULL;
+ *size = 0;
+ if (smm_subregion(SMM_SUBREGION_CACHE, (uintptr_t *)base, size))
printk(BIOS_ERR, "No cache SMM subregion.\n");
- *base = NULL;
- *size = 0;
- }
}
void smm_list_regions(void)
diff --git a/src/lib/ext_stage_cache.c b/src/lib/ext_stage_cache.c
index 462a635dc8..427c9c30bb 100644
--- a/src/lib/ext_stage_cache.c
+++ b/src/lib/ext_stage_cache.c
@@ -16,6 +16,8 @@ static void stage_cache_create_empty(void)
imd = &imd_stage_cache;
stage_cache_external_region(&base, &size);
+ if (base == NULL || size == 0)
+ return;
imd_handle_init(imd, (void *)(size + (uintptr_t)base));
printk(BIOS_DEBUG, "External stage cache:\n");
@@ -32,6 +34,8 @@ static void stage_cache_recover(void)
imd = &imd_stage_cache;
stage_cache_external_region(&base, &size);
+ if (base == NULL || size == 0)
+ return;
imd_handle_init(imd, (void *)(size + (uintptr_t)base));
if (imd_recover(imd))
printk(BIOS_DEBUG, "Unable to recover external stage cache.\n");