diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cpu/x86/smm/tseg_region.c | 9 | ||||
-rw-r--r-- | src/lib/ext_stage_cache.c | 4 |
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"); |