linux/arch/i386/kernel
Jeremy Fitzhardinge 9ce8c2ed12 [PATCH] i386: map enough initial memory to create lowmem mappings
head.S creates the very initial pagetable for the kernel.  This just
maps enough space for the kernel itself, and an allocation bitmap.
The amount of mapped memory is rounded up to 4Mbytes, and so this
typically ends up mapping 8Mbytes of memory.

When booting, pagetable_init() needs to create mappings for all
lowmem, and the pagetables for these mappings are allocated from the
free pages around the kernel in low memory.  If the number of
pagetable pages + kernel size exceeds head.S's initial mapping, it
will end up faulting on an unmapped page.  This will only happen with
specific combinations of kernel size and memory size.

This patch makes sure that head.S also maps enough space to fit the
kernel pagetables as well as the kernel itself.  It ends up using an
additional two pages of unreclaimable memory.

Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Acked-by: "H. Peter Anvin" <hpa@zytor.com>
Cc: Andi Kleen <ak@suse.de>
Cc: Zachary Amsden <zach@vmware.com>
Cc: Chris Wright <chrisw@sous-sol.org>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
2007-05-02 19:27:16 +02:00
..
acpi [PATCH] x86: default to physical mode on hotplug CPU kernels 2007-05-02 19:27:04 +02:00
cpu [PATCH] i386: Fix UP gdt bugs 2007-05-02 19:27:16 +02:00
.gitignore [PATCH] x86: gitignore some autogenerated files for i386 2006-02-14 16:09:35 -08:00
alternative.c [PATCH] i386: PARAVIRT: add common patching machinery 2007-05-02 19:27:14 +02:00
apic.c [PATCH] x86-64: Disable local APIC timer use on AMD systems with C1E 2007-04-02 12:14:12 +02:00
apm.c [PATCH] i386: Add machine_ops interface to abstract halting and rebooting 2007-05-02 19:27:11 +02:00
asm-offsets.c [PATCH] i386: map enough initial memory to create lowmem mappings 2007-05-02 19:27:16 +02:00
bootflag.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
cpuid.c [PATCH] i386: use smp_call_function_single() 2007-02-13 13:26:23 +01:00
crash_dump.c [PATCH] kdump: read previous kernel's memory 2006-01-10 08:01:28 -08:00
crash.c [PATCH] Kexec / Kdump: Unify elf note code 2006-12-07 08:39:46 -08:00
doublefault.c [PATCH] i386: i386 separate hardware-defined TSS from Linux additions 2007-05-02 19:27:13 +02:00
e820.c [PATCH] x86: fix amd64-agp aperture validation 2007-05-02 19:27:11 +02:00
early_printk.c
efi_stub.S [PATCH] x86: remove unused include from efi_stub.S 2006-09-26 08:48:56 -07:00
efi.c [PATCH] i386: cleanup GDT Access 2007-05-02 19:27:11 +02:00
entry.S [PATCH] i386: Convert PDA into the percpu section 2007-05-02 19:27:16 +02:00
head.S [PATCH] i386: map enough initial memory to create lowmem mappings 2007-05-02 19:27:16 +02:00
hpet.c [PATCH] Add suspend/resume for HPET 2007-03-29 10:25:32 -07:00
i386_ksyms.c [PATCH] i386: Convert PDA into the percpu section 2007-05-02 19:27:16 +02:00
i387.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
i8237.c [PATCH] mmc (mainly): add "or later" clause to licence statement. 2006-10-01 00:39:23 -07:00
i8253.c [PATCH] i386: clockevents fix breakage on Geode/Cyrix PIT implementations 2007-03-22 19:33:30 -07:00
i8259.c [PATCH] genirq: do not mask interrupts by default 2007-02-16 08:14:00 -08:00
init_task.c [PATCH] nsproxy: move init_nsproxy into kernel/nsproxy.c 2006-10-02 07:57:20 -07:00
io_apic.c [PATCH] x86: remove UNEXPECTED_IO_APIC() 2007-05-02 19:27:11 +02:00
ioport.c [PATCH] i386: i386 separate hardware-defined TSS from Linux additions 2007-05-02 19:27:13 +02:00
irq.c [PATCH] i386: Convert PDA into the percpu section 2007-05-02 19:27:16 +02:00
kprobes.c [PATCH] i386: Kprobe rpl fix 2007-02-13 13:26:21 +01:00
ldt.c [PATCH] i386: remove default_ldt, and simplify ldt-setting. 2006-12-07 02:14:01 +01:00
machine_kexec.c [PATCH] i386: Avoid overwriting the current pgd (V4, i386) 2006-09-26 10:52:38 +02:00
Makefile [PATCH] i386: No need to use -traditional for processing asm in i386/kernel/ 2007-05-02 19:27:05 +02:00
mca.c [PATCH] i386: replace kmalloc+memset with kzalloc 2006-12-07 02:14:19 +01:00
microcode.c [PATCH] Fix microcode-related suspend problem 2007-04-02 10:06:09 -07:00
module.c [PATCH] Generic BUG for i386 2006-12-08 08:28:39 -08:00
mpparse.c [PATCH] x86: default to physical mode on hotplug CPU kernels 2007-05-02 19:27:04 +02:00
msr.c [PATCH] i386: use smp_call_function_single() 2007-02-13 13:26:23 +01:00
nmi.c [PATCH] i386: Remove unneeded externs in nmi.c 2007-05-02 19:27:11 +02:00
numaq.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
paravirt.c [PATCH] i386: PARAVIRT: drop unused ptep_get_and_clear 2007-05-02 19:27:15 +02:00
pci-dma.c [PATCH] fix memory leak in dma_declare_coherent_memory() 2007-03-01 14:53:39 -08:00
pcspeaker.c [PATCH] x86: Unify pcspeaker platform device code between i386/x86-64 2007-02-13 13:26:26 +01:00
process.c [PATCH] i386: Convert PDA into the percpu section 2007-05-02 19:27:16 +02:00
ptrace.c [PATCH] i386: Convert i386 PDA code to use %fs 2007-02-13 13:26:20 +01:00
quirks.c [PATCH] x86: revert x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 2007-05-02 19:27:04 +02:00
reboot_fixups.c [PATCH] i386: clean up mach_reboot_fixups 2007-05-02 19:27:06 +02:00
reboot.c [PATCH] i386: Add machine_ops interface to abstract halting and rebooting 2007-05-02 19:27:11 +02:00
relocate_kernel.S [PATCH] i386: Avoid overwriting the current pgd (V4, i386) 2006-09-26 10:52:38 +02:00
scx200.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
setup.c [PATCH] clocksource init adjustments (fix bug #7426) 2007-03-05 07:57:53 -08:00
sigframe.h [PATCH] __user annotations for pointers in i386 sigframe 2005-09-09 10:31:59 -07:00
signal.c [PATCH] x86: Don't require the vDSO for handling a.out signals 2007-02-13 13:26:26 +01:00
smp.c [PATCH] i386: PARAVIRT: add flush_tlb_others paravirt_op 2007-05-02 19:27:15 +02:00
smpboot.c [PATCH] i386: Fix UP gdt bugs 2007-05-02 19:27:16 +02:00
srat.c ACPI: build fix for IBM x440 - CONFIG_X86_SUMMIT 2007-02-02 21:47:33 -05:00
summit.c
sys_i386.c [PATCH] provide kernel_execve on all architectures 2006-10-02 07:57:23 -07:00
syscall_table.S [PATCH] epoll_pwait() 2006-10-11 11:14:21 -07:00
sysenter.c [PATCH] i386: i386 separate hardware-defined TSS from Linux additions 2007-05-02 19:27:13 +02:00
time.c [PATCH] i386: pit_latch_buggy has no effect 2007-05-02 19:27:05 +02:00
topology.c Replace remaining references to "driverfs" with "sysfs". 2007-02-17 19:13:42 +01:00
trampoline.S [PATCH] i386: Rename boot_gdt_table to boot_gdt 2007-05-02 19:27:10 +02:00
traps.c [PATCH] i386: Page-align the GDT 2007-05-02 19:27:15 +02:00
tsc_sync.c [PATCH] x86: rewrite SMP TSC sync code 2007-02-16 08:13:57 -08:00
tsc.c [PATCH] x86: Log reason why TSC was marked unstable 2007-05-02 19:27:08 +02:00
vm86.c [PATCH] i386: Convert i386 PDA code to use %fs 2007-02-13 13:26:20 +01:00
vmi.c [PATCH] i386: Convert PDA into the percpu section 2007-05-02 19:27:16 +02:00
vmitime.c [PATCH] Scheduled removal of SA_xxx interrupt flags fixups 3 2007-03-06 09:30:24 -08:00
vmlinux.lds.S [PATCH] i386: Convert PDA into the percpu section 2007-05-02 19:27:16 +02:00
vsyscall-int80.S
vsyscall-note.S
vsyscall-sigreturn.S [PATCH] Mark unwind info for signal trampolines in vDSOs 2006-03-31 12:18:52 -08:00
vsyscall-sysenter.S [PATCH] vdso: randomize the i386 vDSO by moving it into a vma 2006-06-27 17:32:38 -07:00
vsyscall.lds.S [PATCH] i386: VDSO_PRELINK warning fix 2007-05-02 19:27:09 +02:00
vsyscall.S