patch-2.4.23 linux-2.4.23/arch/alpha/mm/init.c
Next file: linux-2.4.23/arch/arm/config.in
Previous file: linux-2.4.23/arch/alpha/kernel/sys_nautilus.c
Back to the patch index
Back to the overall index
- Lines: 26
- Date:
2003-11-28 10:26:19.000000000 -0800
- Orig file:
linux-2.4.22/arch/alpha/mm/init.c
- Orig date:
2003-06-13 07:51:29.000000000 -0700
diff -urN linux-2.4.22/arch/alpha/mm/init.c linux-2.4.23/arch/alpha/mm/init.c
@@ -234,7 +234,8 @@
/* Allocate one PGD and one PMD. In the case of SRM, we'll need
these to actually remap the console. There is an assumption
here that only one of each is needed, and this allows for 8MB.
- Currently (late 1999), big consoles are still under 4MB.
+ On systems with larger consoles, additional pages will be
+ allocated as needed during the mapping process.
In the case of not SRM, but not CONFIG_ALPHA_LARGE_VMALLOC,
we need to allocate the PGD we use for vmalloc before we start
@@ -261,6 +262,15 @@
unsigned long paddr = crb->map[i].pa;
crb->map[i].va = vaddr;
for (j = 0; j < crb->map[i].count; ++j) {
+ /* Newer console's (especially on larger
+ systems) may require more pages of
+ PTEs. Grab additional pages as needed. */
+ if (pmd != pmd_offset(pgd, vaddr)) {
+ memset(kernel_end, 0, PAGE_SIZE);
+ pmd = pmd_offset(pgd, vaddr);
+ pmd_set(pmd, (pte_t *)kernel_end);
+ kernel_end += PAGE_SIZE;
+ }
set_pte(pte_offset(pmd, vaddr),
mk_pte_phys(paddr, PAGE_KERNEL));
paddr += PAGE_SIZE;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)