diff options
author | Tejun Heo <tj@kernel.org> | 2009-08-14 01:41:02 -0400 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2009-08-14 01:45:31 -0400 |
commit | 384be2b18a5f9475eab9ca2bdfa95cc1a04ef59c (patch) | |
tree | 04c93f391a1b65c8bf8d7ba8643c07d26c26590a /include/asm-generic | |
parent | a76761b621bcd8336065c4fe3a74f046858bc34c (diff) | |
parent | 142d44b0dd6741a64a7bdbe029110e7c1dcf1d23 (diff) |
Merge branch 'percpu-for-linus' into percpu-for-next
Conflicts:
arch/sparc/kernel/smp_64.c
arch/x86/kernel/cpu/perf_counter.c
arch/x86/kernel/setup_percpu.c
drivers/cpufreq/cpufreq_ondemand.c
mm/percpu.c
Conflicts in core and arch percpu codes are mostly from commit
ed78e1e078dd44249f88b1dd8c76dafb39567161 which substituted many
num_possible_cpus() with nr_cpu_ids. As for-next branch has moved all
the first chunk allocators into mm/percpu.c, the changes are moved
from arch code to mm/percpu.c.
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'include/asm-generic')
-rw-r--r-- | include/asm-generic/4level-fixup.h | 4 | ||||
-rw-r--r-- | include/asm-generic/pgtable-nopmd.h | 2 | ||||
-rw-r--r-- | include/asm-generic/pgtable-nopud.h | 2 | ||||
-rw-r--r-- | include/asm-generic/tlb.h | 12 | ||||
-rw-r--r-- | include/asm-generic/vmlinux.lds.h | 31 |
5 files changed, 25 insertions, 26 deletions
diff --git a/include/asm-generic/4level-fixup.h b/include/asm-generic/4level-fixup.h index 9d40e879f99e..77ff547730af 100644 --- a/include/asm-generic/4level-fixup.h +++ b/include/asm-generic/4level-fixup.h | |||
@@ -27,9 +27,9 @@ | |||
27 | #define pud_page_vaddr(pud) pgd_page_vaddr(pud) | 27 | #define pud_page_vaddr(pud) pgd_page_vaddr(pud) |
28 | 28 | ||
29 | #undef pud_free_tlb | 29 | #undef pud_free_tlb |
30 | #define pud_free_tlb(tlb, x) do { } while (0) | 30 | #define pud_free_tlb(tlb, x, addr) do { } while (0) |
31 | #define pud_free(mm, x) do { } while (0) | 31 | #define pud_free(mm, x) do { } while (0) |
32 | #define __pud_free_tlb(tlb, x) do { } while (0) | 32 | #define __pud_free_tlb(tlb, x, addr) do { } while (0) |
33 | 33 | ||
34 | #undef pud_addr_end | 34 | #undef pud_addr_end |
35 | #define pud_addr_end(addr, end) (end) | 35 | #define pud_addr_end(addr, end) (end) |
diff --git a/include/asm-generic/pgtable-nopmd.h b/include/asm-generic/pgtable-nopmd.h index a7cdc48e8b78..725612b793ce 100644 --- a/include/asm-generic/pgtable-nopmd.h +++ b/include/asm-generic/pgtable-nopmd.h | |||
@@ -59,7 +59,7 @@ static inline pmd_t * pmd_offset(pud_t * pud, unsigned long address) | |||
59 | static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) | 59 | static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) |
60 | { | 60 | { |
61 | } | 61 | } |
62 | #define __pmd_free_tlb(tlb, x) do { } while (0) | 62 | #define __pmd_free_tlb(tlb, x, a) do { } while (0) |
63 | 63 | ||
64 | #undef pmd_addr_end | 64 | #undef pmd_addr_end |
65 | #define pmd_addr_end(addr, end) (end) | 65 | #define pmd_addr_end(addr, end) (end) |
diff --git a/include/asm-generic/pgtable-nopud.h b/include/asm-generic/pgtable-nopud.h index 87cf449a6df3..810431d8351b 100644 --- a/include/asm-generic/pgtable-nopud.h +++ b/include/asm-generic/pgtable-nopud.h | |||
@@ -52,7 +52,7 @@ static inline pud_t * pud_offset(pgd_t * pgd, unsigned long address) | |||
52 | */ | 52 | */ |
53 | #define pud_alloc_one(mm, address) NULL | 53 | #define pud_alloc_one(mm, address) NULL |
54 | #define pud_free(mm, x) do { } while (0) | 54 | #define pud_free(mm, x) do { } while (0) |
55 | #define __pud_free_tlb(tlb, x) do { } while (0) | 55 | #define __pud_free_tlb(tlb, x, a) do { } while (0) |
56 | 56 | ||
57 | #undef pud_addr_end | 57 | #undef pud_addr_end |
58 | #define pud_addr_end(addr, end) (end) | 58 | #define pud_addr_end(addr, end) (end) |
diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h index f490e43a90b9..e43f9766259f 100644 --- a/include/asm-generic/tlb.h +++ b/include/asm-generic/tlb.h | |||
@@ -123,24 +123,24 @@ static inline void tlb_remove_page(struct mmu_gather *tlb, struct page *page) | |||
123 | __tlb_remove_tlb_entry(tlb, ptep, address); \ | 123 | __tlb_remove_tlb_entry(tlb, ptep, address); \ |
124 | } while (0) | 124 | } while (0) |
125 | 125 | ||
126 | #define pte_free_tlb(tlb, ptep) \ | 126 | #define pte_free_tlb(tlb, ptep, address) \ |
127 | do { \ | 127 | do { \ |
128 | tlb->need_flush = 1; \ | 128 | tlb->need_flush = 1; \ |
129 | __pte_free_tlb(tlb, ptep); \ | 129 | __pte_free_tlb(tlb, ptep, address); \ |
130 | } while (0) | 130 | } while (0) |
131 | 131 | ||
132 | #ifndef __ARCH_HAS_4LEVEL_HACK | 132 | #ifndef __ARCH_HAS_4LEVEL_HACK |
133 | #define pud_free_tlb(tlb, pudp) \ | 133 | #define pud_free_tlb(tlb, pudp, address) \ |
134 | do { \ | 134 | do { \ |
135 | tlb->need_flush = 1; \ | 135 | tlb->need_flush = 1; \ |
136 | __pud_free_tlb(tlb, pudp); \ | 136 | __pud_free_tlb(tlb, pudp, address); \ |
137 | } while (0) | 137 | } while (0) |
138 | #endif | 138 | #endif |
139 | 139 | ||
140 | #define pmd_free_tlb(tlb, pmdp) \ | 140 | #define pmd_free_tlb(tlb, pmdp, address) \ |
141 | do { \ | 141 | do { \ |
142 | tlb->need_flush = 1; \ | 142 | tlb->need_flush = 1; \ |
143 | __pmd_free_tlb(tlb, pmdp); \ | 143 | __pmd_free_tlb(tlb, pmdp, address); \ |
144 | } while (0) | 144 | } while (0) |
145 | 145 | ||
146 | #define tlb_migrate_finish(mm) do {} while (0) | 146 | #define tlb_migrate_finish(mm) do {} while (0) |
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index ab8ea9b7741e..a43223af98b6 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h | |||
@@ -30,9 +30,7 @@ | |||
30 | * EXCEPTION_TABLE(...) | 30 | * EXCEPTION_TABLE(...) |
31 | * NOTES | 31 | * NOTES |
32 | * | 32 | * |
33 | * __bss_start = .; | 33 | * BSS_SECTION(0, 0, 0) |
34 | * BSS_SECTION(0, 0) | ||
35 | * __bss_stop = .; | ||
36 | * _end = .; | 34 | * _end = .; |
37 | * | 35 | * |
38 | * STABS_DEBUG | 36 | * STABS_DEBUG |
@@ -188,7 +186,7 @@ | |||
188 | . = ALIGN(align); \ | 186 | . = ALIGN(align); \ |
189 | *(.data.cacheline_aligned) | 187 | *(.data.cacheline_aligned) |
190 | 188 | ||
191 | #define INIT_TASK(align) \ | 189 | #define INIT_TASK_DATA(align) \ |
192 | . = ALIGN(align); \ | 190 | . = ALIGN(align); \ |
193 | *(.data.init_task) | 191 | *(.data.init_task) |
194 | 192 | ||
@@ -431,10 +429,10 @@ | |||
431 | /* | 429 | /* |
432 | * Init task | 430 | * Init task |
433 | */ | 431 | */ |
434 | #define INIT_TASK_DATA(align) \ | 432 | #define INIT_TASK_DATA_SECTION(align) \ |
435 | . = ALIGN(align); \ | 433 | . = ALIGN(align); \ |
436 | .data.init_task : { \ | 434 | .data.init_task : { \ |
437 | INIT_TASK \ | 435 | INIT_TASK_DATA(align) \ |
438 | } | 436 | } |
439 | 437 | ||
440 | #ifdef CONFIG_CONSTRUCTORS | 438 | #ifdef CONFIG_CONSTRUCTORS |
@@ -486,7 +484,8 @@ | |||
486 | * bss (Block Started by Symbol) - uninitialized data | 484 | * bss (Block Started by Symbol) - uninitialized data |
487 | * zeroed during startup | 485 | * zeroed during startup |
488 | */ | 486 | */ |
489 | #define SBSS \ | 487 | #define SBSS(sbss_align) \ |
488 | . = ALIGN(sbss_align); \ | ||
490 | .sbss : AT(ADDR(.sbss) - LOAD_OFFSET) { \ | 489 | .sbss : AT(ADDR(.sbss) - LOAD_OFFSET) { \ |
491 | *(.sbss) \ | 490 | *(.sbss) \ |
492 | *(.scommon) \ | 491 | *(.scommon) \ |
@@ -495,12 +494,10 @@ | |||
495 | #define BSS(bss_align) \ | 494 | #define BSS(bss_align) \ |
496 | . = ALIGN(bss_align); \ | 495 | . = ALIGN(bss_align); \ |
497 | .bss : AT(ADDR(.bss) - LOAD_OFFSET) { \ | 496 | .bss : AT(ADDR(.bss) - LOAD_OFFSET) { \ |
498 | VMLINUX_SYMBOL(__bss_start) = .; \ | ||
499 | *(.bss.page_aligned) \ | 497 | *(.bss.page_aligned) \ |
500 | *(.dynbss) \ | 498 | *(.dynbss) \ |
501 | *(.bss) \ | 499 | *(.bss) \ |
502 | *(COMMON) \ | 500 | *(COMMON) \ |
503 | VMLINUX_SYMBOL(__bss_stop) = .; \ | ||
504 | } | 501 | } |
505 | 502 | ||
506 | /* | 503 | /* |
@@ -719,15 +716,15 @@ | |||
719 | * matches the requirment of PAGE_ALIGNED_DATA. | 716 | * matches the requirment of PAGE_ALIGNED_DATA. |
720 | * | 717 | * |
721 | * use 0 as page_align if page_aligned data is not used */ | 718 | * use 0 as page_align if page_aligned data is not used */ |
722 | #define RW_DATA_SECTION(cacheline, nosave, pagealigned, inittask) \ | 719 | #define RW_DATA_SECTION(cacheline, pagealigned, inittask) \ |
723 | . = ALIGN(PAGE_SIZE); \ | 720 | . = ALIGN(PAGE_SIZE); \ |
724 | .data : AT(ADDR(.data) - LOAD_OFFSET) { \ | 721 | .data : AT(ADDR(.data) - LOAD_OFFSET) { \ |
725 | INIT_TASK(inittask) \ | 722 | INIT_TASK_DATA(inittask) \ |
726 | CACHELINE_ALIGNED_DATA(cacheline) \ | 723 | CACHELINE_ALIGNED_DATA(cacheline) \ |
727 | READ_MOSTLY_DATA(cacheline) \ | 724 | READ_MOSTLY_DATA(cacheline) \ |
728 | DATA_DATA \ | 725 | DATA_DATA \ |
729 | CONSTRUCTORS \ | 726 | CONSTRUCTORS \ |
730 | NOSAVE_DATA(nosave) \ | 727 | NOSAVE_DATA \ |
731 | PAGE_ALIGNED_DATA(pagealigned) \ | 728 | PAGE_ALIGNED_DATA(pagealigned) \ |
732 | } | 729 | } |
733 | 730 | ||
@@ -749,8 +746,10 @@ | |||
749 | INIT_RAM_FS \ | 746 | INIT_RAM_FS \ |
750 | } | 747 | } |
751 | 748 | ||
752 | #define BSS_SECTION(sbss_align, bss_align) \ | 749 | #define BSS_SECTION(sbss_align, bss_align, stop_align) \ |
753 | SBSS \ | 750 | . = ALIGN(sbss_align); \ |
751 | VMLINUX_SYMBOL(__bss_start) = .; \ | ||
752 | SBSS(sbss_align) \ | ||
754 | BSS(bss_align) \ | 753 | BSS(bss_align) \ |
755 | . = ALIGN(4); | 754 | . = ALIGN(stop_align); \ |
756 | 755 | VMLINUX_SYMBOL(__bss_stop) = .; | |