mirror of https://github.com/torvalds/linux.git
Impact: fix linker screwup on x86_32 Recent x86_64 zerobased patches introduced PERCPU_VADDR() to put .data.percpu to a predefined address and re-defined PERCPU() in terms of it. The new macro defined one extra symbol, __per_cpu_load, for LMA of the section so that the init data could be accessed. This new symbol introduced the following problems to x86_32. 1. If __per_cpu_load is defined outside of .data.percpu as an absolute symbol, relocation generation for relocatable kernel fails due to absolute relocation. 2. If __per_cpu_load is put inside .data.percpu with absolute address assignment to work around #1, linker gets confused and under certain configurations ends up relocating the symbol against .data.percpu such that the load address gets added on top of already set load address. As x86_32 doesn't use predefined address for .data.percpu, there's no need for it to care about the possibility of __per_cpu_load being different from __per_cpu_start. This patch defines PERCPU() separately so that __per_cpu_load is defined inside .data.percpu so that everything is ordinary linking-wise. Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Ingo Molnar <mingo@elte.hu> |
||
|---|---|---|
| .. | ||
| bitops | ||
| 4level-fixup.h | ||
| Kbuild | ||
| Kbuild.asm | ||
| atomic.h | ||
| audit_change_attr.h | ||
| audit_dir_write.h | ||
| audit_read.h | ||
| audit_signal.h | ||
| audit_write.h | ||
| bitops.h | ||
| bug.h | ||
| cmpxchg-local.h | ||
| cmpxchg.h | ||
| cputime.h | ||
| device.h | ||
| div64.h | ||
| dma-coherent.h | ||
| dma-mapping-broken.h | ||
| dma-mapping.h | ||
| emergency-restart.h | ||
| errno-base.h | ||
| errno.h | ||
| fcntl.h | ||
| futex.h | ||
| gpio.h | ||
| ide_iops.h | ||
| int-l64.h | ||
| int-ll64.h | ||
| ioctl.h | ||
| iomap.h | ||
| irq_regs.h | ||
| kdebug.h | ||
| libata-portmap.h | ||
| local.h | ||
| memory_model.h | ||
| mm_hooks.h | ||
| mman.h | ||
| mutex-dec.h | ||
| mutex-null.h | ||
| mutex-xchg.h | ||
| page.h | ||
| pci-dma-compat.h | ||
| pci.h | ||
| percpu.h | ||
| pgtable-nopmd.h | ||
| pgtable-nopud.h | ||
| pgtable.h | ||
| poll.h | ||
| resource.h | ||
| rtc.h | ||
| sections.h | ||
| siginfo.h | ||
| signal.h | ||
| statfs.h | ||
| syscall.h | ||
| termios.h | ||
| tlb.h | ||
| topology.h | ||
| uaccess.h | ||
| vmlinux.lds.h | ||
| xor.h | ||