linux/arch/arm/kernel
Jonathan Austin 67c9845bea ARM: mpu: add early bring-up code for the ARMv7 PMSA-compliant MPU
This patch adds initial support for using the MPU, which is necessary for
SMP operation on PMSAv7 processors because it is the only way to ensure
memory is shared. This is an initial patch and full SMP support is added
later in this series.

The setup of the MPU is performed in a way analagous to that for the MMU:
Very early initialisation before the C environment is brought up, followed
by a sanity check and more complete initialisation in C.

This patch provides the simplest possible memory region configuration:
MPU_PROBE_REGION: Reserved for probing MPU details, not enabled
MPU_BG_REGION: A 'background' region that specifies all memory strongly ordered
MPU_RAM_REGION: A single shared, cacheable, normal region for the valid RAM.

In this early initialisation code we simply map the whole of the address
space with the BG_REGION and (at least) the kernel with the RAM_REGION. The
MPU has region alignment constraints that require us to round past the end
of the kernel.

As region 2 has a higher priority than region 1, it overrides the strongly-
ordered behaviour for RAM only.

Subsequent patches will add more complete initialisation from the C-world
and support for bringing up secondary CPUs.

Signed-off-by: Jonathan Austin <jonathan.austin@arm.com>
Reviewed-by: Will Deacon <will.deacon@arm.com>
CC: Hyok S. Choi <hyok.choi@samsung.com>
2013-06-07 17:02:51 +01:00
..
.gitignore
arch_timer.c ARM: convert arm/arm64 arch timer to use CLKSRC_OF init 2013-04-11 15:11:15 -05:00
armksyms.c
arthur.c
asm-offsets.c Merge tag 'kvm-3.10-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm 2013-05-05 14:47:31 -07:00
atags_compat.c
atags_parse.c
atags_proc.c procfs: new helper - PDE_DATA(inode) 2013-04-09 14:13:32 -04:00
atags.h
bios32.c ARM: 7683/1: pci: add a align_resource hook 2013-04-03 16:56:11 +01:00
calls.S ARM: 7665/1: Wire up kcmp syscall 2013-03-03 22:54:18 +00:00
cpuidle.c
crash_dump.c
debug.S ARM: compile fix for DEBUG_LL=y && MMU=n 2013-01-16 14:30:06 -08:00
devtree.c ARM: default machine descriptor for multiplatform 2013-04-29 21:56:57 +02:00
dma-isa.c
dma.c
early_printk.c early_printk: consolidate random copies of identical code 2013-04-29 18:28:13 -07:00
elf.c
entry-armv.S Merge branch 'cleanup' into for-linus 2013-05-02 21:31:29 +01:00
entry-common.S Merge branch 'for-next' of git://git.pengutronix.de/git/ukl/linux into devel-stable 2013-05-22 10:52:24 +01:00
entry-header.S Merge branch 'for-next' of git://git.pengutronix.de/git/ukl/linux into devel-stable 2013-05-22 10:52:24 +01:00
entry-v7m.S ARM: ARMv7-M: Add support for exception handling 2013-04-17 21:44:46 +02:00
etm.c ARM/etm/sysrq: fix inconstistent help message of sysrq key 2013-04-30 17:04:10 -07:00
fiq.c
fiqasm.S
ftrace.c
head-common.S ARM: make cr_alignment read-only #ifndef CONFIG_CPU_CP15 2013-01-31 21:44:45 +01:00
head-nommu.S ARM: mpu: add early bring-up code for the ARMv7 PMSA-compliant MPU 2013-06-07 17:02:51 +01:00
head.S ARM: 7690/1: mm: fix CONFIG_LPAE typos 2013-04-03 16:45:51 +01:00
hw_breakpoint.c ARM: 7697/1: hw_breakpoint: do not use __cpuinitdata for dbg_cpu_pm_nb 2013-04-17 16:54:06 +01:00
hyp-stub.S ARM: virt: simplify __hyp_stub_install epilog 2013-01-10 21:08:55 +00:00
insn.c
insn.h
io.c
irq.c ARM: irq: Call irqchip_init if no init_irq function is specified 2013-04-02 11:05:40 -07:00
isa.c
iwmmxt.S
jump_label.c
kgdb.c
kprobes-arm.c
kprobes-common.c
kprobes-test-arm.c ARM: kprobes: make more tests conditional 2012-10-09 17:07:43 +02:00
kprobes-test-thumb.c
kprobes-test.c treewide: fix printk typo in multiple drivers 2012-11-19 11:08:17 +01:00
kprobes-test.h
kprobes-thumb.c
kprobes.c hlist: drop the node parameter from iterators 2013-02-27 19:10:24 -08:00
kprobes.h
machine_kexec.c ARM: 7555/1: kexec: fix segment memory addresses check 2012-10-18 11:05:19 +01:00
Makefile ARM: nommu: Don't build smp_tlb.c for !CONFIG_MMU 2013-06-07 17:02:45 +01:00
module.c
opcodes.c
patch.c
patch.h
perf_event_cpu.c ARM: perf: handle armpmu_register failing 2013-01-18 13:46:09 +00:00
perf_event_v6.c ARM: perf: don't pretend to support counting of L1I writes 2013-01-16 12:01:59 +00:00
perf_event_v7.c ARM: 7663/1: perf: fix ARMv7 EVTYPE_MASK to include NSH bit 2013-03-03 22:54:17 +00:00
perf_event_xscale.c ARM: perf: don't pretend to support counting of L1I writes 2013-01-16 12:01:59 +00:00
perf_event.c ARM: 7698/1: perf: fix group validation when using enable_on_exec 2013-04-17 16:54:07 +01:00
pj4-cp0.c
process.c Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2013-05-03 09:13:19 -07:00
psci_smp.c arm: introduce psci_smp_ops 2013-05-21 14:24:11 +00:00
psci.c arm: introduce psci_smp_ops 2013-05-21 14:24:11 +00:00
ptrace.c ARM: 7595/1: syscall: rework ordering in syscall_trace_exit 2012-12-11 00:18:26 +00:00
relocate_kernel.S
return_address.c ARM: 7676/1: fix a wrong value returned from CALLER_ADDRn 2013-03-19 11:43:46 +00:00
sched_clock.c ARM: arm-soc: late cleanups 2013-05-07 11:22:14 -07:00
setup.c Merge tag '3.10-rc2-psci-ops-11-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/sstabellini/xen into devel-stable 2013-05-22 10:53:20 +01:00
signal.c arm: switch to struct ksignal * passing 2013-02-14 09:21:16 -05:00
signal.h
sleep.S
smp_scu.c Merge branch 'for-next' of git://git.pengutronix.de/git/ukl/linux into devel-stable 2013-03-09 15:49:32 +00:00
smp_tlb.c ARM: 7703/1: Disable preemption in broadcast_tlb*_a15_erratum() 2013-04-25 13:15:15 +01:00
smp_twd.c ARM: smp_twd: convert to use CLKSRC_OF init 2013-03-11 08:42:08 -05:00
smp.c ARM: nommu: do not initialise page tables in secondary_data structure 2013-06-07 17:02:43 +01:00
stacktrace.c
suspend.c ARM: suspend: fix CPU suspend code for !CONFIG_MMU configurations 2013-06-07 17:02:44 +01:00
swp_emulate.c arm: single_open() leaks 2013-05-05 00:07:22 -04:00
sys_arm.c arm: switch to generic fork/vfork/clone 2012-11-28 22:13:54 -05:00
sys_oabi-compat.c
tcm.c ARM: 7694/1: ARM, TCM: initialize TCM in paging_init(), instead of setup_arch() 2013-04-17 16:53:24 +01:00
thumbee.c
time.c ARM: make machine_desc->init_time default to clocksource_of_init 2013-04-11 15:11:14 -05:00
topology.c arm: remove cast for kzalloc return value 2013-03-18 14:15:58 +01:00
traps.c Merge branch 'for-next' of git://git.pengutronix.de/git/ukl/linux into devel-stable 2013-05-22 10:52:24 +01:00
unwind.c
vmlinux.lds.S ARM: KVM: enforce maximum size for identity mapped code 2013-04-28 22:23:09 -07:00
xscale-cp0.c