Re: 2.6.13-rc3-mm3

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

 



Could you try the following patch? I think the problem was that higher 
addressses were not mappable via the page fault handler. This patch 
inserts the pmd entry into the pgd as necessary if the pud level is 
folded.

Signed-off-by: Christoph Lameter <[email protected]>

Index: linux-2.6.13-rc4/mm/memory.c
===================================================================
--- linux-2.6.13-rc4.orig/mm/memory.c	2005-08-03 17:08:29.000000000 -0700
+++ linux-2.6.13-rc4/mm/memory.c	2005-08-03 17:15:22.000000000 -0700
@@ -2144,9 +2144,16 @@
 	 */
 	page_table_atomic_start(mm);
 	pgd = pgd_offset(mm, address);
-#ifndef __PAGETABLE_PUD_FOLDED
 	if (unlikely(pgd_none(*pgd))) {
+#ifdef __PAGETABLE_PUD_FOLDED
+		/* If the pud is folded then we need to insert a pmd entry into
+		 * a pgd. pud_none(pgd) == 0 so the next if statement will never
+		 * be taken
+		 */
+		pmd_t *new;
+#else
 		pud_t *new;
+#endif
 
 		page_table_atomic_stop(mm);
 		new = pud_alloc_one(mm, address);
@@ -2158,7 +2165,6 @@
 		if (!pgd_test_and_populate(mm, pgd, new))
 			pud_free(new);
 	}
-#endif
 
 	pud = pud_offset(pgd, address);
 	if (unlikely(pud_none(*pud))) {
Index: linux-2.6.13-rc4/include/asm-generic/4level-fixup.h
===================================================================
--- linux-2.6.13-rc4.orig/include/asm-generic/4level-fixup.h	2005-08-03 17:06:01.000000000 -0700
+++ linux-2.6.13-rc4/include/asm-generic/4level-fixup.h	2005-08-03 17:09:38.000000000 -0700
@@ -27,6 +27,7 @@
 #define pud_ERROR(pud)			do { } while (0)
 #define pud_clear(pud)			pgd_clear(pud)
 #define pud_populate			pgd_populate
+#define pud_alloc_one			pmd_alloc_one
 
 #undef pud_free_tlb
 #define pud_free_tlb(tlb, x)            do { } while (0)
-
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]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]
  Powered by Linux