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

-gerrit

commit e324fee81bce980ef09c4b8936c778f0667420eb
Author: Aaron Durbin <[email protected]>
Date:   Tue Dec 18 17:01:57 2012 -0600

    x86: improve lb_cleanup_memory_ranges
    
    There are 2 issues in lb_cleanup_memory_ranges(). The first
    is that during sort there is a neighbor comparison that initially
    starts with the current entry. The second issue is that merging
    has an off by one comparison for adjacent entries.
    
    Before:
        coreboot memory table:
         0. 0000000000000000-0000000000000fff: CONFIGURATION TABLES
         1. 0000000000001000-000000000009ffff: RAM
         2. 00000000000a0000-00000000000fffff: RESERVED
         3. 0000000000100000-0000000000efffff: RAM
         4. 0000000000f00000-0000000000ffffff: RESERVED
         5. 0000000001000000-00000000acebffff: RAM
         6. 00000000acec0000-00000000acffffff: CONFIGURATION TABLES
         7. 00000000ad000000-00000000af9fffff: RESERVED
         8. 00000000f0000000-00000000f3ffffff: RESERVED
         9. 00000000fed10000-00000000fed17fff: RESERVED
        10. 00000000fed18000-00000000fed18fff: RESERVED
        11. 00000000fed19000-00000000fed19fff: RESERVED
        12. 00000000fed84000-00000000fed84fff: RESERVED
        13. 0000000100000000-000000018f5fffff: RAM
    
    After:
        coreboot memory table:
         0. 0000000000000000-0000000000000fff: CONFIGURATION TABLES
         1. 0000000000001000-000000000009ffff: RAM
         2. 00000000000a0000-00000000000fffff: RESERVED
         3. 0000000000100000-0000000000efffff: RAM
         4. 0000000000f00000-0000000000ffffff: RESERVED
         5. 0000000001000000-00000000acebffff: RAM
         6. 00000000acec0000-00000000acffffff: CONFIGURATION TABLES
         7. 00000000ad000000-00000000af9fffff: RESERVED
         8. 00000000f0000000-00000000f3ffffff: RESERVED
         9. 00000000fed10000-00000000fed19fff: RESERVED
        10. 00000000fed84000-00000000fed84fff: RESERVED
        11. 0000000100000000-000000018f5fffff: RAM
    
    Change-Id: I656aab61b0ed4711c9dceaedb81c290d040ffdec
    Signed-off-by: Aaron Durbin <[email protected]>
---
 src/arch/x86/boot/coreboot_table.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/arch/x86/boot/coreboot_table.c 
b/src/arch/x86/boot/coreboot_table.c
index e456e1e..ebeef2d 100644
--- a/src/arch/x86/boot/coreboot_table.c
+++ b/src/arch/x86/boot/coreboot_table.c
@@ -414,7 +414,7 @@ static void lb_cleanup_memory_ranges(struct lb_memory *mem)
        /* Sort the lb memory ranges */
        for(i = 0; i < entries; i++) {
                uint64_t entry_start = unpack_lb64(mem->map[i].start);
-               for(j = i; j < entries; j++) {
+               for(j = i + 1; j < entries; j++) {
                        uint64_t temp_start = unpack_lb64(mem->map[j].start);
                        if (temp_start < entry_start) {
                                struct lb_memory_range tmp;
@@ -435,7 +435,7 @@ static void lb_cleanup_memory_ranges(struct lb_memory *mem)
                end    = start + unpack_lb64(mem->map[i].size);
                nstart = unpack_lb64(mem->map[i + 1].start);
                nend   = nstart + unpack_lb64(mem->map[i + 1].size);
-               if ((start <= nstart) && (end > nstart)) {
+               if ((start <= nstart) && (end >= nstart)) {
                        if (start > nstart) {
                                start = nstart;
                        }

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

Reply via email to