Messages in this thread Patch in this message | | | Date | Tue, 20 Jun 2006 15:30:03 +0200 | From | Edgar Hucek <> | Subject | [PATCH 1/1] Fix boot on efi 32 bit Machines |
| |
Fix EFI boot on 32 bit machines with pcie port. Efi machines does not have an e820 memory map.
Signed-off-by: Edgar Hucek <hostmaster@ed-soft.at> --- a/arch/i386/kernel/setup.c 2006-06-19 09:12:09.000000000 +0200 +++ b/arch/i386/kernel/setup.c 2006-06-19 09:12:24.000000000 +0200 @@ -975,24 +975,28 @@ u64 start = s; u64 end = e; int i; - for (i = 0; i < e820.nr_map; i++) { - struct e820entry *ei = &e820.map[i]; - if (type && ei->type != type) - continue; - /* is the region (part) in overlap with the current region ?*/ - if (ei->addr >= end || ei->addr + ei->size <= start) - continue; - /* if the region is at the beginning of <start,end> we move - * start to the end of the region since it's ok until there - */ - if (ei->addr <= start) - start = ei->addr + ei->size; - /* if start is now at or beyond end, we're done, full - * coverage */ - if (start >= end) - return 1; /* we're done */ + if(!efi_enabled) { + for (i = 0; i < e820.nr_map; i++) { + struct e820entry *ei = &e820.map[i]; + if (type && ei->type != type) + continue; + /* is the region (part) in overlap with the current region ?*/ + if (ei->addr >= end || ei->addr + ei->size <= start) + continue; + /* if the region is at the beginning of <start,end> we move + * start to the end of the region since it's ok until there + */ + if (ei->addr <= start) + start = ei->addr + ei->size; + /* if start is now at or beyond end, we're done, full + * coverage */ + if (start >= end) + return 1; /* we're done */ + } + return 0; + } else { + return 1; } - return 0; } /* | |