Stefan Reinauer ([email protected]) just uploaded a new patch set to 
gerrit, which you can find at http://review.coreboot.org/1270

-gerrit

commit 32c4db41bfa7a53adfbfcc2a4f1d4baf124c70fc
Author: Ronald G. Minnich <[email protected]>
Date:   Thu May 31 16:02:26 2012 -0700

    Make memalign print useful messages on failure
    
    Brevity is the soul of wit, except for error messages;
    then it's a sign of witlessness. I can say this because
    this error message may be my fault, although it is lost
    in the 20th century code base so who knows.
    
    Anyway, when memalign dies, it's not a bad idea to have
    a lot of information about what went wrong. So instead
    of the terse single bit of "something failed" this patch
    changes things to be a bit more useful.
    
    Change-Id: I8851502297e0ae9773912839ebfdf4f9574c8087
    Signed-off-by: Ronald G. Minnich <[email protected]>
---
 src/lib/malloc.c |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/lib/malloc.c b/src/lib/malloc.c
index 2e700f7..4115738 100644
--- a/src/lib/malloc.c
+++ b/src/lib/malloc.c
@@ -18,7 +18,7 @@ void *memalign(size_t boundary, size_t size)
 {
        void *p;
 
-       MALLOCDBG("%s Enter, boundary %ld, size %ld, free_mem_ptr %p\n",
+       MALLOCDBG("%s Enter, boundary %zu, size %zu, free_mem_ptr %p\n",
                __func__, boundary, size, free_mem_ptr);
 
        /* Overzealous linker check */
@@ -30,8 +30,15 @@ void *memalign(size_t boundary, size_t size)
        p = free_mem_ptr;
        free_mem_ptr += size;
 
-       if (free_mem_ptr >= free_mem_end_ptr)
+       if (free_mem_ptr >= free_mem_end_ptr) {
+               printk(BIOS_ERR, "memalign(boundary=%zu, size=%zu): failed: ",
+                               boundary, size);
+               printk(BIOS_ERR, "Tried to round up free_mem_ptr %p to %p\n",
+                               p, free_mem_ptr);
+               printk(BIOS_ERR, "but free_mem_end_ptr is %p\n",
+                               free_mem_end_ptr);
                die("Error! memalign: Out of memory (free_mem_ptr >= 
free_mem_end_ptr)");
+       }
 
        MALLOCDBG("memalign %p\n", p);
 

-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to