* [PATCH] make sure all PMDs are allocated under PAE mode
@ 2002-12-04 21:36 ` Martin J. Bligh
0 siblings, 0 replies; 2+ messages in thread
From: Martin J. Bligh @ 2002-12-04 21:36 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kernel, linux-mm mailing list, haveblue
Below is a bugfix I found for a problem Dave Hansen was hitting
when using PAE mode on a 1Gb RAM box. Basically if we change
PAGE_OFFSET to have more than 1Gb of KVA in excess of the
physical ram used, we forget to instantiate the upper PMDs.
(The PMDs for kernel space seem to be created only if there's
physical ram against them, but we also need them for the vmalloc
space).
The change below makes us walk from PAGE_OFFSET up to the top
of virtual address space (instead of up to the top of phys ram),
and ignores the rest of the loop apart from the PMD alloc for
that upper region (above the 1-1 phys-virt mapping region).
Thanks to Dave for doing the actual patch creation and testing.
It's designed to be minimally invasive, rather than desperately
efficient.
M.
diff -Nru a/arch/i386/mm/init.c b/arch/i386/mm/init.c
--- a/arch/i386/mm/init.c Tue Dec 3 15:54:44 2002
+++ b/arch/i386/mm/init.c Tue Dec 3 15:54:44 2002
@@ -134,8 +134,10 @@
pgd = pgd_base + pgd_ofs;
pfn = 0;
- for (; pgd_ofs < PTRS_PER_PGD && pfn < max_low_pfn; pgd++, pgd_ofs++) {
+ for (; pgd_ofs < PTRS_PER_PGD; pgd++, pgd_ofs++) {
pmd = one_md_table_init(pgd);
+ if (pfn >= max_low_pfn)
+ continue;
for (pmd_ofs = 0; pmd_ofs < PTRS_PER_PMD && pfn < max_low_pfn; pmd++, pmd_ofs++) {
/* Map with big pages if possible, otherwise create normal page tables. */
if (cpu_has_pse) {
^ permalink raw reply [flat|nested] 2+ messages in thread
* [PATCH] make sure all PMDs are allocated under PAE mode
@ 2002-12-04 21:36 ` Martin J. Bligh
0 siblings, 0 replies; 2+ messages in thread
From: Martin J. Bligh @ 2002-12-04 21:36 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kernel, linux-mm mailing list, haveblue
Below is a bugfix I found for a problem Dave Hansen was hitting
when using PAE mode on a 1Gb RAM box. Basically if we change
PAGE_OFFSET to have more than 1Gb of KVA in excess of the
physical ram used, we forget to instantiate the upper PMDs.
(The PMDs for kernel space seem to be created only if there's
physical ram against them, but we also need them for the vmalloc
space).
The change below makes us walk from PAGE_OFFSET up to the top
of virtual address space (instead of up to the top of phys ram),
and ignores the rest of the loop apart from the PMD alloc for
that upper region (above the 1-1 phys-virt mapping region).
Thanks to Dave for doing the actual patch creation and testing.
It's designed to be minimally invasive, rather than desperately
efficient.
M.
diff -Nru a/arch/i386/mm/init.c b/arch/i386/mm/init.c
--- a/arch/i386/mm/init.c Tue Dec 3 15:54:44 2002
+++ b/arch/i386/mm/init.c Tue Dec 3 15:54:44 2002
@@ -134,8 +134,10 @@
pgd = pgd_base + pgd_ofs;
pfn = 0;
- for (; pgd_ofs < PTRS_PER_PGD && pfn < max_low_pfn; pgd++, pgd_ofs++) {
+ for (; pgd_ofs < PTRS_PER_PGD; pgd++, pgd_ofs++) {
pmd = one_md_table_init(pgd);
+ if (pfn >= max_low_pfn)
+ continue;
for (pmd_ofs = 0; pmd_ofs < PTRS_PER_PMD && pfn < max_low_pfn; pmd++, pmd_ofs++) {
/* Map with big pages if possible, otherwise create normal page tables. */
if (cpu_has_pse) {
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2002-12-04 21:36 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-12-04 21:36 [PATCH] make sure all PMDs are allocated under PAE mode Martin J. Bligh
2002-12-04 21:36 ` Martin J. Bligh
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.