Marshall Dawson has uploaded this change for review. ( https://review.coreboot.org/23517
Change subject: lib/stage_cache: Add debug messages for failures ......................................................................
lib/stage_cache: Add debug messages for failures
Communicate additional status to the console when the save and load functions do not function as expected. The most likely scenario for an error is when using a cache that is external to cbmem, and restricted in size.
Change-Id: Ic9a709c11152b3b9cb40abfc204151f9636b5a4c Signed-off-by: Marshall Dawson marshalldawson3rd@gmail.com --- M src/lib/cbmem_stage_cache.c M src/lib/ext_stage_cache.c 2 files changed, 32 insertions(+), 8 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/17/23517/1
diff --git a/src/lib/cbmem_stage_cache.c b/src/lib/cbmem_stage_cache.c index 2947972..cc4832f 100644 --- a/src/lib/cbmem_stage_cache.c +++ b/src/lib/cbmem_stage_cache.c @@ -25,15 +25,21 @@ void *c;
meta = cbmem_add(CBMEM_ID_STAGEx_META + stage_id, sizeof(*meta)); - if (meta == NULL) + if (meta == NULL) { + printk(BIOS_ERR, "Error: Can't add %x metadata to cbmem\n", + CBMEM_ID_STAGEx_META + stage_id); return; + } meta->load_addr = (uintptr_t)prog_start(stage); meta->entry_addr = (uintptr_t)prog_entry(stage); meta->arg = (uintptr_t)prog_entry_arg(stage);
c = cbmem_add(CBMEM_ID_STAGEx_CACHE + stage_id, prog_size(stage)); - if (c == NULL) + if (c == NULL) { + printk(BIOS_ERR, "Error: Can't add stage_cache %x to cbmem\n", + CBMEM_ID_STAGEx_CACHE + stage_id); return; + }
memcpy(c, prog_start(stage), prog_size(stage)); } @@ -49,13 +55,19 @@ prog_set_entry(stage, NULL, NULL);
meta = cbmem_find(CBMEM_ID_STAGEx_META + stage_id); - if (meta == NULL) + if (meta == NULL) { + printk(BIOS_ERR, "Error: Can't find %x metadata in cbmem\n", + CBMEM_ID_STAGEx_META + stage_id); return; + }
e = cbmem_entry_find(CBMEM_ID_STAGEx_CACHE + stage_id);
- if (e == NULL) + if (e == NULL) { + printk(BIOS_ERR, "Error: Can't find stage_cache %x in cbmem\n", + CBMEM_ID_STAGEx_CACHE + stage_id); return; + }
c = cbmem_entry_start(e); size = cbmem_entry_size(e); diff --git a/src/lib/ext_stage_cache.c b/src/lib/ext_stage_cache.c index 2a99188..cea9f52 100644 --- a/src/lib/ext_stage_cache.c +++ b/src/lib/ext_stage_cache.c @@ -68,8 +68,11 @@ imd = imd_get(); e = imd_entry_add(imd, CBMEM_ID_STAGEx_META + stage_id, sizeof(*meta));
- if (e == NULL) + if (e == NULL) { + printk(BIOS_DEBUG, "Error: Can't add %x metadata to imd\n", + CBMEM_ID_STAGEx_META + stage_id); return; + }
meta = imd_entry_at(imd, e);
@@ -79,8 +82,11 @@ e = imd_entry_add(imd, CBMEM_ID_STAGEx_CACHE + stage_id, prog_size(stage));
- if (e == NULL) + if (e == NULL) { + printk(BIOS_DEBUG, "Error: Can't add stage_cache %x to imd\n", + CBMEM_ID_STAGEx_CACHE + stage_id); return; + }
c = imd_entry_at(imd, e);
@@ -97,15 +103,21 @@
imd = imd_get(); e = imd_entry_find(imd, CBMEM_ID_STAGEx_META + stage_id); - if (e == NULL) + if (e == NULL) { + printk(BIOS_DEBUG, "Error: Can't find %x metadata in imd\n", + CBMEM_ID_STAGEx_META + stage_id); return; + }
meta = imd_entry_at(imd, e);
e = imd_entry_find(imd, CBMEM_ID_STAGEx_CACHE + stage_id);
- if (e == NULL) + if (e == NULL) { + printk(BIOS_DEBUG, "Error: Can't find stage_cache %x in imd\n", + CBMEM_ID_STAGEx_CACHE + stage_id); return; + }
c = imd_entry_at(imd, e); size = imd_entry_size(imd, e);