Re: [PATCH 1/1] Fix boot on efi 32 bit Machines [try #2]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 23 Jun 2006 11:43:02 +0200, Edgar Hucek wrote:
>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 <[email protected]>
>
>--- 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;
> }

It looks like all this patch does is to put the existing
for() loop inside an "if (!efi_enabled)", changing its
indentation in the process. It would be MUCH cleaner to
just prefix the original e820 code with an

	if (efi_enabled)
		return 1;

statement. It reduces the size of the patch, and makes it
clear that none of the existing e820 code is altered.

/Mikael
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux