[PATCH 2/2] Use page present for pae pdpes
From: Zachary Amsden (zach_at_vmware.com)
Date: 08/31/05
- Previous message: Jim Keniston: "[PATCH] Fix kprobes handling of simultaneous probe hit/unregister"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Wed, 31 Aug 2005 14:51:48 -0700 To: Andrew Morton <akpm@osdl.org>, Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Virtualization Mailing List <virtualization@lists.osdl.org>, "H. Peter Anvin" <hpa@zytor.com>, Zwane Mwaikambo <zwane@arm.linux.org.uk>, Chris Wright <chrisw@osdl.org>, Martin Bligh <mbligh@mbligh.org>, Pratap Subrahmanyam <pratap@vmware.com>, Christopher Li <chrisl@vmware.com>, Zachary Amsden <zach@vmware.com>, Zachary Amsden <zach@vmware.com>
Ok, the use of "1 + " and subtraction of one for PAE PDPEs has confused
many people now. Make it explicit what is going on and why anding with
PAGE_MASK is a better idea to strip these bits.
Signed-off-by: Zachary Amsden <zach@vmware.com>
Depends-on: add-pgtable-allocation-notifiers
Index: linux-2.6.13/arch/i386/mm/pgtable.c
===================================================================
--- linux-2.6.13.orig/arch/i386/mm/pgtable.c 2005-08-31 14:48:17.000000000 -0700
+++ linux-2.6.13/arch/i386/mm/pgtable.c 2005-08-31 14:48:53.000000000 -0700
@@ -247,14 +247,14 @@ pgd_t *pgd_alloc(struct mm_struct *mm)
if (!pmd)
goto out_oom;
SetPagePDE(virt_to_page(pmd));
- set_pgd(&pgd[i], __pgd(1 + __pa(pmd)));
+ set_pgd(&pgd[i], __pgd(_PAGE_PRESENT | __pa(pmd)));
}
return pgd;
out_oom:
for (i--; i >= 0; i--) {
ClearPagePDE(pfn_to_page(pgd_val(pgd[i]) >> PAGE_SHIFT));
- kmem_cache_free(pmd_cache, (void *)__va(pgd_val(pgd[i])-1));
+ kmem_cache_free(pmd_cache, (void *)__va(pgd_val(pgd[i]) & PAGE_MASK));
}
kmem_cache_free(pgd_cache, pgd);
return NULL;
@@ -268,7 +268,7 @@ void pgd_free(pgd_t *pgd)
if (PTRS_PER_PMD > 1)
for (i = 0; i < USER_PTRS_PER_PGD; ++i) {
ClearPagePDE(pfn_to_page(pgd_val(pgd[i]) >> PAGE_SHIFT));
- kmem_cache_free(pmd_cache, (void *)__va(pgd_val(pgd[i])-1));
+ kmem_cache_free(pmd_cache, (void *)__va(pgd_val(pgd[i]) & PAGE_MASK));
}
/* in the non-PAE case, free_pgtables() clears user pgd entries */
kmem_cache_free(pgd_cache, pgd);
Index: linux-2.6.13/arch/i386/mm/init.c
===================================================================
--- linux-2.6.13.orig/arch/i386/mm/init.c 2005-08-31 14:48:17.000000000 -0700
+++ linux-2.6.13/arch/i386/mm/init.c 2005-08-31 14:48:53.000000000 -0700
@@ -387,7 +387,7 @@ void zap_low_mappings (void)
*/
for (i = 0; i < USER_PTRS_PER_PGD; i++)
#ifdef CONFIG_X86_PAE
- set_pgd(swapper_pg_dir+i, __pgd(1 + __pa(empty_zero_page)));
+ set_pgd(swapper_pg_dir+i, __pgd(_PAGE_PRESENT | __pa(empty_zero_page)));
#else
set_pgd(swapper_pg_dir+i, __pgd(0));
#endif
-
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/
- Previous message: Jim Keniston: "[PATCH] Fix kprobes handling of simultaneous probe hit/unregister"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
- Re: Stupid question
... >I added those in so that they were explicit. ... >They do no harm.
... Copyright 2004 by Maurice Eugene Heskett, ... send the line "unsubscribe
linux-kernel" in ... (Linux-Kernel) - Re: [RFC] [PATCH] cache pollution aware __copy_from_user_ll()
... > the problem is that the pay elsewhere is far more spread out, ... >
the cpu ... doing this explicit makes a lot of sense. ... send the line "unsubscribe
linux-kernel" in ... (Linux-Kernel) - Re: [RFD] Explicitly documenting patch submission
... > agree on the license. ... By submitting a patch to a maintainer,
... is to _document_ it, and make it _explicit_. ... send the line "unsubscribe
linux-kernel" in ... (Linux-Kernel) - Re: [PATCH][I2C] Marvell mv64xxx i2c driver
... > I can't find any definitive policy on this. ... I kind of like the explicit
... > Attached is a replacement patch. ... send the line "unsubscribe linux-kernel"
in ... (Linux-Kernel) - Re: ntfs: remove redundant assignments
... > the compiler thinks it is the same. ... Let me play the devils advocate
here: why do you memset() (now ... There's a simple reason why I don't like explicit
assignments: ... send the line "unsubscribe linux-kernel" in ... (Linux-Kernel)