linux/arch/arm/kernel
Tejun Heo 0415b00d17 percpu: Always align percpu output section to PAGE_SIZE
Percpu allocator honors alignment request upto PAGE_SIZE and both the
percpu addresses in the percpu address space and the translated kernel
addresses should be aligned accordingly.  The calculation of the
former depends on the alignment of percpu output section in the kernel
image.

The linker script macros PERCPU_VADDR() and PERCPU() are used to
define this output section and the latter takes @align parameter.
Several architectures are using @align smaller than PAGE_SIZE breaking
percpu memory alignment.

This patch removes @align parameter from PERCPU(), renames it to
PERCPU_SECTION() and makes it always align to PAGE_SIZE.  While at it,
add PCPU_SETUP_BUG_ON() checks such that alignment problems are
reliably detected and remove percpu alignment comment recently added
in workqueue.c as the condition would trigger BUG way before reaching
there.

For um, this patch raises the alignment of percpu area.  As the area
is in .init, there shouldn't be any noticeable difference.

This problem was discovered by David Howells while debugging boot
failure on mn10300.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Cc: uclinux-dist-devel@blackfin.uclinux.org
Cc: David Howells <dhowells@redhat.com>
Cc: Jeff Dike <jdike@addtoit.com>
Cc: user-mode-linux-devel@lists.sourceforge.net
2011-03-24 18:50:09 +01:00
..
.gitignore
armksyms.c Merge branch 'p2v' into devel 2011-03-16 23:35:27 +00:00
arthur.c
asm-offsets.c ARM: pm: add generic CPU suspend/resume support 2011-02-22 17:11:23 +00:00
atags.c
atags.h
bios32.c ARM: 6608/1: enable bridges in pci_common_init. 2011-02-23 17:24:14 +00:00
calls.S
compat.c
compat.h
crash_dump.c crash_dump: export is_kdump_kernel to modules, consolidate elfcorehdr_addr, setup_elfcorehdr and saved_max_pfn 2011-03-23 19:47:19 -07:00
crunch-bits.S
crunch.c
debug.S ARM: v6k: introduce CPU_V6K option 2011-02-02 21:23:26 +00:00
dma-isa.c
dma.c
early_printk.c
ecard.c ARM: ecard: irq_data conversion. 2011-01-13 12:26:17 +01:00
ecard.h
elf.c
entry-armv.S ARM: move cache/processor/fault glue to separate include files 2011-02-12 11:52:21 +00:00
entry-common.S Merge branch 'clksrc' into devel 2011-01-05 18:09:03 +00:00
entry-header.S ARM: v6k: select clear exclusive code seqences according to V6 variants 2011-02-02 21:23:28 +00:00
etm.c ARM: amba: make probe() functions take const id tables 2011-02-23 16:24:14 +00:00
fiq.c Merge branch 'smp' into misc 2011-01-06 22:32:03 +00:00
ftrace.c ARM: ftrace: graph tracer + dynamic ftrace 2010-11-19 21:43:27 +05:30
head-common.S ARM: Defer lookup of machine_type to setup.c 2011-02-15 16:36:44 +00:00
head-nommu.S ARM: Defer lookup of machine_type to setup.c 2011-02-15 16:36:44 +00:00
head.S Merge branch 'p2v' into devel 2011-03-16 23:35:27 +00:00
hw_breakpoint.c ARM: 6797/1: hw_breakpoint: Fix newlines in WARNings 2011-03-10 10:03:45 +00:00
init_task.c
io.c
irq.c ARM: irq migration: ensure migration is handled safely 2011-02-23 17:24:16 +00:00
isa.c
iwmmxt.S ARM: pxa: add iwmmx support for PJ4 2010-12-20 23:07:36 +08:00
kgdb.c kgdb,arm: fix register dump 2010-10-29 13:14:40 -05:00
kprobes-decode.c ARM: 6745/1: kprobes insn decoding fix 2011-02-21 19:29:29 +00:00
kprobes.c
leds.c
machine_kexec.c [ARM] add machine-specific hook to machine_kexec 2011-03-03 16:26:55 -05:00
Makefile ARM: pm: add generic CPU suspend/resume support 2011-02-22 17:11:23 +00:00
module.c Merge branch 'p2v' into devel 2011-03-16 23:35:27 +00:00
perf_event_v6.c ARM: v6k: introduce CPU_V6K option 2011-02-02 21:23:26 +00:00
perf_event_v7.c ARM: 6521/1: perf: use raw_spinlock_t for pmu_lock 2010-12-04 11:18:08 +00:00
perf_event_xscale.c ARM: 6521/1: perf: use raw_spinlock_t for pmu_lock 2010-12-04 11:18:08 +00:00
perf_event.c Merge branch 'pmu-for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson into devel-stable 2011-02-19 09:44:55 +00:00
pj4-cp0.c ARM: pxa: add iwmmx support for PJ4 2010-12-20 23:07:36 +08:00
pmu.c ARM: 6742/1: pmu: avoid setting IRQ affinity on UP systems 2011-02-19 11:24:05 +00:00
process.c ARM: 6619/1: nommu: avoid mapping vectors page when !CONFIG_MMU 2011-01-11 17:32:24 +00:00
ptrace.c Merge branch 'misc' into devel 2011-03-16 23:35:25 +00:00
relocate_kernel.S ARM: 6497/1: kexec: Correct data alignment for CONFIG_THUMB2_KERNEL 2010-11-30 13:44:23 +00:00
return_address.c ARM: fix some sparse errors in generic ARM code 2011-02-23 17:24:12 +00:00
sched_clock.c ARM: sched_clock: make minsec argument to clocks_calc_mult_shift() zero 2011-01-11 16:44:02 +00:00
setup.c Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-03-23 20:37:26 -07:00
signal.c Merge branch 'misc' into devel 2011-03-16 23:35:25 +00:00
signal.h
sleep.S ARM: pm: allow generic sleep code to be used with SMP CPU idle 2011-02-22 17:11:26 +00:00
smp_scu.c ARM: pm: add function to set WFI low-power mode for SMP CPUs 2011-02-11 12:29:18 +00:00
smp_tlb.c ARM: SMP: split out software TLB maintainence broadcasting 2010-12-20 15:09:17 +00:00
smp_twd.c ARM: twd: ensure timer reload is reprogrammed on entry to periodic mode 2011-01-25 21:17:58 +00:00
smp.c ARM: 6759/1: smp: Select local timers vs broadcast timer support runtime 2011-02-23 17:54:27 +00:00
stacktrace.c ARM: fix /proc/$PID/stack on SMP 2011-01-15 09:27:04 +00:00
swp_emulate.c ARM: 6396/1: Add SWP/SWPB emulation for ARMv7 processors 2010-11-04 15:45:24 +00:00
sys_arm.c
sys_oabi-compat.c
tcm.c ARM: P2V: separate PHYS_OFFSET from platform definitions 2011-02-17 23:26:55 +00:00
tcm.h
thumbee.c
time.c arm: Switch from do_timer() to xtime_update() 2011-01-31 14:55:43 +01:00
traps.c Merge branches 'fixes', 'pgt-next' and 'versatile' into devel 2011-03-20 09:32:12 +00:00
unwind.c ARM: 6468/1: backtrace: fix calculation of thread stack base 2010-11-07 16:12:37 +00:00
vmlinux.lds.S percpu: Always align percpu output section to PAGE_SIZE 2011-03-24 18:50:09 +01:00
xscale-cp0.c