kernel-ark/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
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
cpuid.c [PATCH] i386: use smp_call_function_single() 2007-02-13 13:26:23 +01:00
crash_dump.c
crash.c
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
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
i8237.c
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
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
machine_kexec.c
Makefile [PATCH] i386: No need to use -traditional for processing asm in i386/kernel/ 2007-05-02 19:27:05 +02:00
mca.c
microcode.c [PATCH] Fix microcode-related suspend problem 2007-04-02 10:06:09 -07:00
module.c
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
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
scx200.c
setup.c [PATCH] clocksource init adjustments (fix bug #7426) 2007-03-05 07:57:53 -08:00
sigframe.h
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
syscall_table.S
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
vsyscall-sysenter.S
vsyscall.lds.S [PATCH] i386: VDSO_PRELINK warning fix 2007-05-02 19:27:09 +02:00
vsyscall.S