linux-stable-rt/arch/arm/kernel
Russell King 058ddee562 [ARM] Fix SMP booting with non-zero PHYS_OFFSET
The existing code tries to get the pmd for the temporary page table
by doing:

        pgd = pgd_alloc(&init_mm);
        pmd = pmd_offset(pgd, PHYS_OFFSET);

Since we have a two level page table, pmd_offset() is a no-op, so
this just has a casting effect from a pgd to a pmd - the address
argument is unused.  So this can't work.

Normally, we'd do:

	pgd = pgd_offset(&init_mm, PHYS_OFFSET);
	...
	pmd = pmd_offset(pgd, PHYS_OFFSET);

to get the pmd you want.  However, pgd_offset() takes the mm_struct,
not the (unattached) pgd we just allocated.  So, instead use:

        pgd = pgd_alloc(&init_mm);
        pmd = pmd_offset(pgd + pgd_index(PHYS_OFFSET), PHYS_OFFSET);

Reported-by: Antti P Miettinen <ananaza@iki.fi>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-08-07 22:36:59 +01:00
..
Makefile kgdb: support for ARCH=arm 2008-07-23 11:30:15 -05:00
armksyms.c
arthur.c
asm-offsets.c
atags.c
atags.h
bios32.c
calls.S
compat.c
compat.h
crunch-bits.S [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
crunch.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
debug.S [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
dma-isa.c
dma.c
ecard.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
ecard.h
entry-armv.S [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
entry-common.S [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
entry-header.S
fiq.c
ftrace.c
head-common.S [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
head-nommu.S [ARM] Eliminate useless includes of asm/mach-types.h 2008-08-07 09:40:04 +01:00
head.S
init_task.c
io.c
irq.c [ARM] Fix circular include dependency with IRQ headers 2008-08-07 09:39:37 +01:00
isa.c
iwmmxt.S
kgdb.c kgdb: support for ARCH=arm 2008-07-23 11:30:15 -05:00
kprobes-decode.c
kprobes.c kprobes: improve kretprobe scalability with hashed locking 2008-07-25 10:53:30 -07:00
machine_kexec.c
module.c PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures 2008-07-24 10:47:21 -07:00
process.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
ptrace.c
ptrace.h
relocate_kernel.S
setup.c kgdb: support for ARCH=arm 2008-07-23 11:30:15 -05:00
signal.c
signal.h
smp.c [ARM] Fix SMP booting with non-zero PHYS_OFFSET 2008-08-07 22:36:59 +01:00
stacktrace.c
stacktrace.h
sys_arm.c
sys_oabi-compat.c
thumbee.c
time.c sysdev: Pass the attribute to the low level sysdev show/store function 2008-07-21 21:55:02 -07:00
traps.c kgdb: support for ARCH=arm 2008-07-23 11:30:15 -05:00
vmlinux.lds.S
xscale-cp0.c