original_kernel/arch/arm/kernel
Colin Cross fde165b2a2 ARM: 7414/1: SMP: prevent use of the console when using idmap_pgd
Commit 4e8ee7de22 (ARM: SMP: use
idmap_pgd for mapping MMU enable during secondary booting)
switched secondary boot to use idmap_pgd, which is initialized
during early_initcall, instead of a page table initialized during
__cpu_up.  This causes idmap_pgd to contain the static mappings
but be missing all dynamic mappings.

If a console is registered that creates a dynamic mapping, the
printk in secondary_start_kernel will trigger a data abort on
the missing mapping before the exception handlers have been
initialized, leading to a hang.  Initial boot is not affected
because no consoles have been registered, and resume is usually
not affected because the offending console is suspended.
Onlining a cpu with hotplug triggers the problem.

A workaround is to the printk in secondary_start_kernel until
after the page tables have been switched back to init_mm.

Cc: <stable@vger.kernel.org>
Signed-off-by: Colin Cross <ccross@android.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2012-05-06 11:10:41 +01:00
..
.gitignore
Makefile
armksyms.c
arthur.c
asm-offsets.c
atags.c
atags.h
bios32.c
calls.S
compat.c
compat.h
cpuidle.c
crash_dump.c
debug.S
devtree.c
dma-isa.c
dma.c
early_printk.c
elf.c
entry-armv.S
entry-common.S
entry-header.S
etm.c
fiq.c
fiqasm.S
ftrace.c
head-common.S
head-nommu.S
head.S
hw_breakpoint.c
init_task.c
insn.c
insn.h
io.c
irq.c
isa.c
iwmmxt.S
jump_label.c
kgdb.c
kprobes-arm.c
kprobes-common.c
kprobes-test-arm.c
kprobes-test-thumb.c
kprobes-test.c
kprobes-test.h
kprobes-thumb.c
kprobes.c
kprobes.h
leds.c
machine_kexec.c
module.c
opcodes.c
patch.c
patch.h
perf_event.c
perf_event_v6.c
perf_event_v7.c
perf_event_xscale.c
pj4-cp0.c
pmu.c
process.c
ptrace.c
relocate_kernel.S
return_address.c
sched_clock.c
setup.c
signal.c
signal.h
sleep.S
smp.c
smp_scu.c
smp_tlb.c
smp_twd.c
stacktrace.c
suspend.c
swp_emulate.c
sys_arm.c
sys_oabi-compat.c
tcm.c
tcm.h
thumbee.c
time.c
topology.c
traps.c
unwind.c
vmlinux.lds.S
xscale-cp0.c