diff options
Diffstat (limited to 'include')
44 files changed, 180 insertions, 101 deletions
diff --git a/include/acpi/processor.h b/include/acpi/processor.h index f9f987f8e661..ec3ffdadb4d2 100644 --- a/include/acpi/processor.h +++ b/include/acpi/processor.h | |||
@@ -232,7 +232,7 @@ struct acpi_processor_errata { | |||
232 | 232 | ||
233 | extern int acpi_processor_preregister_performance(struct | 233 | extern int acpi_processor_preregister_performance(struct |
234 | acpi_processor_performance | 234 | acpi_processor_performance |
235 | **performance); | 235 | *performance); |
236 | 236 | ||
237 | extern int acpi_processor_register_performance(struct acpi_processor_performance | 237 | extern int acpi_processor_register_performance(struct acpi_processor_performance |
238 | *performance, unsigned int cpu); | 238 | *performance, unsigned int cpu); |
diff --git a/include/asm-avr32/io.h b/include/asm-avr32/io.h index e30d4b3bd836..64bb92bb6773 100644 --- a/include/asm-avr32/io.h +++ b/include/asm-avr32/io.h | |||
@@ -255,6 +255,8 @@ static inline void memset_io(volatile void __iomem *addr, unsigned char val, | |||
255 | memset((void __force *)addr, val, count); | 255 | memset((void __force *)addr, val, count); |
256 | } | 256 | } |
257 | 257 | ||
258 | #define mmiowb() | ||
259 | |||
258 | #define IO_SPACE_LIMIT 0xffffffff | 260 | #define IO_SPACE_LIMIT 0xffffffff |
259 | 261 | ||
260 | extern void __iomem *__ioremap(unsigned long offset, size_t size, | 262 | extern void __iomem *__ioremap(unsigned long offset, size_t size, |
diff --git a/include/asm-avr32/pgalloc.h b/include/asm-avr32/pgalloc.h index bb82e70cde8d..0e680f47209f 100644 --- a/include/asm-avr32/pgalloc.h +++ b/include/asm-avr32/pgalloc.h | |||
@@ -27,13 +27,7 @@ static __inline__ void pmd_populate(struct mm_struct *mm, pmd_t *pmd, | |||
27 | */ | 27 | */ |
28 | static __inline__ pgd_t *pgd_alloc(struct mm_struct *mm) | 28 | static __inline__ pgd_t *pgd_alloc(struct mm_struct *mm) |
29 | { | 29 | { |
30 | unsigned int pgd_size = (USER_PTRS_PER_PGD * sizeof(pgd_t)); | 30 | return kcalloc(USER_PTRS_PER_PGD, sizeof(pgd_t), GFP_KERNEL); |
31 | pgd_t *pgd = kmalloc(pgd_size, GFP_KERNEL); | ||
32 | |||
33 | if (pgd) | ||
34 | memset(pgd, 0, pgd_size); | ||
35 | |||
36 | return pgd; | ||
37 | } | 31 | } |
38 | 32 | ||
39 | static inline void pgd_free(pgd_t *pgd) | 33 | static inline void pgd_free(pgd_t *pgd) |
@@ -44,18 +38,9 @@ static inline void pgd_free(pgd_t *pgd) | |||
44 | static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, | 38 | static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, |
45 | unsigned long address) | 39 | unsigned long address) |
46 | { | 40 | { |
47 | int count = 0; | ||
48 | pte_t *pte; | 41 | pte_t *pte; |
49 | 42 | ||
50 | do { | 43 | pte = (pte_t *)get_zeroed_page(GFP_KERNEL | __GFP_REPEAT); |
51 | pte = (pte_t *) __get_free_page(GFP_KERNEL | __GFP_REPEAT); | ||
52 | if (pte) | ||
53 | clear_page(pte); | ||
54 | else { | ||
55 | current->state = TASK_UNINTERRUPTIBLE; | ||
56 | schedule_timeout(HZ); | ||
57 | } | ||
58 | } while (!pte && (count++ < 10)); | ||
59 | 44 | ||
60 | return pte; | 45 | return pte; |
61 | } | 46 | } |
@@ -63,18 +48,9 @@ static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, | |||
63 | static inline struct page *pte_alloc_one(struct mm_struct *mm, | 48 | static inline struct page *pte_alloc_one(struct mm_struct *mm, |
64 | unsigned long address) | 49 | unsigned long address) |
65 | { | 50 | { |
66 | int count = 0; | ||
67 | struct page *pte; | 51 | struct page *pte; |
68 | 52 | ||
69 | do { | 53 | pte = alloc_page(GFP_KERNEL | __GFP_REPEAT | __GFP_ZERO); |
70 | pte = alloc_pages(GFP_KERNEL, 0); | ||
71 | if (pte) | ||
72 | clear_page(page_address(pte)); | ||
73 | else { | ||
74 | current->state = TASK_UNINTERRUPTIBLE; | ||
75 | schedule_timeout(HZ); | ||
76 | } | ||
77 | } while (!pte && (count++ < 10)); | ||
78 | 54 | ||
79 | return pte; | 55 | return pte; |
80 | } | 56 | } |
diff --git a/include/asm-avr32/pgtable.h b/include/asm-avr32/pgtable.h index c07bdd10b891..018f6e2a0242 100644 --- a/include/asm-avr32/pgtable.h +++ b/include/asm-avr32/pgtable.h | |||
@@ -32,8 +32,6 @@ | |||
32 | #define USER_PTRS_PER_PGD (TASK_SIZE / PGDIR_SIZE) | 32 | #define USER_PTRS_PER_PGD (TASK_SIZE / PGDIR_SIZE) |
33 | #define FIRST_USER_ADDRESS 0 | 33 | #define FIRST_USER_ADDRESS 0 |
34 | 34 | ||
35 | #define PTE_PHYS_MASK 0x1ffff000 | ||
36 | |||
37 | #ifndef __ASSEMBLY__ | 35 | #ifndef __ASSEMBLY__ |
38 | extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; | 36 | extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; |
39 | extern void paging_init(void); | 37 | extern void paging_init(void); |
@@ -265,7 +263,7 @@ static inline pte_t pte_mkyoung(pte_t pte) | |||
265 | * trivial. | 263 | * trivial. |
266 | */ | 264 | */ |
267 | #define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT)) | 265 | #define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT)) |
268 | #define pte_page(x) phys_to_page(pte_val(x) & PTE_PHYS_MASK) | 266 | #define pte_page(x) (pfn_to_page(pte_pfn(x))) |
269 | 267 | ||
270 | /* | 268 | /* |
271 | * Mark the prot value as uncacheable and unbufferable | 269 | * Mark the prot value as uncacheable and unbufferable |
diff --git a/include/asm-frv/unistd.h b/include/asm-frv/unistd.h index 7306c71a8926..cd84f1771e34 100644 --- a/include/asm-frv/unistd.h +++ b/include/asm-frv/unistd.h | |||
@@ -330,10 +330,11 @@ | |||
330 | #define __NR_signalfd 321 | 330 | #define __NR_signalfd 321 |
331 | #define __NR_timerfd 322 | 331 | #define __NR_timerfd 322 |
332 | #define __NR_eventfd 323 | 332 | #define __NR_eventfd 323 |
333 | #define __NR_fallocate 324 | ||
333 | 334 | ||
334 | #ifdef __KERNEL__ | 335 | #ifdef __KERNEL__ |
335 | 336 | ||
336 | #define NR_syscalls 324 | 337 | #define NR_syscalls 325 |
337 | 338 | ||
338 | #define __ARCH_WANT_IPC_PARSE_VERSION | 339 | #define __ARCH_WANT_IPC_PARSE_VERSION |
339 | /* #define __ARCH_WANT_OLD_READDIR */ | 340 | /* #define __ARCH_WANT_OLD_READDIR */ |
diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h index f605e8d0eed3..5f0d797d33fd 100644 --- a/include/asm-generic/pgtable.h +++ b/include/asm-generic/pgtable.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define _ASM_GENERIC_PGTABLE_H | 2 | #define _ASM_GENERIC_PGTABLE_H |
3 | 3 | ||
4 | #ifndef __ASSEMBLY__ | 4 | #ifndef __ASSEMBLY__ |
5 | #ifdef CONFIG_MMU | ||
5 | 6 | ||
6 | #ifndef __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS | 7 | #ifndef __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS |
7 | /* | 8 | /* |
@@ -133,41 +134,6 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addres | |||
133 | #endif | 134 | #endif |
134 | 135 | ||
135 | /* | 136 | /* |
136 | * A facility to provide lazy MMU batching. This allows PTE updates and | ||
137 | * page invalidations to be delayed until a call to leave lazy MMU mode | ||
138 | * is issued. Some architectures may benefit from doing this, and it is | ||
139 | * beneficial for both shadow and direct mode hypervisors, which may batch | ||
140 | * the PTE updates which happen during this window. Note that using this | ||
141 | * interface requires that read hazards be removed from the code. A read | ||
142 | * hazard could result in the direct mode hypervisor case, since the actual | ||
143 | * write to the page tables may not yet have taken place, so reads though | ||
144 | * a raw PTE pointer after it has been modified are not guaranteed to be | ||
145 | * up to date. This mode can only be entered and left under the protection of | ||
146 | * the page table locks for all page tables which may be modified. In the UP | ||
147 | * case, this is required so that preemption is disabled, and in the SMP case, | ||
148 | * it must synchronize the delayed page table writes properly on other CPUs. | ||
149 | */ | ||
150 | #ifndef __HAVE_ARCH_ENTER_LAZY_MMU_MODE | ||
151 | #define arch_enter_lazy_mmu_mode() do {} while (0) | ||
152 | #define arch_leave_lazy_mmu_mode() do {} while (0) | ||
153 | #define arch_flush_lazy_mmu_mode() do {} while (0) | ||
154 | #endif | ||
155 | |||
156 | /* | ||
157 | * A facility to provide batching of the reload of page tables with the | ||
158 | * actual context switch code for paravirtualized guests. By convention, | ||
159 | * only one of the lazy modes (CPU, MMU) should be active at any given | ||
160 | * time, entry should never be nested, and entry and exits should always | ||
161 | * be paired. This is for sanity of maintaining and reasoning about the | ||
162 | * kernel code. | ||
163 | */ | ||
164 | #ifndef __HAVE_ARCH_ENTER_LAZY_CPU_MODE | ||
165 | #define arch_enter_lazy_cpu_mode() do {} while (0) | ||
166 | #define arch_leave_lazy_cpu_mode() do {} while (0) | ||
167 | #define arch_flush_lazy_cpu_mode() do {} while (0) | ||
168 | #endif | ||
169 | |||
170 | /* | ||
171 | * When walking page tables, get the address of the next boundary, | 137 | * When walking page tables, get the address of the next boundary, |
172 | * or the end address of the range if that comes earlier. Although no | 138 | * or the end address of the range if that comes earlier. Although no |
173 | * vma end wraps to 0, rounded up __boundary may wrap to 0 throughout. | 139 | * vma end wraps to 0, rounded up __boundary may wrap to 0 throughout. |
@@ -233,6 +199,43 @@ static inline int pmd_none_or_clear_bad(pmd_t *pmd) | |||
233 | } | 199 | } |
234 | return 0; | 200 | return 0; |
235 | } | 201 | } |
202 | #endif /* CONFIG_MMU */ | ||
203 | |||
204 | /* | ||
205 | * A facility to provide lazy MMU batching. This allows PTE updates and | ||
206 | * page invalidations to be delayed until a call to leave lazy MMU mode | ||
207 | * is issued. Some architectures may benefit from doing this, and it is | ||
208 | * beneficial for both shadow and direct mode hypervisors, which may batch | ||
209 | * the PTE updates which happen during this window. Note that using this | ||
210 | * interface requires that read hazards be removed from the code. A read | ||
211 | * hazard could result in the direct mode hypervisor case, since the actual | ||
212 | * write to the page tables may not yet have taken place, so reads though | ||
213 | * a raw PTE pointer after it has been modified are not guaranteed to be | ||
214 | * up to date. This mode can only be entered and left under the protection of | ||
215 | * the page table locks for all page tables which may be modified. In the UP | ||
216 | * case, this is required so that preemption is disabled, and in the SMP case, | ||
217 | * it must synchronize the delayed page table writes properly on other CPUs. | ||
218 | */ | ||
219 | #ifndef __HAVE_ARCH_ENTER_LAZY_MMU_MODE | ||
220 | #define arch_enter_lazy_mmu_mode() do {} while (0) | ||
221 | #define arch_leave_lazy_mmu_mode() do {} while (0) | ||
222 | #define arch_flush_lazy_mmu_mode() do {} while (0) | ||
223 | #endif | ||
224 | |||
225 | /* | ||
226 | * A facility to provide batching of the reload of page tables with the | ||
227 | * actual context switch code for paravirtualized guests. By convention, | ||
228 | * only one of the lazy modes (CPU, MMU) should be active at any given | ||
229 | * time, entry should never be nested, and entry and exits should always | ||
230 | * be paired. This is for sanity of maintaining and reasoning about the | ||
231 | * kernel code. | ||
232 | */ | ||
233 | #ifndef __HAVE_ARCH_ENTER_LAZY_CPU_MODE | ||
234 | #define arch_enter_lazy_cpu_mode() do {} while (0) | ||
235 | #define arch_leave_lazy_cpu_mode() do {} while (0) | ||
236 | #define arch_flush_lazy_cpu_mode() do {} while (0) | ||
237 | #endif | ||
238 | |||
236 | #endif /* !__ASSEMBLY__ */ | 239 | #endif /* !__ASSEMBLY__ */ |
237 | 240 | ||
238 | #endif /* _ASM_GENERIC_PGTABLE_H */ | 241 | #endif /* _ASM_GENERIC_PGTABLE_H */ |
diff --git a/include/asm-i386/apic.h b/include/asm-i386/apic.h index 1e8f6f252dd3..4091b33dcb10 100644 --- a/include/asm-i386/apic.h +++ b/include/asm-i386/apic.h | |||
@@ -116,6 +116,8 @@ extern void enable_NMI_through_LVT0 (void * dummy); | |||
116 | extern int timer_over_8254; | 116 | extern int timer_over_8254; |
117 | extern int local_apic_timer_c2_ok; | 117 | extern int local_apic_timer_c2_ok; |
118 | 118 | ||
119 | extern int local_apic_timer_disabled; | ||
120 | |||
119 | #else /* !CONFIG_X86_LOCAL_APIC */ | 121 | #else /* !CONFIG_X86_LOCAL_APIC */ |
120 | static inline void lapic_shutdown(void) { } | 122 | static inline void lapic_shutdown(void) { } |
121 | 123 | ||
diff --git a/include/asm-i386/cpufeature.h b/include/asm-i386/cpufeature.h index c961c03cf1e2..7b3aa28ebc6e 100644 --- a/include/asm-i386/cpufeature.h +++ b/include/asm-i386/cpufeature.h | |||
@@ -79,7 +79,7 @@ | |||
79 | #define X86_FEATURE_ARCH_PERFMON (3*32+11) /* Intel Architectural PerfMon */ | 79 | #define X86_FEATURE_ARCH_PERFMON (3*32+11) /* Intel Architectural PerfMon */ |
80 | #define X86_FEATURE_PEBS (3*32+12) /* Precise-Event Based Sampling */ | 80 | #define X86_FEATURE_PEBS (3*32+12) /* Precise-Event Based Sampling */ |
81 | #define X86_FEATURE_BTS (3*32+13) /* Branch Trace Store */ | 81 | #define X86_FEATURE_BTS (3*32+13) /* Branch Trace Store */ |
82 | #define X86_FEATURE_LAPIC_TIMER_BROKEN (3*32+ 14) /* lapic timer broken in C1 */ | 82 | /* 14 free */ |
83 | #define X86_FEATURE_SYNC_RDTSC (3*32+15) /* RDTSC synchronizes the CPU */ | 83 | #define X86_FEATURE_SYNC_RDTSC (3*32+15) /* RDTSC synchronizes the CPU */ |
84 | #define X86_FEATURE_REP_GOOD (3*32+16) /* rep microcode works well on this CPU */ | 84 | #define X86_FEATURE_REP_GOOD (3*32+16) /* rep microcode works well on this CPU */ |
85 | 85 | ||
diff --git a/include/asm-i386/mach-default/mach_wakecpu.h b/include/asm-i386/mach-default/mach_wakecpu.h index 673b85c9b273..3ebb17893aa5 100644 --- a/include/asm-i386/mach-default/mach_wakecpu.h +++ b/include/asm-i386/mach-default/mach_wakecpu.h | |||
@@ -15,7 +15,8 @@ | |||
15 | 15 | ||
16 | static inline void wait_for_init_deassert(atomic_t *deassert) | 16 | static inline void wait_for_init_deassert(atomic_t *deassert) |
17 | { | 17 | { |
18 | while (!atomic_read(deassert)); | 18 | while (!atomic_read(deassert)) |
19 | cpu_relax(); | ||
19 | return; | 20 | return; |
20 | } | 21 | } |
21 | 22 | ||
diff --git a/include/asm-i386/mach-es7000/mach_wakecpu.h b/include/asm-i386/mach-es7000/mach_wakecpu.h index efc903b73486..84ff58314501 100644 --- a/include/asm-i386/mach-es7000/mach_wakecpu.h +++ b/include/asm-i386/mach-es7000/mach_wakecpu.h | |||
@@ -31,7 +31,8 @@ wakeup_secondary_cpu(int phys_apicid, unsigned long start_eip) | |||
31 | static inline void wait_for_init_deassert(atomic_t *deassert) | 31 | static inline void wait_for_init_deassert(atomic_t *deassert) |
32 | { | 32 | { |
33 | #ifdef WAKE_SECONDARY_VIA_INIT | 33 | #ifdef WAKE_SECONDARY_VIA_INIT |
34 | while (!atomic_read(deassert)); | 34 | while (!atomic_read(deassert)) |
35 | cpu_relax(); | ||
35 | #endif | 36 | #endif |
36 | return; | 37 | return; |
37 | } | 38 | } |
diff --git a/include/asm-i386/nmi.h b/include/asm-i386/nmi.h index ff30c98f87b0..70a958a8e381 100644 --- a/include/asm-i386/nmi.h +++ b/include/asm-i386/nmi.h | |||
@@ -33,11 +33,12 @@ extern int nmi_watchdog_tick (struct pt_regs * regs, unsigned reason); | |||
33 | 33 | ||
34 | extern atomic_t nmi_active; | 34 | extern atomic_t nmi_active; |
35 | extern unsigned int nmi_watchdog; | 35 | extern unsigned int nmi_watchdog; |
36 | #define NMI_DEFAULT -1 | 36 | #define NMI_DISABLED -1 |
37 | #define NMI_NONE 0 | 37 | #define NMI_NONE 0 |
38 | #define NMI_IO_APIC 1 | 38 | #define NMI_IO_APIC 1 |
39 | #define NMI_LOCAL_APIC 2 | 39 | #define NMI_LOCAL_APIC 2 |
40 | #define NMI_INVALID 3 | 40 | #define NMI_INVALID 3 |
41 | #define NMI_DEFAULT NMI_DISABLED | ||
41 | 42 | ||
42 | struct ctl_table; | 43 | struct ctl_table; |
43 | struct file; | 44 | struct file; |
diff --git a/include/asm-i386/paravirt.h b/include/asm-i386/paravirt.h index 7df88be2dd9e..9fa3fa9e62d1 100644 --- a/include/asm-i386/paravirt.h +++ b/include/asm-i386/paravirt.h | |||
@@ -47,7 +47,8 @@ struct paravirt_ops | |||
47 | * The patch function should return the number of bytes of code | 47 | * The patch function should return the number of bytes of code |
48 | * generated, as we nop pad the rest in generic code. | 48 | * generated, as we nop pad the rest in generic code. |
49 | */ | 49 | */ |
50 | unsigned (*patch)(u8 type, u16 clobber, void *firstinsn, unsigned len); | 50 | unsigned (*patch)(u8 type, u16 clobber, void *insnbuf, |
51 | unsigned long addr, unsigned len); | ||
51 | 52 | ||
52 | /* Basic arch-specific setup */ | 53 | /* Basic arch-specific setup */ |
53 | void (*arch_setup)(void); | 54 | void (*arch_setup)(void); |
@@ -253,13 +254,16 @@ extern struct paravirt_ops paravirt_ops; | |||
253 | 254 | ||
254 | unsigned paravirt_patch_nop(void); | 255 | unsigned paravirt_patch_nop(void); |
255 | unsigned paravirt_patch_ignore(unsigned len); | 256 | unsigned paravirt_patch_ignore(unsigned len); |
256 | unsigned paravirt_patch_call(void *target, u16 tgt_clobbers, | 257 | unsigned paravirt_patch_call(void *insnbuf, |
257 | void *site, u16 site_clobbers, | 258 | const void *target, u16 tgt_clobbers, |
259 | unsigned long addr, u16 site_clobbers, | ||
258 | unsigned len); | 260 | unsigned len); |
259 | unsigned paravirt_patch_jmp(void *target, void *site, unsigned len); | 261 | unsigned paravirt_patch_jmp(const void *target, void *insnbuf, |
260 | unsigned paravirt_patch_default(u8 type, u16 clobbers, void *site, unsigned len); | 262 | unsigned long addr, unsigned len); |
263 | unsigned paravirt_patch_default(u8 type, u16 clobbers, void *insnbuf, | ||
264 | unsigned long addr, unsigned len); | ||
261 | 265 | ||
262 | unsigned paravirt_patch_insns(void *site, unsigned len, | 266 | unsigned paravirt_patch_insns(void *insnbuf, unsigned len, |
263 | const char *start, const char *end); | 267 | const char *start, const char *end); |
264 | 268 | ||
265 | int paravirt_disable_iospace(void); | 269 | int paravirt_disable_iospace(void); |
diff --git a/include/asm-i386/pci.h b/include/asm-i386/pci.h index d790343e9982..4fcacc711385 100644 --- a/include/asm-i386/pci.h +++ b/include/asm-i386/pci.h | |||
@@ -8,6 +8,9 @@ struct pci_sysdata { | |||
8 | int node; /* NUMA node */ | 8 | int node; /* NUMA node */ |
9 | }; | 9 | }; |
10 | 10 | ||
11 | /* scan a bus after allocating a pci_sysdata for it */ | ||
12 | extern struct pci_bus *pci_scan_bus_with_sysdata(int busno); | ||
13 | |||
11 | #include <linux/mm.h> /* for struct page */ | 14 | #include <linux/mm.h> /* for struct page */ |
12 | 15 | ||
13 | /* Can be used to override the logic in pci_scan_bus for skipping | 16 | /* Can be used to override the logic in pci_scan_bus for skipping |
diff --git a/include/asm-ia64/atomic.h b/include/asm-ia64/atomic.h index 1fc3b83325da..50c2b83fd5a0 100644 --- a/include/asm-ia64/atomic.h +++ b/include/asm-ia64/atomic.h | |||
@@ -55,7 +55,7 @@ ia64_atomic64_add (__s64 i, atomic64_t *v) | |||
55 | 55 | ||
56 | do { | 56 | do { |
57 | CMPXCHG_BUGCHECK(v); | 57 | CMPXCHG_BUGCHECK(v); |
58 | old = atomic_read(v); | 58 | old = atomic64_read(v); |
59 | new = old + i; | 59 | new = old + i; |
60 | } while (ia64_cmpxchg(acq, v, old, new, sizeof(atomic64_t)) != old); | 60 | } while (ia64_cmpxchg(acq, v, old, new, sizeof(atomic64_t)) != old); |
61 | return new; | 61 | return new; |
@@ -83,7 +83,7 @@ ia64_atomic64_sub (__s64 i, atomic64_t *v) | |||
83 | 83 | ||
84 | do { | 84 | do { |
85 | CMPXCHG_BUGCHECK(v); | 85 | CMPXCHG_BUGCHECK(v); |
86 | old = atomic_read(v); | 86 | old = atomic64_read(v); |
87 | new = old - i; | 87 | new = old - i; |
88 | } while (ia64_cmpxchg(acq, v, old, new, sizeof(atomic64_t)) != old); | 88 | } while (ia64_cmpxchg(acq, v, old, new, sizeof(atomic64_t)) != old); |
89 | return new; | 89 | return new; |
diff --git a/include/asm-ia64/hw_irq.h b/include/asm-ia64/hw_irq.h index efa1b8f7251d..bba5baa3c7fc 100644 --- a/include/asm-ia64/hw_irq.h +++ b/include/asm-ia64/hw_irq.h | |||
@@ -124,6 +124,11 @@ static inline void ia64_resend_irq(unsigned int vector) | |||
124 | extern irq_desc_t irq_desc[NR_IRQS]; | 124 | extern irq_desc_t irq_desc[NR_IRQS]; |
125 | 125 | ||
126 | #ifndef CONFIG_IA64_GENERIC | 126 | #ifndef CONFIG_IA64_GENERIC |
127 | static inline ia64_vector __ia64_irq_to_vector(int irq) | ||
128 | { | ||
129 | return irq_cfg[irq].vector; | ||
130 | } | ||
131 | |||
127 | static inline unsigned int | 132 | static inline unsigned int |
128 | __ia64_local_vector_to_irq (ia64_vector vec) | 133 | __ia64_local_vector_to_irq (ia64_vector vec) |
129 | { | 134 | { |
@@ -145,7 +150,7 @@ __ia64_local_vector_to_irq (ia64_vector vec) | |||
145 | static inline ia64_vector | 150 | static inline ia64_vector |
146 | irq_to_vector (int irq) | 151 | irq_to_vector (int irq) |
147 | { | 152 | { |
148 | return irq_cfg[irq].vector; | 153 | return platform_irq_to_vector(irq); |
149 | } | 154 | } |
150 | 155 | ||
151 | /* | 156 | /* |
diff --git a/include/asm-ia64/machvec.h b/include/asm-ia64/machvec.h index 5cf8bf1e805e..c201a2020aa4 100644 --- a/include/asm-ia64/machvec.h +++ b/include/asm-ia64/machvec.h | |||
@@ -30,6 +30,7 @@ typedef void ia64_mv_send_ipi_t (int, int, int, int); | |||
30 | typedef void ia64_mv_timer_interrupt_t (int, void *); | 30 | typedef void ia64_mv_timer_interrupt_t (int, void *); |
31 | typedef void ia64_mv_global_tlb_purge_t (struct mm_struct *, unsigned long, unsigned long, unsigned long); | 31 | typedef void ia64_mv_global_tlb_purge_t (struct mm_struct *, unsigned long, unsigned long, unsigned long); |
32 | typedef void ia64_mv_tlb_migrate_finish_t (struct mm_struct *); | 32 | typedef void ia64_mv_tlb_migrate_finish_t (struct mm_struct *); |
33 | typedef u8 ia64_mv_irq_to_vector (int); | ||
33 | typedef unsigned int ia64_mv_local_vector_to_irq (u8); | 34 | typedef unsigned int ia64_mv_local_vector_to_irq (u8); |
34 | typedef char *ia64_mv_pci_get_legacy_mem_t (struct pci_bus *); | 35 | typedef char *ia64_mv_pci_get_legacy_mem_t (struct pci_bus *); |
35 | typedef int ia64_mv_pci_legacy_read_t (struct pci_bus *, u16 port, u32 *val, | 36 | typedef int ia64_mv_pci_legacy_read_t (struct pci_bus *, u16 port, u32 *val, |
@@ -145,6 +146,7 @@ extern void machvec_tlb_migrate_finish (struct mm_struct *); | |||
145 | # define platform_dma_sync_sg_for_device ia64_mv.dma_sync_sg_for_device | 146 | # define platform_dma_sync_sg_for_device ia64_mv.dma_sync_sg_for_device |
146 | # define platform_dma_mapping_error ia64_mv.dma_mapping_error | 147 | # define platform_dma_mapping_error ia64_mv.dma_mapping_error |
147 | # define platform_dma_supported ia64_mv.dma_supported | 148 | # define platform_dma_supported ia64_mv.dma_supported |
149 | # define platform_irq_to_vector ia64_mv.irq_to_vector | ||
148 | # define platform_local_vector_to_irq ia64_mv.local_vector_to_irq | 150 | # define platform_local_vector_to_irq ia64_mv.local_vector_to_irq |
149 | # define platform_pci_get_legacy_mem ia64_mv.pci_get_legacy_mem | 151 | # define platform_pci_get_legacy_mem ia64_mv.pci_get_legacy_mem |
150 | # define platform_pci_legacy_read ia64_mv.pci_legacy_read | 152 | # define platform_pci_legacy_read ia64_mv.pci_legacy_read |
@@ -198,6 +200,7 @@ struct ia64_machine_vector { | |||
198 | ia64_mv_dma_sync_sg_for_device *dma_sync_sg_for_device; | 200 | ia64_mv_dma_sync_sg_for_device *dma_sync_sg_for_device; |
199 | ia64_mv_dma_mapping_error *dma_mapping_error; | 201 | ia64_mv_dma_mapping_error *dma_mapping_error; |
200 | ia64_mv_dma_supported *dma_supported; | 202 | ia64_mv_dma_supported *dma_supported; |
203 | ia64_mv_irq_to_vector *irq_to_vector; | ||
201 | ia64_mv_local_vector_to_irq *local_vector_to_irq; | 204 | ia64_mv_local_vector_to_irq *local_vector_to_irq; |
202 | ia64_mv_pci_get_legacy_mem_t *pci_get_legacy_mem; | 205 | ia64_mv_pci_get_legacy_mem_t *pci_get_legacy_mem; |
203 | ia64_mv_pci_legacy_read_t *pci_legacy_read; | 206 | ia64_mv_pci_legacy_read_t *pci_legacy_read; |
@@ -247,6 +250,7 @@ struct ia64_machine_vector { | |||
247 | platform_dma_sync_sg_for_device, \ | 250 | platform_dma_sync_sg_for_device, \ |
248 | platform_dma_mapping_error, \ | 251 | platform_dma_mapping_error, \ |
249 | platform_dma_supported, \ | 252 | platform_dma_supported, \ |
253 | platform_irq_to_vector, \ | ||
250 | platform_local_vector_to_irq, \ | 254 | platform_local_vector_to_irq, \ |
251 | platform_pci_get_legacy_mem, \ | 255 | platform_pci_get_legacy_mem, \ |
252 | platform_pci_legacy_read, \ | 256 | platform_pci_legacy_read, \ |
@@ -366,6 +370,9 @@ extern ia64_mv_dma_supported swiotlb_dma_supported; | |||
366 | #ifndef platform_dma_supported | 370 | #ifndef platform_dma_supported |
367 | # define platform_dma_supported swiotlb_dma_supported | 371 | # define platform_dma_supported swiotlb_dma_supported |
368 | #endif | 372 | #endif |
373 | #ifndef platform_irq_to_vector | ||
374 | # define platform_irq_to_vector __ia64_irq_to_vector | ||
375 | #endif | ||
369 | #ifndef platform_local_vector_to_irq | 376 | #ifndef platform_local_vector_to_irq |
370 | # define platform_local_vector_to_irq __ia64_local_vector_to_irq | 377 | # define platform_local_vector_to_irq __ia64_local_vector_to_irq |
371 | #endif | 378 | #endif |
diff --git a/include/asm-ia64/machvec_init.h b/include/asm-ia64/machvec_init.h index 2d36f6840f0b..7f21249fba3f 100644 --- a/include/asm-ia64/machvec_init.h +++ b/include/asm-ia64/machvec_init.h | |||
@@ -2,6 +2,7 @@ | |||
2 | 2 | ||
3 | extern ia64_mv_send_ipi_t ia64_send_ipi; | 3 | extern ia64_mv_send_ipi_t ia64_send_ipi; |
4 | extern ia64_mv_global_tlb_purge_t ia64_global_tlb_purge; | 4 | extern ia64_mv_global_tlb_purge_t ia64_global_tlb_purge; |
5 | extern ia64_mv_irq_to_vector __ia64_irq_to_vector; | ||
5 | extern ia64_mv_local_vector_to_irq __ia64_local_vector_to_irq; | 6 | extern ia64_mv_local_vector_to_irq __ia64_local_vector_to_irq; |
6 | extern ia64_mv_pci_get_legacy_mem_t ia64_pci_get_legacy_mem; | 7 | extern ia64_mv_pci_get_legacy_mem_t ia64_pci_get_legacy_mem; |
7 | extern ia64_mv_pci_legacy_read_t ia64_pci_legacy_read; | 8 | extern ia64_mv_pci_legacy_read_t ia64_pci_legacy_read; |
diff --git a/include/asm-ia64/machvec_sn2.h b/include/asm-ia64/machvec_sn2.h index eaa2fce0fecd..61439a7f5b08 100644 --- a/include/asm-ia64/machvec_sn2.h +++ b/include/asm-ia64/machvec_sn2.h | |||
@@ -35,6 +35,7 @@ extern ia64_mv_send_ipi_t sn2_send_IPI; | |||
35 | extern ia64_mv_timer_interrupt_t sn_timer_interrupt; | 35 | extern ia64_mv_timer_interrupt_t sn_timer_interrupt; |
36 | extern ia64_mv_global_tlb_purge_t sn2_global_tlb_purge; | 36 | extern ia64_mv_global_tlb_purge_t sn2_global_tlb_purge; |
37 | extern ia64_mv_tlb_migrate_finish_t sn_tlb_migrate_finish; | 37 | extern ia64_mv_tlb_migrate_finish_t sn_tlb_migrate_finish; |
38 | extern ia64_mv_irq_to_vector sn_irq_to_vector; | ||
38 | extern ia64_mv_local_vector_to_irq sn_local_vector_to_irq; | 39 | extern ia64_mv_local_vector_to_irq sn_local_vector_to_irq; |
39 | extern ia64_mv_pci_get_legacy_mem_t sn_pci_get_legacy_mem; | 40 | extern ia64_mv_pci_get_legacy_mem_t sn_pci_get_legacy_mem; |
40 | extern ia64_mv_pci_legacy_read_t sn_pci_legacy_read; | 41 | extern ia64_mv_pci_legacy_read_t sn_pci_legacy_read; |
@@ -104,6 +105,7 @@ extern ia64_mv_pci_fixup_bus_t sn_pci_fixup_bus; | |||
104 | #define platform_readw_relaxed __sn_readw_relaxed | 105 | #define platform_readw_relaxed __sn_readw_relaxed |
105 | #define platform_readl_relaxed __sn_readl_relaxed | 106 | #define platform_readl_relaxed __sn_readl_relaxed |
106 | #define platform_readq_relaxed __sn_readq_relaxed | 107 | #define platform_readq_relaxed __sn_readq_relaxed |
108 | #define platform_irq_to_vector sn_irq_to_vector | ||
107 | #define platform_local_vector_to_irq sn_local_vector_to_irq | 109 | #define platform_local_vector_to_irq sn_local_vector_to_irq |
108 | #define platform_pci_get_legacy_mem sn_pci_get_legacy_mem | 110 | #define platform_pci_get_legacy_mem sn_pci_get_legacy_mem |
109 | #define platform_pci_legacy_read sn_pci_legacy_read | 111 | #define platform_pci_legacy_read sn_pci_legacy_read |
diff --git a/include/asm-powerpc/dma-mapping.h b/include/asm-powerpc/dma-mapping.h index f6bd804d9090..744d6bb24116 100644 --- a/include/asm-powerpc/dma-mapping.h +++ b/include/asm-powerpc/dma-mapping.h | |||
@@ -95,7 +95,7 @@ static inline int dma_set_mask(struct device *dev, u64 dma_mask) | |||
95 | return -EIO; | 95 | return -EIO; |
96 | if (dma_ops->set_dma_mask != NULL) | 96 | if (dma_ops->set_dma_mask != NULL) |
97 | return dma_ops->set_dma_mask(dev, dma_mask); | 97 | return dma_ops->set_dma_mask(dev, dma_mask); |
98 | if (!dev->dma_mask || !dma_supported(dev, *dev->dma_mask)) | 98 | if (!dev->dma_mask || !dma_supported(dev, dma_mask)) |
99 | return -EIO; | 99 | return -EIO; |
100 | *dev->dma_mask = dma_mask; | 100 | *dev->dma_mask = dma_mask; |
101 | return 0; | 101 | return 0; |
diff --git a/include/asm-powerpc/spu_priv1.h b/include/asm-powerpc/spu_priv1.h index 7e78f6a1ab8b..0f37c7c90820 100644 --- a/include/asm-powerpc/spu_priv1.h +++ b/include/asm-powerpc/spu_priv1.h | |||
@@ -178,6 +178,7 @@ struct spu_management_ops { | |||
178 | int (*enumerate_spus)(int (*fn)(void *data)); | 178 | int (*enumerate_spus)(int (*fn)(void *data)); |
179 | int (*create_spu)(struct spu *spu, void *data); | 179 | int (*create_spu)(struct spu *spu, void *data); |
180 | int (*destroy_spu)(struct spu *spu); | 180 | int (*destroy_spu)(struct spu *spu); |
181 | int (*init_affinity)(void); | ||
181 | }; | 182 | }; |
182 | 183 | ||
183 | extern const struct spu_management_ops* spu_management_ops; | 184 | extern const struct spu_management_ops* spu_management_ops; |
@@ -200,6 +201,12 @@ spu_destroy_spu (struct spu *spu) | |||
200 | return spu_management_ops->destroy_spu(spu); | 201 | return spu_management_ops->destroy_spu(spu); |
201 | } | 202 | } |
202 | 203 | ||
204 | static inline int | ||
205 | spu_init_affinity (void) | ||
206 | { | ||
207 | return spu_management_ops->init_affinity(); | ||
208 | } | ||
209 | |||
203 | /* | 210 | /* |
204 | * The declarations folowing are put here for convenience | 211 | * The declarations folowing are put here for convenience |
205 | * and only intended to be used by the platform setup code. | 212 | * and only intended to be used by the platform setup code. |
diff --git a/include/asm-sh/dma-mapping.h b/include/asm-sh/dma-mapping.h index 6f492ac3fa13..84fefdaa01a5 100644 --- a/include/asm-sh/dma-mapping.h +++ b/include/asm-sh/dma-mapping.h | |||
@@ -160,6 +160,25 @@ static inline void dma_sync_single_for_device(struct device *dev, | |||
160 | dma_sync_single(dev, dma_handle, size, dir); | 160 | dma_sync_single(dev, dma_handle, size, dir); |
161 | } | 161 | } |
162 | 162 | ||
163 | static inline void dma_sync_single_range_for_cpu(struct device *dev, | ||
164 | dma_addr_t dma_handle, | ||
165 | unsigned long offset, | ||
166 | size_t size, | ||
167 | enum dma_data_direction direction) | ||
168 | { | ||
169 | dma_sync_single_for_cpu(dev, dma_handle+offset, size, direction); | ||
170 | } | ||
171 | |||
172 | static inline void dma_sync_single_range_for_device(struct device *dev, | ||
173 | dma_addr_t dma_handle, | ||
174 | unsigned long offset, | ||
175 | size_t size, | ||
176 | enum dma_data_direction direction) | ||
177 | { | ||
178 | dma_sync_single_for_device(dev, dma_handle+offset, size, direction); | ||
179 | } | ||
180 | |||
181 | |||
163 | static inline void dma_sync_sg_for_cpu(struct device *dev, | 182 | static inline void dma_sync_sg_for_cpu(struct device *dev, |
164 | struct scatterlist *sg, int nelems, | 183 | struct scatterlist *sg, int nelems, |
165 | enum dma_data_direction dir) | 184 | enum dma_data_direction dir) |
diff --git a/include/asm-sh64/dma-mapping.h b/include/asm-sh64/dma-mapping.h index d505f357f819..de4309960207 100644 --- a/include/asm-sh64/dma-mapping.h +++ b/include/asm-sh64/dma-mapping.h | |||
@@ -141,6 +141,24 @@ static inline void dma_sync_single_for_device(struct device *dev, | |||
141 | dma_sync_single(dev, dma_handle, size, dir); | 141 | dma_sync_single(dev, dma_handle, size, dir); |
142 | } | 142 | } |
143 | 143 | ||
144 | static inline void dma_sync_single_range_for_cpu(struct device *dev, | ||
145 | dma_addr_t dma_handle, | ||
146 | unsigned long offset, | ||
147 | size_t size, | ||
148 | enum dma_data_direction direction) | ||
149 | { | ||
150 | dma_sync_single_for_cpu(dev, dma_handle+offset, size, direction); | ||
151 | } | ||
152 | |||
153 | static inline void dma_sync_single_range_for_device(struct device *dev, | ||
154 | dma_addr_t dma_handle, | ||
155 | unsigned long offset, | ||
156 | size_t size, | ||
157 | enum dma_data_direction direction) | ||
158 | { | ||
159 | dma_sync_single_for_device(dev, dma_handle+offset, size, direction); | ||
160 | } | ||
161 | |||
144 | static inline void dma_sync_sg_for_cpu(struct device *dev, | 162 | static inline void dma_sync_sg_for_cpu(struct device *dev, |
145 | struct scatterlist *sg, int nelems, | 163 | struct scatterlist *sg, int nelems, |
146 | enum dma_data_direction dir) | 164 | enum dma_data_direction dir) |
diff --git a/include/asm-sparc/sbus.h b/include/asm-sparc/sbus.h index d036e4419d79..27d076c46964 100644 --- a/include/asm-sparc/sbus.h +++ b/include/asm-sparc/sbus.h | |||
@@ -68,7 +68,6 @@ struct sbus_dev { | |||
68 | /* This struct describes the SBus(s) found on this machine. */ | 68 | /* This struct describes the SBus(s) found on this machine. */ |
69 | struct sbus_bus { | 69 | struct sbus_bus { |
70 | struct of_device ofdev; | 70 | struct of_device ofdev; |
71 | void *iommu; /* Opaque IOMMU cookie */ | ||
72 | struct sbus_dev *devices; /* Link to devices on this SBus */ | 71 | struct sbus_dev *devices; /* Link to devices on this SBus */ |
73 | struct sbus_bus *next; /* next SBus, if more than one SBus */ | 72 | struct sbus_bus *next; /* next SBus, if more than one SBus */ |
74 | int prom_node; /* PROM device tree node for this SBus */ | 73 | int prom_node; /* PROM device tree node for this SBus */ |
diff --git a/include/asm-sparc/sfp-machine.h b/include/asm-sparc/sfp-machine.h index ecfc86a4a725..266a42b8f99f 100644 --- a/include/asm-sparc/sfp-machine.h +++ b/include/asm-sparc/sfp-machine.h | |||
@@ -203,4 +203,10 @@ extern struct task_struct *last_task_used_math; | |||
203 | #define FP_INHIBIT_RESULTS ((last_task_used_math->thread.fsr >> 23) & _fex) | 203 | #define FP_INHIBIT_RESULTS ((last_task_used_math->thread.fsr >> 23) & _fex) |
204 | #endif | 204 | #endif |
205 | 205 | ||
206 | #ifdef CONFIG_SMP | ||
207 | #define FP_TRAPPING_EXCEPTIONS ((current->thread.fsr >> 23) & 0x1f) | ||
208 | #else | ||
209 | #define FP_TRAPPING_EXCEPTIONS ((last_task_used_math->thread.fsr >> 23) & 0x1f) | ||
210 | #endif | ||
211 | |||
206 | #endif | 212 | #endif |
diff --git a/include/asm-sparc64/elf.h b/include/asm-sparc64/elf.h index 303d85e2f82e..8653e8665009 100644 --- a/include/asm-sparc64/elf.h +++ b/include/asm-sparc64/elf.h | |||
@@ -70,6 +70,7 @@ | |||
70 | #define HWCAP_SPARC_V9 16 | 70 | #define HWCAP_SPARC_V9 16 |
71 | #define HWCAP_SPARC_ULTRA3 32 | 71 | #define HWCAP_SPARC_ULTRA3 32 |
72 | #define HWCAP_SPARC_BLKINIT 64 | 72 | #define HWCAP_SPARC_BLKINIT 64 |
73 | #define HWCAP_SPARC_N2 128 | ||
73 | 74 | ||
74 | /* | 75 | /* |
75 | * These are used to set parameters in the core dumps. | 76 | * These are used to set parameters in the core dumps. |
@@ -155,8 +156,13 @@ static inline unsigned int sparc64_elf_hwcap(void) | |||
155 | 156 | ||
156 | if (tlb_type == cheetah || tlb_type == cheetah_plus) | 157 | if (tlb_type == cheetah || tlb_type == cheetah_plus) |
157 | cap |= HWCAP_SPARC_ULTRA3; | 158 | cap |= HWCAP_SPARC_ULTRA3; |
158 | else if (tlb_type == hypervisor) | 159 | else if (tlb_type == hypervisor) { |
159 | cap |= HWCAP_SPARC_BLKINIT; | 160 | if (sun4v_chip_type == SUN4V_CHIP_NIAGARA1 || |
161 | sun4v_chip_type == SUN4V_CHIP_NIAGARA2) | ||
162 | cap |= HWCAP_SPARC_BLKINIT; | ||
163 | if (sun4v_chip_type == SUN4V_CHIP_NIAGARA2) | ||
164 | cap |= HWCAP_SPARC_N2; | ||
165 | } | ||
160 | 166 | ||
161 | return cap; | 167 | return cap; |
162 | } | 168 | } |
diff --git a/include/asm-sparc64/sfp-machine.h b/include/asm-sparc64/sfp-machine.h index 89d42431efb5..c9331b02d9c8 100644 --- a/include/asm-sparc64/sfp-machine.h +++ b/include/asm-sparc64/sfp-machine.h | |||
@@ -88,4 +88,6 @@ | |||
88 | 88 | ||
89 | #define FP_INHIBIT_RESULTS ((current_thread_info()->xfsr[0] >> 23) & _fex) | 89 | #define FP_INHIBIT_RESULTS ((current_thread_info()->xfsr[0] >> 23) & _fex) |
90 | 90 | ||
91 | #define FP_TRAPPING_EXCEPTIONS ((current_thread_info()->xfsr[0] >> 23) & 0x1f) | ||
92 | |||
91 | #endif | 93 | #endif |
diff --git a/include/asm-x86_64/nmi.h b/include/asm-x86_64/nmi.h index 5fb3c0de5ccc..65b6acf3bb59 100644 --- a/include/asm-x86_64/nmi.h +++ b/include/asm-x86_64/nmi.h | |||
@@ -64,11 +64,12 @@ extern int setup_nmi_watchdog(char *); | |||
64 | 64 | ||
65 | extern atomic_t nmi_active; | 65 | extern atomic_t nmi_active; |
66 | extern unsigned int nmi_watchdog; | 66 | extern unsigned int nmi_watchdog; |
67 | #define NMI_DEFAULT -1 | 67 | #define NMI_DISABLED -1 |
68 | #define NMI_NONE 0 | 68 | #define NMI_NONE 0 |
69 | #define NMI_IO_APIC 1 | 69 | #define NMI_IO_APIC 1 |
70 | #define NMI_LOCAL_APIC 2 | 70 | #define NMI_LOCAL_APIC 2 |
71 | #define NMI_INVALID 3 | 71 | #define NMI_INVALID 3 |
72 | #define NMI_DEFAULT NMI_DISABLED | ||
72 | 73 | ||
73 | struct ctl_table; | 74 | struct ctl_table; |
74 | struct file; | 75 | struct file; |
diff --git a/include/asm-x86_64/pci.h b/include/asm-x86_64/pci.h index 88926eb44f5c..5da8cb0c0599 100644 --- a/include/asm-x86_64/pci.h +++ b/include/asm-x86_64/pci.h | |||
@@ -10,6 +10,8 @@ struct pci_sysdata { | |||
10 | void* iommu; /* IOMMU private data */ | 10 | void* iommu; /* IOMMU private data */ |
11 | }; | 11 | }; |
12 | 12 | ||
13 | extern struct pci_bus *pci_scan_bus_with_sysdata(int busno); | ||
14 | |||
13 | #ifdef CONFIG_CALGARY_IOMMU | 15 | #ifdef CONFIG_CALGARY_IOMMU |
14 | static inline void* pci_iommu(struct pci_bus *bus) | 16 | static inline void* pci_iommu(struct pci_bus *bus) |
15 | { | 17 | { |
diff --git a/include/linux/bio.h b/include/linux/bio.h index 4d85262b4fa4..1ddef34f43c3 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h | |||
@@ -24,6 +24,8 @@ | |||
24 | #include <linux/mempool.h> | 24 | #include <linux/mempool.h> |
25 | #include <linux/ioprio.h> | 25 | #include <linux/ioprio.h> |
26 | 26 | ||
27 | #ifdef CONFIG_BLOCK | ||
28 | |||
27 | /* Platforms may set this to teach the BIO layer about IOMMU hardware. */ | 29 | /* Platforms may set this to teach the BIO layer about IOMMU hardware. */ |
28 | #include <asm/io.h> | 30 | #include <asm/io.h> |
29 | 31 | ||
@@ -361,4 +363,5 @@ static inline char *__bio_kmap_irq(struct bio *bio, unsigned short idx, | |||
361 | __bio_kmap_irq((bio), (bio)->bi_idx, (flags)) | 363 | __bio_kmap_irq((bio), (bio)->bi_idx, (flags)) |
362 | #define bio_kunmap_irq(buf,flags) __bio_kunmap_irq(buf, flags) | 364 | #define bio_kunmap_irq(buf,flags) __bio_kunmap_irq(buf, flags) |
363 | 365 | ||
366 | #endif /* CONFIG_BLOCK */ | ||
364 | #endif /* __LINUX_BIO_H */ | 367 | #endif /* __LINUX_BIO_H */ |
diff --git a/include/linux/blktrace_api.h b/include/linux/blktrace_api.h index 90874a5d7d78..7b5d56b82b59 100644 --- a/include/linux/blktrace_api.h +++ b/include/linux/blktrace_api.h | |||
@@ -105,7 +105,7 @@ struct blk_io_trace { | |||
105 | */ | 105 | */ |
106 | struct blk_io_trace_remap { | 106 | struct blk_io_trace_remap { |
107 | __be32 device; | 107 | __be32 device; |
108 | u32 __pad; | 108 | __be32 device_from; |
109 | __be64 sector; | 109 | __be64 sector; |
110 | }; | 110 | }; |
111 | 111 | ||
@@ -272,6 +272,7 @@ static inline void blk_add_trace_remap(struct request_queue *q, struct bio *bio, | |||
272 | return; | 272 | return; |
273 | 273 | ||
274 | r.device = cpu_to_be32(dev); | 274 | r.device = cpu_to_be32(dev); |
275 | r.device_from = cpu_to_be32(bio->bi_bdev->bd_dev); | ||
275 | r.sector = cpu_to_be64(to); | 276 | r.sector = cpu_to_be64(to); |
276 | 277 | ||
277 | __blk_add_trace(bt, from, bio->bi_size, bio->bi_rw, BLK_TA_REMAP, !bio_flagged(bio, BIO_UPTODATE), sizeof(r), &r); | 278 | __blk_add_trace(bt, from, bio->bi_size, bio->bi_rw, BLK_TA_REMAP, !bio_flagged(bio, BIO_UPTODATE), sizeof(r), &r); |
diff --git a/include/linux/clockchips.h b/include/linux/clockchips.h index e0bd46eb2414..def5a659b8a5 100644 --- a/include/linux/clockchips.h +++ b/include/linux/clockchips.h | |||
@@ -123,7 +123,6 @@ extern void clockevents_exchange_device(struct clock_event_device *old, | |||
123 | extern void clockevents_set_mode(struct clock_event_device *dev, | 123 | extern void clockevents_set_mode(struct clock_event_device *dev, |
124 | enum clock_event_mode mode); | 124 | enum clock_event_mode mode); |
125 | extern int clockevents_register_notifier(struct notifier_block *nb); | 125 | extern int clockevents_register_notifier(struct notifier_block *nb); |
126 | extern void clockevents_unregister_notifier(struct notifier_block *nb); | ||
127 | extern int clockevents_program_event(struct clock_event_device *dev, | 126 | extern int clockevents_program_event(struct clock_event_device *dev, |
128 | ktime_t expires, ktime_t now); | 127 | ktime_t expires, ktime_t now); |
129 | 128 | ||
diff --git a/include/linux/cpu.h b/include/linux/cpu.h index c2236bbff412..1d5ded0836ee 100644 --- a/include/linux/cpu.h +++ b/include/linux/cpu.h | |||
@@ -41,8 +41,6 @@ extern void cpu_remove_sysdev_attr(struct sysdev_attribute *attr); | |||
41 | extern int cpu_add_sysdev_attr_group(struct attribute_group *attrs); | 41 | extern int cpu_add_sysdev_attr_group(struct attribute_group *attrs); |
42 | extern void cpu_remove_sysdev_attr_group(struct attribute_group *attrs); | 42 | extern void cpu_remove_sysdev_attr_group(struct attribute_group *attrs); |
43 | 43 | ||
44 | extern struct sysdev_attribute attr_sched_mc_power_savings; | ||
45 | extern struct sysdev_attribute attr_sched_smt_power_savings; | ||
46 | extern int sched_create_sysfs_power_savings_entries(struct sysdev_class *cls); | 44 | extern int sched_create_sysfs_power_savings_entries(struct sysdev_class *cls); |
47 | 45 | ||
48 | #ifdef CONFIG_HOTPLUG_CPU | 46 | #ifdef CONFIG_HOTPLUG_CPU |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 6bf139562947..16421f662a7a 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -1659,7 +1659,6 @@ extern int sb_min_blocksize(struct super_block *, int); | |||
1659 | extern int generic_file_mmap(struct file *, struct vm_area_struct *); | 1659 | extern int generic_file_mmap(struct file *, struct vm_area_struct *); |
1660 | extern int generic_file_readonly_mmap(struct file *, struct vm_area_struct *); | 1660 | extern int generic_file_readonly_mmap(struct file *, struct vm_area_struct *); |
1661 | extern int file_read_actor(read_descriptor_t * desc, struct page *page, unsigned long offset, unsigned long size); | 1661 | extern int file_read_actor(read_descriptor_t * desc, struct page *page, unsigned long offset, unsigned long size); |
1662 | extern int file_send_actor(read_descriptor_t * desc, struct page *page, unsigned long offset, unsigned long size); | ||
1663 | int generic_write_checks(struct file *file, loff_t *pos, size_t *count, int isblk); | 1662 | int generic_write_checks(struct file *file, loff_t *pos, size_t *count, int isblk); |
1664 | extern ssize_t generic_file_aio_read(struct kiocb *, const struct iovec *, unsigned long, loff_t); | 1663 | extern ssize_t generic_file_aio_read(struct kiocb *, const struct iovec *, unsigned long, loff_t); |
1665 | extern ssize_t generic_file_aio_write(struct kiocb *, const struct iovec *, unsigned long, loff_t); | 1664 | extern ssize_t generic_file_aio_write(struct kiocb *, const struct iovec *, unsigned long, loff_t); |
diff --git a/include/linux/init.h b/include/linux/init.h index 1a4a283d19a9..74b1f43bf982 100644 --- a/include/linux/init.h +++ b/include/linux/init.h | |||
@@ -43,7 +43,7 @@ | |||
43 | #define __init __attribute__ ((__section__ (".init.text"))) __cold | 43 | #define __init __attribute__ ((__section__ (".init.text"))) __cold |
44 | #define __initdata __attribute__ ((__section__ (".init.data"))) | 44 | #define __initdata __attribute__ ((__section__ (".init.data"))) |
45 | #define __exitdata __attribute__ ((__section__(".exit.data"))) | 45 | #define __exitdata __attribute__ ((__section__(".exit.data"))) |
46 | #define __exit_call __attribute_used__ __attribute__ ((__section__ (".exitcall.exit"))) __cold | 46 | #define __exit_call __attribute_used__ __attribute__ ((__section__ (".exitcall.exit"))) |
47 | 47 | ||
48 | /* modpost check for section mismatches during the kernel build. | 48 | /* modpost check for section mismatches during the kernel build. |
49 | * A section mismatch happens when there are references from a | 49 | * A section mismatch happens when there are references from a |
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index b4f5b81b4257..f592df74b3cf 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h | |||
@@ -226,7 +226,7 @@ extern void print_hex_dump(const char *level, const char *prefix_str, | |||
226 | int prefix_type, int rowsize, int groupsize, | 226 | int prefix_type, int rowsize, int groupsize, |
227 | const void *buf, size_t len, bool ascii); | 227 | const void *buf, size_t len, bool ascii); |
228 | extern void print_hex_dump_bytes(const char *prefix_str, int prefix_type, | 228 | extern void print_hex_dump_bytes(const char *prefix_str, int prefix_type, |
229 | void *buf, size_t len); | 229 | const void *buf, size_t len); |
230 | #define hex_asc(x) "0123456789abcdef"[x] | 230 | #define hex_asc(x) "0123456789abcdef"[x] |
231 | 231 | ||
232 | #ifdef DEBUG | 232 | #ifdef DEBUG |
diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index 2ada8ee316b3..4dc5fa8be781 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h | |||
@@ -159,7 +159,8 @@ struct ap_device_id { | |||
159 | 159 | ||
160 | #define AP_DEVICE_ID_MATCH_DEVICE_TYPE 0x01 | 160 | #define AP_DEVICE_ID_MATCH_DEVICE_TYPE 0x01 |
161 | 161 | ||
162 | #define ACPI_ID_LEN 9 | 162 | #define ACPI_ID_LEN 16 /* only 9 bytes needed here, 16 bytes are used */ |
163 | /* to workaround crosscompile issues */ | ||
163 | 164 | ||
164 | struct acpi_device_id { | 165 | struct acpi_device_id { |
165 | __u8 id[ACPI_ID_LEN]; | 166 | __u8 id[ACPI_ID_LEN]; |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 4a616d73cc25..e679b2751665 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -1131,6 +1131,8 @@ extern void dev_seq_stop(struct seq_file *seq, void *v); | |||
1131 | 1131 | ||
1132 | extern void linkwatch_run_queue(void); | 1132 | extern void linkwatch_run_queue(void); |
1133 | 1133 | ||
1134 | extern int netdev_compute_features(unsigned long all, unsigned long one); | ||
1135 | |||
1134 | static inline int net_gso_ok(int features, int gso_type) | 1136 | static inline int net_gso_ok(int features, int gso_type) |
1135 | { | 1137 | { |
1136 | int feature = gso_type << NETIF_F_GSO_SHIFT; | 1138 | int feature = gso_type << NETIF_F_GSO_SHIFT; |
diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h index 28e3664fdf1b..cd13a78c5db8 100644 --- a/include/linux/proc_fs.h +++ b/include/linux/proc_fs.h | |||
@@ -75,7 +75,6 @@ struct proc_dir_entry { | |||
75 | write_proc_t *write_proc; | 75 | write_proc_t *write_proc; |
76 | atomic_t count; /* use count */ | 76 | atomic_t count; /* use count */ |
77 | int deleted; /* delete flag */ | 77 | int deleted; /* delete flag */ |
78 | void *set; | ||
79 | int pde_users; /* number of callers into module in progress */ | 78 | int pde_users; /* number of callers into module in progress */ |
80 | spinlock_t pde_unload_lock; /* proc_fops checks and pde_users bumps */ | 79 | spinlock_t pde_unload_lock; /* proc_fops checks and pde_users bumps */ |
81 | struct completion *pde_unload_completion; | 80 | struct completion *pde_unload_completion; |
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index c6b7485eac7c..fe17d7d750c2 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h | |||
@@ -281,7 +281,6 @@ extern void FASTCALL(call_rcu(struct rcu_head *head, | |||
281 | extern void FASTCALL(call_rcu_bh(struct rcu_head *head, | 281 | extern void FASTCALL(call_rcu_bh(struct rcu_head *head, |
282 | void (*func)(struct rcu_head *head))); | 282 | void (*func)(struct rcu_head *head))); |
283 | extern void synchronize_rcu(void); | 283 | extern void synchronize_rcu(void); |
284 | void synchronize_idle(void); | ||
285 | extern void rcu_barrier(void); | 284 | extern void rcu_barrier(void); |
286 | 285 | ||
287 | #endif /* __KERNEL__ */ | 286 | #endif /* __KERNEL__ */ |
diff --git a/include/linux/tty.h b/include/linux/tty.h index 691a1748d9d2..6570719eafdf 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h | |||
@@ -274,6 +274,8 @@ struct tty_struct { | |||
274 | #define TTY_PTY_LOCK 16 /* pty private */ | 274 | #define TTY_PTY_LOCK 16 /* pty private */ |
275 | #define TTY_NO_WRITE_SPLIT 17 /* Preserve write boundaries to driver */ | 275 | #define TTY_NO_WRITE_SPLIT 17 /* Preserve write boundaries to driver */ |
276 | #define TTY_HUPPED 18 /* Post driver->hangup() */ | 276 | #define TTY_HUPPED 18 /* Post driver->hangup() */ |
277 | #define TTY_FLUSHING 19 /* Flushing to ldisc in progress */ | ||
278 | #define TTY_FLUSHPENDING 20 /* Queued buffer flush pending */ | ||
277 | 279 | ||
278 | #define TTY_WRITE_FLUSH(tty) tty_write_flush((tty)) | 280 | #define TTY_WRITE_FLUSH(tty) tty_write_flush((tty)) |
279 | 281 | ||
diff --git a/include/math-emu/op-common.h b/include/math-emu/op-common.h index 93780abd01bc..bb46e7645d53 100644 --- a/include/math-emu/op-common.h +++ b/include/math-emu/op-common.h | |||
@@ -145,13 +145,16 @@ do { \ | |||
145 | { \ | 145 | { \ |
146 | X##_e = 1; \ | 146 | X##_e = 1; \ |
147 | _FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc); \ | 147 | _FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc); \ |
148 | FP_SET_EXCEPTION(FP_EX_INEXACT); \ | ||
148 | } \ | 149 | } \ |
149 | else \ | 150 | else \ |
150 | { \ | 151 | { \ |
151 | X##_e = 0; \ | 152 | X##_e = 0; \ |
152 | _FP_FRAC_SRL_##wc(X, _FP_WORKBITS); \ | 153 | _FP_FRAC_SRL_##wc(X, _FP_WORKBITS); \ |
153 | FP_SET_EXCEPTION(FP_EX_UNDERFLOW); \ | ||
154 | } \ | 154 | } \ |
155 | if ((FP_CUR_EXCEPTIONS & FP_EX_INEXACT) || \ | ||
156 | (FP_TRAPPING_EXCEPTIONS & FP_EX_UNDERFLOW)) \ | ||
157 | FP_SET_EXCEPTION(FP_EX_UNDERFLOW); \ | ||
155 | } \ | 158 | } \ |
156 | else \ | 159 | else \ |
157 | { \ | 160 | { \ |
diff --git a/include/math-emu/soft-fp.h b/include/math-emu/soft-fp.h index d02eb64a865b..a0721ef5c2f9 100644 --- a/include/math-emu/soft-fp.h +++ b/include/math-emu/soft-fp.h | |||
@@ -97,12 +97,19 @@ | |||
97 | #define FP_INHIBIT_RESULTS 0 | 97 | #define FP_INHIBIT_RESULTS 0 |
98 | #endif | 98 | #endif |
99 | 99 | ||
100 | #ifndef FP_TRAPPING_EXCEPTIONS | ||
101 | #define FP_TRAPPING_EXCPETIONS 0 | ||
102 | #endif | ||
103 | |||
100 | #define FP_SET_EXCEPTION(ex) \ | 104 | #define FP_SET_EXCEPTION(ex) \ |
101 | _fex |= (ex) | 105 | _fex |= (ex) |
102 | 106 | ||
103 | #define FP_UNSET_EXCEPTION(ex) \ | 107 | #define FP_UNSET_EXCEPTION(ex) \ |
104 | _fex &= ~(ex) | 108 | _fex &= ~(ex) |
105 | 109 | ||
110 | #define FP_CUR_EXCEPTIONS \ | ||
111 | (_fex) | ||
112 | |||
106 | #define FP_CLEAR_EXCEPTIONS \ | 113 | #define FP_CLEAR_EXCEPTIONS \ |
107 | _fex = 0 | 114 | _fex = 0 |
108 | 115 | ||
diff --git a/include/rdma/ib_mad.h b/include/rdma/ib_mad.h index 30712ddd8a5e..8ec3799e42e1 100644 --- a/include/rdma/ib_mad.h +++ b/include/rdma/ib_mad.h | |||
@@ -39,6 +39,8 @@ | |||
39 | #if !defined( IB_MAD_H ) | 39 | #if !defined( IB_MAD_H ) |
40 | #define IB_MAD_H | 40 | #define IB_MAD_H |
41 | 41 | ||
42 | #include <linux/list.h> | ||
43 | |||
42 | #include <rdma/ib_verbs.h> | 44 | #include <rdma/ib_verbs.h> |
43 | 45 | ||
44 | /* Management base version */ | 46 | /* Management base version */ |
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index 0627a6aa282a..4bea182d7116 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h | |||
@@ -46,6 +46,8 @@ | |||
46 | #include <linux/mm.h> | 46 | #include <linux/mm.h> |
47 | #include <linux/dma-mapping.h> | 47 | #include <linux/dma-mapping.h> |
48 | #include <linux/kref.h> | 48 | #include <linux/kref.h> |
49 | #include <linux/list.h> | ||
50 | #include <linux/rwsem.h> | ||
49 | 51 | ||
50 | #include <asm/atomic.h> | 52 | #include <asm/atomic.h> |
51 | #include <asm/scatterlist.h> | 53 | #include <asm/scatterlist.h> |
@@ -731,11 +733,6 @@ struct ib_udata { | |||
731 | size_t outlen; | 733 | size_t outlen; |
732 | }; | 734 | }; |
733 | 735 | ||
734 | #define IB_UMEM_MAX_PAGE_CHUNK \ | ||
735 | ((PAGE_SIZE - offsetof(struct ib_umem_chunk, page_list)) / \ | ||
736 | ((void *) &((struct ib_umem_chunk *) 0)->page_list[1] - \ | ||
737 | (void *) &((struct ib_umem_chunk *) 0)->page_list[0])) | ||
738 | |||
739 | struct ib_pd { | 736 | struct ib_pd { |
740 | struct ib_device *device; | 737 | struct ib_device *device; |
741 | struct ib_uobject *uobject; | 738 | struct ib_uobject *uobject; |