forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel…
…/git/tj/percpu * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu: (46 commits) powerpc64: convert to dynamic percpu allocator sparc64: use embedding percpu first chunk allocator percpu: kill lpage first chunk allocator x86,percpu: use embedding for 64bit NUMA and page for 32bit NUMA percpu: update embedding first chunk allocator to handle sparse units percpu: use group information to allocate vmap areas sparsely vmalloc: implement pcpu_get_vm_areas() vmalloc: separate out insert_vmalloc_vm() percpu: add chunk->base_addr percpu: add pcpu_unit_offsets[] percpu: introduce pcpu_alloc_info and pcpu_group_info percpu: move pcpu_lpage_build_unit_map() and pcpul_lpage_dump_cfg() upward percpu: add @align to pcpu_fc_alloc_fn_t percpu: make @dyn_size mandatory for pcpu_setup_first_chunk() percpu: drop @static_size from first chunk allocators percpu: generalize first chunk allocator selection percpu: build first chunk allocators selectively percpu: rename 4k first chunk allocator to page percpu: improve boot messages percpu: fix pcpu_reclaim() locking ... Fix trivial conflict as by Tejun Heo in kernel/sched.c
- Loading branch information
Showing
80 changed files
with
1,910 additions
and
1,228 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,102 +1,18 @@ | ||
#ifndef __ALPHA_PERCPU_H | ||
#define __ALPHA_PERCPU_H | ||
|
||
#include <linux/compiler.h> | ||
#include <linux/threads.h> | ||
#include <linux/percpu-defs.h> | ||
|
||
/* | ||
* Determine the real variable name from the name visible in the | ||
* kernel sources. | ||
*/ | ||
#define per_cpu_var(var) per_cpu__##var | ||
|
||
#ifdef CONFIG_SMP | ||
|
||
/* | ||
* per_cpu_offset() is the offset that has to be added to a | ||
* percpu variable to get to the instance for a certain processor. | ||
*/ | ||
extern unsigned long __per_cpu_offset[NR_CPUS]; | ||
|
||
#define per_cpu_offset(x) (__per_cpu_offset[x]) | ||
|
||
#define __my_cpu_offset per_cpu_offset(raw_smp_processor_id()) | ||
#ifdef CONFIG_DEBUG_PREEMPT | ||
#define my_cpu_offset per_cpu_offset(smp_processor_id()) | ||
#else | ||
#define my_cpu_offset __my_cpu_offset | ||
#endif | ||
|
||
#ifndef MODULE | ||
#define SHIFT_PERCPU_PTR(var, offset) RELOC_HIDE(&per_cpu_var(var), (offset)) | ||
#define PER_CPU_DEF_ATTRIBUTES | ||
#else | ||
/* | ||
* To calculate addresses of locally defined variables, GCC uses 32-bit | ||
* displacement from the GP. Which doesn't work for per cpu variables in | ||
* modules, as an offset to the kernel per cpu area is way above 4G. | ||
* To calculate addresses of locally defined variables, GCC uses | ||
* 32-bit displacement from the GP. Which doesn't work for per cpu | ||
* variables in modules, as an offset to the kernel per cpu area is | ||
* way above 4G. | ||
* | ||
* This forces allocation of a GOT entry for per cpu variable using | ||
* ldq instruction with a 'literal' relocation. | ||
*/ | ||
#define SHIFT_PERCPU_PTR(var, offset) ({ \ | ||
extern int simple_identifier_##var(void); \ | ||
unsigned long __ptr, tmp_gp; \ | ||
asm ( "br %1, 1f \n\ | ||
1: ldgp %1, 0(%1) \n\ | ||
ldq %0, per_cpu__" #var"(%1)\t!literal" \ | ||
: "=&r"(__ptr), "=&r"(tmp_gp)); \ | ||
(typeof(&per_cpu_var(var)))(__ptr + (offset)); }) | ||
|
||
#define PER_CPU_DEF_ATTRIBUTES __used | ||
|
||
#endif /* MODULE */ | ||
|
||
/* | ||
* A percpu variable may point to a discarded regions. The following are | ||
* established ways to produce a usable pointer from the percpu variable | ||
* offset. | ||
* Always use weak definitions for percpu variables in modules. | ||
*/ | ||
#define per_cpu(var, cpu) \ | ||
(*SHIFT_PERCPU_PTR(var, per_cpu_offset(cpu))) | ||
#define __get_cpu_var(var) \ | ||
(*SHIFT_PERCPU_PTR(var, my_cpu_offset)) | ||
#define __raw_get_cpu_var(var) \ | ||
(*SHIFT_PERCPU_PTR(var, __my_cpu_offset)) | ||
|
||
#else /* ! SMP */ | ||
|
||
#define per_cpu(var, cpu) (*((void)(cpu), &per_cpu_var(var))) | ||
#define __get_cpu_var(var) per_cpu_var(var) | ||
#define __raw_get_cpu_var(var) per_cpu_var(var) | ||
|
||
#define PER_CPU_DEF_ATTRIBUTES | ||
|
||
#endif /* SMP */ | ||
|
||
#ifdef CONFIG_SMP | ||
#define PER_CPU_BASE_SECTION ".data.percpu" | ||
#else | ||
#define PER_CPU_BASE_SECTION ".data" | ||
#endif | ||
|
||
#ifdef CONFIG_SMP | ||
|
||
#ifdef MODULE | ||
#define PER_CPU_SHARED_ALIGNED_SECTION "" | ||
#else | ||
#define PER_CPU_SHARED_ALIGNED_SECTION ".shared_aligned" | ||
#endif | ||
#define PER_CPU_FIRST_SECTION ".first" | ||
|
||
#else | ||
|
||
#define PER_CPU_SHARED_ALIGNED_SECTION "" | ||
#define PER_CPU_FIRST_SECTION "" | ||
|
||
#if defined(MODULE) && defined(CONFIG_SMP) | ||
#define ARCH_NEEDS_WEAK_PER_CPU | ||
#endif | ||
|
||
#define PER_CPU_ATTRIBUTES | ||
#include <asm-generic/percpu.h> | ||
|
||
#endif /* __ALPHA_PERCPU_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -277,8 +277,5 @@ SECTIONS | |
|
||
DWARF_DEBUG | ||
|
||
/DISCARD/ : | ||
{ | ||
*(.exitcall.exit) | ||
} | ||
DISCARDS | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.