Browse Source

x86: fix WARN_ON() message: teach page_is_ram() about the special 4Kb bios data page

This patch teaches page_is_ram() about the fact that the first
4Kb of memory are special on x86, even though the E820 table
normally doesn't exclude it.

This fixes the WARN_ON() reported by Laurent Riffard who was also
very helpful in diagnosing the issue.

[ mingo@elte.hu: we are working on doing this properly in the e820
  space, but for 2.6.25 this is the better fix. ]

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Arjan van de Ven 17 years ago
parent
commit
d8a9e6a51e
1 changed files with 9 additions and 0 deletions
  1. 9 0
      arch/x86/mm/ioremap.c

+ 9 - 0
arch/x86/mm/ioremap.c

@@ -42,6 +42,15 @@ int page_is_ram(unsigned long pagenr)
 	unsigned long addr, end;
 	int i;
 
+	/*
+	 * A special case is the first 4Kb of memory;
+	 * This is a BIOS owned area, not kernel ram, but generally
+	 * not listed as such in the E820 table.
+	 */
+	if (pagenr == 0)
+		return 0;
+
+
 	for (i = 0; i < e820.nr_map; i++) {
 		/*
 		 * Not usable memory: