linux/arch/sh/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
..
cpu sh: dmaengine support for SH7757 2011-03-11 12:36:29 +09:00
vsyscall mm: arch: rename in_gate_area_no_task to in_gate_area_no_mm 2011-03-23 16:36:55 -04:00
.gitignore
asm-offsets.c
cpufreq.c arch/sh/kernel: Use set_cpus_allowed_ptr 2010-03-29 11:40:37 +09:00
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
debugtraps.S
disassemble.c
dma-nommu.c
dumpstack.c
dwarf.c sh: handle early calls to return_address() when using dwarf unwinder. 2010-05-25 16:16:40 +09:00
entry-common.S sh: Correct the offset of the return address in ret_from_exception 2010-02-08 10:46:46 +09:00
ftrace.c tracing: Unify arch_syscall_addr() implementations 2010-02-17 13:07:21 +01:00
head_32.S sh: boot kernel with SR.BL set 2010-09-30 09:43:32 +09:00
head_64.S
hw_breakpoint.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 2010-05-19 11:36:03 -07:00
idle.c sh: CPU hotplug support. 2010-04-26 19:08:55 +09:00
init_task.c
io_trapped.c sh: wire up perf alignment and emulation faults. 2010-10-13 06:55:26 +09:00
io.c sh: support for platforms without PIO. 2010-06-02 16:31:42 +09:00
iomap.c sh: machvec IO death. 2010-11-01 09:49:04 -04:00
ioport.c sh: machvec IO death. 2010-11-01 09:49:04 -04:00
irq_32.c Fix IRQ flag handling naming 2010-10-07 14:08:55 +01:00
irq_64.c sh64: update for IRQ flag handling naming changes. 2010-10-27 15:34:51 +09:00
irq.c sh: Convert to generic show_interrupts. 2011-03-17 17:31:51 +09:00
kdebugfs.c sh: provide generic arch_debugfs_dir. 2010-09-24 04:04:26 +09:00
kgdb.c kgdb,sh: update superh kgdb exception handling 2010-05-20 21:04:20 -05:00
kprobes.c sh: kprobes SMP support. 2010-06-14 17:06:10 +09:00
localtimer.c sh: CPU hotplug support. 2010-04-26 19:08:55 +09:00
machine_kexec.c lmb: rename to memblock 2010-07-14 17:14:00 +10:00
machvec.c sh: machvec IO death. 2010-11-01 09:49:04 -04:00
Makefile Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-01-06 16:50:35 -08:00
module.c modules: Fix module_bug_list list corruption race 2010-10-05 11:29:27 -07:00
nmi_debug.c
perf_callchain.c perf: Factorize callchain context handling 2010-08-19 01:32:11 +02:00
perf_event.c perf: Dynamic pmu types 2010-12-16 11:36:43 +01:00
process_32.c Make do_execve() take a const filename pointer 2010-08-17 18:07:43 -07:00
process_64.c Make do_execve() take a const filename pointer 2010-08-17 18:07:43 -07:00
process.c sh: Fix build alloc_thread_info_node function 2011-03-24 15:19:14 +09:00
ptrace_32.c sh: Fix ptrace hw_breakpoint handling 2011-03-23 22:18:25 +09:00
ptrace_64.c sh: Fix ptrace fpu state initialisation 2011-03-23 22:17:52 +09:00
ptrace.c sh: Add kprobe-based event tracer. 2010-06-14 15:16:53 +09:00
reboot.c sh: Provide a global TLB flush for U/I-TLB clear. 2010-07-02 15:44:09 +09:00
relocate_kernel.S
return_address.c sh: handle early calls to return_address() when using dwarf unwinder. 2010-05-25 16:16:40 +09:00
setup.c sh: Break out cpuinfo_op procfs bits. 2010-11-09 16:40:16 +09:00
sh_bios.c
sh_ksyms_32.c
sh_ksyms_64.c
signal_32.c sh: Mass ctrl_in/outX to __raw_read/writeX conversion. 2010-01-26 12:58:40 +09:00
signal_64.c Merge branch 'sh/stable-updates' 2010-02-15 14:49:37 +09:00
smp.c sh: native_cpu_disable() build error when CONFIG_HOTPLUG_CPU=n 2010-04-29 23:28:38 +09:00
stacktrace.c
swsusp.c
sys_sh32.c Make do_execve() take a const filename pointer 2010-08-17 18:07:43 -07:00
sys_sh64.c Make do_execve() take a const filename pointer 2010-08-17 18:07:43 -07:00
sys_sh.c sh: avoid to flush all cache in sys_cacheflush 2010-11-17 17:55:30 +09:00
syscalls_32.S sh: wire up sys_syncfs. 2011-03-22 21:56:08 +09:00
syscalls_64.S sh: wire up sys_syncfs. 2011-03-22 21:56:08 +09:00
time.c sh: Convert sh to use read/update_persistent_clock 2010-03-05 02:04:38 +09:00
topology.c sh: Fix sh build failure when CONFIG_SFC=m 2011-01-19 12:16:55 +09:00
traps_32.c sh: wire up perf alignment and emulation faults. 2010-10-13 06:55:26 +09:00
traps_64.c sh: wire up perf alignment and emulation faults. 2010-10-13 06:55:26 +09:00
traps.c sh: Mass ctrl_in/outX to __raw_read/writeX conversion. 2010-01-26 12:58:40 +09:00
unwinder.c
vmlinux.lds.S percpu: Always align percpu output section to PAGE_SIZE 2011-03-24 18:50:09 +01:00