Marshall Dawson has uploaded this change for review.

View Change

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);

To view, visit change 23517. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic9a709c11152b3b9cb40abfc204151f9636b5a4c
Gerrit-Change-Number: 23517
Gerrit-PatchSet: 1
Gerrit-Owner: Marshall Dawson <marshalldawson3rd@gmail.com>