Messages in this thread Patch in this message |  | | | Date | Fri, 23 Jun 2006 11:43:02 +0200 | | From | Edgar Hucek <> | | Subject | [PATCH 1/1] Fix boot on efi 32 bit Machines [try #2] |
| |
Fix EFI boot on 32 bit machines with pcie port. Efi machines does not have an e820 memory map. This bug makes native efi boots on Intel Mac's impossible.
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; } /*
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |