diff options
Diffstat (limited to 'include')
27 files changed, 193 insertions, 69 deletions
diff --git a/include/asm-i386/desc.h b/include/asm-i386/desc.h index 494e73bca095..89b8b82c82b3 100644 --- a/include/asm-i386/desc.h +++ b/include/asm-i386/desc.h | |||
@@ -24,11 +24,13 @@ struct Xgt_desc_struct { | |||
24 | unsigned short pad; | 24 | unsigned short pad; |
25 | } __attribute__ ((packed)); | 25 | } __attribute__ ((packed)); |
26 | 26 | ||
27 | extern struct Xgt_desc_struct idt_descr, cpu_gdt_descr[NR_CPUS]; | 27 | extern struct Xgt_desc_struct idt_descr; |
28 | DECLARE_PER_CPU(struct Xgt_desc_struct, cpu_gdt_descr); | ||
29 | |||
28 | 30 | ||
29 | static inline struct desc_struct *get_cpu_gdt_table(unsigned int cpu) | 31 | static inline struct desc_struct *get_cpu_gdt_table(unsigned int cpu) |
30 | { | 32 | { |
31 | return ((struct desc_struct *)cpu_gdt_descr[cpu].address); | 33 | return (struct desc_struct *)per_cpu(cpu_gdt_descr, cpu).address; |
32 | } | 34 | } |
33 | 35 | ||
34 | #define load_TR_desc() __asm__ __volatile__("ltr %w0"::"q" (GDT_ENTRY_TSS*8)) | 36 | #define load_TR_desc() __asm__ __volatile__("ltr %w0"::"q" (GDT_ENTRY_TSS*8)) |
diff --git a/include/asm-i386/kprobes.h b/include/asm-i386/kprobes.h index 27cac050a60e..a0d2d74a7dda 100644 --- a/include/asm-i386/kprobes.h +++ b/include/asm-i386/kprobes.h | |||
@@ -27,6 +27,9 @@ | |||
27 | #include <linux/types.h> | 27 | #include <linux/types.h> |
28 | #include <linux/ptrace.h> | 28 | #include <linux/ptrace.h> |
29 | 29 | ||
30 | #define __ARCH_WANT_KPROBES_INSN_SLOT | ||
31 | |||
32 | struct kprobe; | ||
30 | struct pt_regs; | 33 | struct pt_regs; |
31 | 34 | ||
32 | typedef u8 kprobe_opcode_t; | 35 | typedef u8 kprobe_opcode_t; |
@@ -40,14 +43,14 @@ typedef u8 kprobe_opcode_t; | |||
40 | 43 | ||
41 | #define JPROBE_ENTRY(pentry) (kprobe_opcode_t *)pentry | 44 | #define JPROBE_ENTRY(pentry) (kprobe_opcode_t *)pentry |
42 | #define ARCH_SUPPORTS_KRETPROBES | 45 | #define ARCH_SUPPORTS_KRETPROBES |
43 | #define arch_remove_kprobe(p) do {} while (0) | ||
44 | 46 | ||
47 | void arch_remove_kprobe(struct kprobe *p); | ||
45 | void kretprobe_trampoline(void); | 48 | void kretprobe_trampoline(void); |
46 | 49 | ||
47 | /* Architecture specific copy of original instruction*/ | 50 | /* Architecture specific copy of original instruction*/ |
48 | struct arch_specific_insn { | 51 | struct arch_specific_insn { |
49 | /* copy of the original instruction */ | 52 | /* copy of the original instruction */ |
50 | kprobe_opcode_t insn[MAX_INSN_SIZE]; | 53 | kprobe_opcode_t *insn; |
51 | }; | 54 | }; |
52 | 55 | ||
53 | struct prev_kprobe { | 56 | struct prev_kprobe { |
diff --git a/include/asm-ia64/sn/arch.h b/include/asm-ia64/sn/arch.h index 91c31be87b13..16adc93d7a72 100644 --- a/include/asm-ia64/sn/arch.h +++ b/include/asm-ia64/sn/arch.h | |||
@@ -31,7 +31,8 @@ | |||
31 | * to ACPI3.0, this limit will be removed. The notion of "compact nodes" | 31 | * to ACPI3.0, this limit will be removed. The notion of "compact nodes" |
32 | * should be deleted and TIOs should be included in MAX_NUMNODES. | 32 | * should be deleted and TIOs should be included in MAX_NUMNODES. |
33 | */ | 33 | */ |
34 | #define MAX_COMPACT_NODES 512 | 34 | #define MAX_TIO_NODES MAX_NUMNODES |
35 | #define MAX_COMPACT_NODES (MAX_NUMNODES + MAX_TIO_NODES) | ||
35 | 36 | ||
36 | /* | 37 | /* |
37 | * Maximum number of nodes in all partitions and in all coherency domains. | 38 | * Maximum number of nodes in all partitions and in all coherency domains. |
diff --git a/include/asm-m32r/uaccess.h b/include/asm-m32r/uaccess.h index 0da7c47d2f01..e8ae61956a51 100644 --- a/include/asm-m32r/uaccess.h +++ b/include/asm-m32r/uaccess.h | |||
@@ -328,7 +328,7 @@ extern void __put_user_bad(void); | |||
328 | " .long 1b,4b\n" \ | 328 | " .long 1b,4b\n" \ |
329 | " .long 2b,4b\n" \ | 329 | " .long 2b,4b\n" \ |
330 | ".previous" \ | 330 | ".previous" \ |
331 | : "=r"(err) \ | 331 | : "=&r"(err) \ |
332 | : "r"(x), "r"(addr), "i"(-EFAULT), "0"(err) \ | 332 | : "r"(x), "r"(addr), "i"(-EFAULT), "0"(err) \ |
333 | : "r14", "memory") | 333 | : "r14", "memory") |
334 | 334 | ||
@@ -353,7 +353,7 @@ extern void __put_user_bad(void); | |||
353 | " .long 1b,4b\n" \ | 353 | " .long 1b,4b\n" \ |
354 | " .long 2b,4b\n" \ | 354 | " .long 2b,4b\n" \ |
355 | ".previous" \ | 355 | ".previous" \ |
356 | : "=r"(err) \ | 356 | : "=&r"(err) \ |
357 | : "r"(x), "r"(addr), "i"(-EFAULT), "0"(err) \ | 357 | : "r"(x), "r"(addr), "i"(-EFAULT), "0"(err) \ |
358 | : "r14", "memory") | 358 | : "r14", "memory") |
359 | #else | 359 | #else |
@@ -398,7 +398,7 @@ struct __large_struct { unsigned long buf[100]; }; | |||
398 | " .balign 4\n" \ | 398 | " .balign 4\n" \ |
399 | " .long 1b,3b\n" \ | 399 | " .long 1b,3b\n" \ |
400 | ".previous" \ | 400 | ".previous" \ |
401 | : "=r"(err) \ | 401 | : "=&r"(err) \ |
402 | : "r"(x), "r"(addr), "i"(-EFAULT), "0"(err) \ | 402 | : "r"(x), "r"(addr), "i"(-EFAULT), "0"(err) \ |
403 | : "r14", "memory") | 403 | : "r14", "memory") |
404 | 404 | ||
@@ -442,7 +442,7 @@ do { \ | |||
442 | " .balign 4\n" \ | 442 | " .balign 4\n" \ |
443 | " .long 1b,3b\n" \ | 443 | " .long 1b,3b\n" \ |
444 | ".previous" \ | 444 | ".previous" \ |
445 | : "=r"(err), "=&r"(x) \ | 445 | : "=&r"(err), "=&r"(x) \ |
446 | : "r"(addr), "i"(-EFAULT), "0"(err) \ | 446 | : "r"(addr), "i"(-EFAULT), "0"(err) \ |
447 | : "r14", "memory") | 447 | : "r14", "memory") |
448 | 448 | ||
diff --git a/include/asm-mips/atomic.h b/include/asm-mips/atomic.h index 654b97d3e13a..2c8b853376c9 100644 --- a/include/asm-mips/atomic.h +++ b/include/asm-mips/atomic.h | |||
@@ -250,7 +250,10 @@ static __inline__ int atomic_sub_if_positive(int i, atomic_t * v) | |||
250 | " subu %0, %1, %3 \n" | 250 | " subu %0, %1, %3 \n" |
251 | " bltz %0, 1f \n" | 251 | " bltz %0, 1f \n" |
252 | " sc %0, %2 \n" | 252 | " sc %0, %2 \n" |
253 | " .set noreorder \n" | ||
253 | " beqzl %0, 1b \n" | 254 | " beqzl %0, 1b \n" |
255 | " subu %0, %1, %3 \n" | ||
256 | " .set reorder \n" | ||
254 | " sync \n" | 257 | " sync \n" |
255 | "1: \n" | 258 | "1: \n" |
256 | " .set mips0 \n" | 259 | " .set mips0 \n" |
@@ -266,7 +269,10 @@ static __inline__ int atomic_sub_if_positive(int i, atomic_t * v) | |||
266 | " subu %0, %1, %3 \n" | 269 | " subu %0, %1, %3 \n" |
267 | " bltz %0, 1f \n" | 270 | " bltz %0, 1f \n" |
268 | " sc %0, %2 \n" | 271 | " sc %0, %2 \n" |
272 | " .set noreorder \n" | ||
269 | " beqz %0, 1b \n" | 273 | " beqz %0, 1b \n" |
274 | " subu %0, %1, %3 \n" | ||
275 | " .set reorder \n" | ||
270 | " sync \n" | 276 | " sync \n" |
271 | "1: \n" | 277 | "1: \n" |
272 | " .set mips0 \n" | 278 | " .set mips0 \n" |
@@ -598,7 +604,10 @@ static __inline__ long atomic64_sub_if_positive(long i, atomic64_t * v) | |||
598 | " dsubu %0, %1, %3 \n" | 604 | " dsubu %0, %1, %3 \n" |
599 | " bltz %0, 1f \n" | 605 | " bltz %0, 1f \n" |
600 | " scd %0, %2 \n" | 606 | " scd %0, %2 \n" |
607 | " .set noreorder \n" | ||
601 | " beqzl %0, 1b \n" | 608 | " beqzl %0, 1b \n" |
609 | " dsubu %0, %1, %3 \n" | ||
610 | " .set reorder \n" | ||
602 | " sync \n" | 611 | " sync \n" |
603 | "1: \n" | 612 | "1: \n" |
604 | " .set mips0 \n" | 613 | " .set mips0 \n" |
@@ -614,7 +623,10 @@ static __inline__ long atomic64_sub_if_positive(long i, atomic64_t * v) | |||
614 | " dsubu %0, %1, %3 \n" | 623 | " dsubu %0, %1, %3 \n" |
615 | " bltz %0, 1f \n" | 624 | " bltz %0, 1f \n" |
616 | " scd %0, %2 \n" | 625 | " scd %0, %2 \n" |
626 | " .set noreorder \n" | ||
617 | " beqz %0, 1b \n" | 627 | " beqz %0, 1b \n" |
628 | " dsubu %0, %1, %3 \n" | ||
629 | " .set reorder \n" | ||
618 | " sync \n" | 630 | " sync \n" |
619 | "1: \n" | 631 | "1: \n" |
620 | " .set mips0 \n" | 632 | " .set mips0 \n" |
diff --git a/include/asm-mips/io.h b/include/asm-mips/io.h index 5a4c8a54b8f4..8c011aa61afa 100644 --- a/include/asm-mips/io.h +++ b/include/asm-mips/io.h | |||
@@ -283,6 +283,24 @@ static inline void __iomem * __ioremap_mode(phys_t offset, unsigned long size, | |||
283 | __ioremap_mode((offset), (size), _CACHE_UNCACHED) | 283 | __ioremap_mode((offset), (size), _CACHE_UNCACHED) |
284 | 284 | ||
285 | /* | 285 | /* |
286 | * ioremap_cachable - map bus memory into CPU space | ||
287 | * @offset: bus address of the memory | ||
288 | * @size: size of the resource to map | ||
289 | * | ||
290 | * ioremap_nocache performs a platform specific sequence of operations to | ||
291 | * make bus memory CPU accessible via the readb/readw/readl/writeb/ | ||
292 | * writew/writel functions and the other mmio helpers. The returned | ||
293 | * address is not guaranteed to be usable directly as a virtual | ||
294 | * address. | ||
295 | * | ||
296 | * This version of ioremap ensures that the memory is marked cachable by | ||
297 | * the CPU. Also enables full write-combining. Useful for some | ||
298 | * memory-like regions on I/O busses. | ||
299 | */ | ||
300 | #define ioremap_cachable(offset, size) \ | ||
301 | __ioremap_mode((offset), (size), PAGE_CACHABLE_DEFAULT) | ||
302 | |||
303 | /* | ||
286 | * These two are MIPS specific ioremap variant. ioremap_cacheable_cow | 304 | * These two are MIPS specific ioremap variant. ioremap_cacheable_cow |
287 | * requests a cachable mapping, ioremap_uncached_accelerated requests a | 305 | * requests a cachable mapping, ioremap_uncached_accelerated requests a |
288 | * mapping using the uncached accelerated mode which isn't supported on | 306 | * mapping using the uncached accelerated mode which isn't supported on |
diff --git a/include/asm-mips/smp.h b/include/asm-mips/smp.h index 5618f1e12f40..75c6fe7c2126 100644 --- a/include/asm-mips/smp.h +++ b/include/asm-mips/smp.h | |||
@@ -58,7 +58,9 @@ static inline int num_booting_cpus(void) | |||
58 | return cpus_weight(cpu_callout_map); | 58 | return cpus_weight(cpu_callout_map); |
59 | } | 59 | } |
60 | 60 | ||
61 | /* These are defined by the board-specific code. */ | 61 | /* |
62 | * These are defined by the board-specific code. | ||
63 | */ | ||
62 | 64 | ||
63 | /* | 65 | /* |
64 | * Cause the function described by call_data to be executed on the passed | 66 | * Cause the function described by call_data to be executed on the passed |
@@ -79,7 +81,12 @@ extern void prom_boot_secondary(int cpu, struct task_struct *idle); | |||
79 | extern void prom_init_secondary(void); | 81 | extern void prom_init_secondary(void); |
80 | 82 | ||
81 | /* | 83 | /* |
82 | * Detect available CPUs, populate phys_cpu_present_map before smp_init | 84 | * Populate cpu_possible_map before smp_init, called from setup_arch. |
85 | */ | ||
86 | extern void plat_smp_setup(void); | ||
87 | |||
88 | /* | ||
89 | * Called after init_IRQ but before __cpu_up. | ||
83 | */ | 90 | */ |
84 | extern void prom_prepare_cpus(unsigned int max_cpus); | 91 | extern void prom_prepare_cpus(unsigned int max_cpus); |
85 | 92 | ||
diff --git a/include/asm-mips/system.h b/include/asm-mips/system.h index e8e5d4143377..ddae9bae31af 100644 --- a/include/asm-mips/system.h +++ b/include/asm-mips/system.h | |||
@@ -322,7 +322,7 @@ static inline unsigned long __cmpxchg_u32(volatile int * m, unsigned long old, | |||
322 | #endif | 322 | #endif |
323 | "2: \n" | 323 | "2: \n" |
324 | " .set pop \n" | 324 | " .set pop \n" |
325 | : "=&r" (retval), "=m" (*m) | 325 | : "=&r" (retval), "=R" (*m) |
326 | : "R" (*m), "Jr" (old), "Jr" (new) | 326 | : "R" (*m), "Jr" (old), "Jr" (new) |
327 | : "memory"); | 327 | : "memory"); |
328 | } else if (cpu_has_llsc) { | 328 | } else if (cpu_has_llsc) { |
@@ -342,7 +342,7 @@ static inline unsigned long __cmpxchg_u32(volatile int * m, unsigned long old, | |||
342 | #endif | 342 | #endif |
343 | "2: \n" | 343 | "2: \n" |
344 | " .set pop \n" | 344 | " .set pop \n" |
345 | : "=&r" (retval), "=m" (*m) | 345 | : "=&r" (retval), "=R" (*m) |
346 | : "R" (*m), "Jr" (old), "Jr" (new) | 346 | : "R" (*m), "Jr" (old), "Jr" (new) |
347 | : "memory"); | 347 | : "memory"); |
348 | } else { | 348 | } else { |
@@ -379,7 +379,7 @@ static inline unsigned long __cmpxchg_u64(volatile int * m, unsigned long old, | |||
379 | #endif | 379 | #endif |
380 | "2: \n" | 380 | "2: \n" |
381 | " .set pop \n" | 381 | " .set pop \n" |
382 | : "=&r" (retval), "=m" (*m) | 382 | : "=&r" (retval), "=R" (*m) |
383 | : "R" (*m), "Jr" (old), "Jr" (new) | 383 | : "R" (*m), "Jr" (old), "Jr" (new) |
384 | : "memory"); | 384 | : "memory"); |
385 | } else if (cpu_has_llsc) { | 385 | } else if (cpu_has_llsc) { |
@@ -397,7 +397,7 @@ static inline unsigned long __cmpxchg_u64(volatile int * m, unsigned long old, | |||
397 | #endif | 397 | #endif |
398 | "2: \n" | 398 | "2: \n" |
399 | " .set pop \n" | 399 | " .set pop \n" |
400 | : "=&r" (retval), "=m" (*m) | 400 | : "=&r" (retval), "=R" (*m) |
401 | : "R" (*m), "Jr" (old), "Jr" (new) | 401 | : "R" (*m), "Jr" (old), "Jr" (new) |
402 | : "memory"); | 402 | : "memory"); |
403 | } else { | 403 | } else { |
diff --git a/include/asm-powerpc/cputable.h b/include/asm-powerpc/cputable.h index 64210549f56b..90d005bb4d1c 100644 --- a/include/asm-powerpc/cputable.h +++ b/include/asm-powerpc/cputable.h | |||
@@ -159,9 +159,11 @@ extern void do_cpu_ftr_fixups(unsigned long offset); | |||
159 | #endif | 159 | #endif |
160 | 160 | ||
161 | /* We need to mark all pages as being coherent if we're SMP or we | 161 | /* We need to mark all pages as being coherent if we're SMP or we |
162 | * have a 74[45]x and an MPC107 host bridge. | 162 | * have a 74[45]x and an MPC107 host bridge. Also 83xx requires |
163 | * it for PCI "streaming/prefetch" to work properly. | ||
163 | */ | 164 | */ |
164 | #if defined(CONFIG_SMP) || defined(CONFIG_MPC10X_BRIDGE) | 165 | #if defined(CONFIG_SMP) || defined(CONFIG_MPC10X_BRIDGE) \ |
166 | || defined(CONFIG_PPC_83xx) | ||
165 | #define CPU_FTR_COMMON CPU_FTR_NEED_COHERENT | 167 | #define CPU_FTR_COMMON CPU_FTR_NEED_COHERENT |
166 | #else | 168 | #else |
167 | #define CPU_FTR_COMMON 0 | 169 | #define CPU_FTR_COMMON 0 |
@@ -277,7 +279,8 @@ enum { | |||
277 | CPU_FTRS_G2_LE = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE | | 279 | CPU_FTRS_G2_LE = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE | |
278 | CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_HAS_HIGH_BATS, | 280 | CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_HAS_HIGH_BATS, |
279 | CPU_FTRS_E300 = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE | | 281 | CPU_FTRS_E300 = CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE | |
280 | CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_HAS_HIGH_BATS, | 282 | CPU_FTR_USE_TB | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_HAS_HIGH_BATS | |
283 | CPU_FTR_COMMON, | ||
281 | CPU_FTRS_CLASSIC32 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 284 | CPU_FTRS_CLASSIC32 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | |
282 | CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE, | 285 | CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE, |
283 | CPU_FTRS_POWER3_32 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | | 286 | CPU_FTRS_POWER3_32 = CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | |
diff --git a/include/asm-powerpc/eeh.h b/include/asm-powerpc/eeh.h index b263fb2fa6e4..eb392032e19b 100644 --- a/include/asm-powerpc/eeh.h +++ b/include/asm-powerpc/eeh.h | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/string.h> | 27 | #include <linux/string.h> |
28 | 28 | ||
29 | struct pci_dev; | 29 | struct pci_dev; |
30 | struct pci_bus; | ||
30 | struct device_node; | 31 | struct device_node; |
31 | 32 | ||
32 | #ifdef CONFIG_EEH | 33 | #ifdef CONFIG_EEH |
@@ -60,8 +61,9 @@ void __init pci_addr_cache_build(void); | |||
60 | * to finish the eeh setup for this device. | 61 | * to finish the eeh setup for this device. |
61 | */ | 62 | */ |
62 | void eeh_add_device_early(struct device_node *); | 63 | void eeh_add_device_early(struct device_node *); |
64 | void eeh_add_device_late(struct pci_dev *dev); | ||
63 | void eeh_add_device_tree_early(struct device_node *); | 65 | void eeh_add_device_tree_early(struct device_node *); |
64 | void eeh_add_device_late(struct pci_dev *); | 66 | void eeh_add_device_tree_late(struct pci_bus *); |
65 | 67 | ||
66 | /** | 68 | /** |
67 | * eeh_remove_device - undo EEH setup for the indicated pci device | 69 | * eeh_remove_device - undo EEH setup for the indicated pci device |
@@ -116,12 +118,12 @@ static inline void pci_addr_cache_build(void) { } | |||
116 | 118 | ||
117 | static inline void eeh_add_device_early(struct device_node *dn) { } | 119 | static inline void eeh_add_device_early(struct device_node *dn) { } |
118 | 120 | ||
119 | static inline void eeh_add_device_late(struct pci_dev *dev) { } | ||
120 | |||
121 | static inline void eeh_remove_device(struct pci_dev *dev) { } | 121 | static inline void eeh_remove_device(struct pci_dev *dev) { } |
122 | 122 | ||
123 | static inline void eeh_add_device_tree_early(struct device_node *dn) { } | 123 | static inline void eeh_add_device_tree_early(struct device_node *dn) { } |
124 | 124 | ||
125 | static inline void eeh_add_device_tree_late(struct pci_bus *bus) { } | ||
126 | |||
125 | static inline void eeh_remove_bus_device(struct pci_dev *dev) { } | 127 | static inline void eeh_remove_bus_device(struct pci_dev *dev) { } |
126 | #define EEH_POSSIBLE_ERROR(val, type) (0) | 128 | #define EEH_POSSIBLE_ERROR(val, type) (0) |
127 | #define EEH_IO_ERROR_VALUE(size) (-1UL) | 129 | #define EEH_IO_ERROR_VALUE(size) (-1UL) |
diff --git a/include/asm-powerpc/mmu.h b/include/asm-powerpc/mmu.h index d096d9e76ad7..b0b9a3f8cdc2 100644 --- a/include/asm-powerpc/mmu.h +++ b/include/asm-powerpc/mmu.h | |||
@@ -112,6 +112,7 @@ typedef struct { | |||
112 | } hpte_t; | 112 | } hpte_t; |
113 | 113 | ||
114 | extern hpte_t *htab_address; | 114 | extern hpte_t *htab_address; |
115 | extern unsigned long htab_size_bytes; | ||
115 | extern unsigned long htab_hash_mask; | 116 | extern unsigned long htab_hash_mask; |
116 | 117 | ||
117 | /* | 118 | /* |
diff --git a/include/asm-powerpc/reg.h b/include/asm-powerpc/reg.h index 12ecc9b9f285..72bfe3af0460 100644 --- a/include/asm-powerpc/reg.h +++ b/include/asm-powerpc/reg.h | |||
@@ -615,27 +615,9 @@ | |||
615 | #define proc_trap() asm volatile("trap") | 615 | #define proc_trap() asm volatile("trap") |
616 | 616 | ||
617 | #ifdef CONFIG_PPC64 | 617 | #ifdef CONFIG_PPC64 |
618 | static inline void ppc64_runlatch_on(void) | 618 | |
619 | { | 619 | extern void ppc64_runlatch_on(void); |
620 | unsigned long ctrl; | 620 | extern void ppc64_runlatch_off(void); |
621 | |||
622 | if (cpu_has_feature(CPU_FTR_CTRL)) { | ||
623 | ctrl = mfspr(SPRN_CTRLF); | ||
624 | ctrl |= CTRL_RUNLATCH; | ||
625 | mtspr(SPRN_CTRLT, ctrl); | ||
626 | } | ||
627 | } | ||
628 | |||
629 | static inline void ppc64_runlatch_off(void) | ||
630 | { | ||
631 | unsigned long ctrl; | ||
632 | |||
633 | if (cpu_has_feature(CPU_FTR_CTRL)) { | ||
634 | ctrl = mfspr(SPRN_CTRLF); | ||
635 | ctrl &= ~CTRL_RUNLATCH; | ||
636 | mtspr(SPRN_CTRLT, ctrl); | ||
637 | } | ||
638 | } | ||
639 | 621 | ||
640 | extern unsigned long scom970_read(unsigned int address); | 622 | extern unsigned long scom970_read(unsigned int address); |
641 | extern void scom970_write(unsigned int address, unsigned long value); | 623 | extern void scom970_write(unsigned int address, unsigned long value); |
@@ -645,15 +627,6 @@ extern void scom970_write(unsigned int address, unsigned long value); | |||
645 | #define __get_SP() ({unsigned long sp; \ | 627 | #define __get_SP() ({unsigned long sp; \ |
646 | asm volatile("mr %0,1": "=r" (sp)); sp;}) | 628 | asm volatile("mr %0,1": "=r" (sp)); sp;}) |
647 | 629 | ||
648 | #else /* __ASSEMBLY__ */ | ||
649 | |||
650 | #define RUNLATCH_ON(REG) \ | ||
651 | BEGIN_FTR_SECTION \ | ||
652 | mfspr (REG),SPRN_CTRLF; \ | ||
653 | ori (REG),(REG),CTRL_RUNLATCH; \ | ||
654 | mtspr SPRN_CTRLT,(REG); \ | ||
655 | END_FTR_SECTION_IFSET(CPU_FTR_CTRL) | ||
656 | |||
657 | #endif /* __ASSEMBLY__ */ | 630 | #endif /* __ASSEMBLY__ */ |
658 | #endif /* __KERNEL__ */ | 631 | #endif /* __KERNEL__ */ |
659 | #endif /* _ASM_POWERPC_REG_H */ | 632 | #endif /* _ASM_POWERPC_REG_H */ |
diff --git a/include/asm-powerpc/thread_info.h b/include/asm-powerpc/thread_info.h index c044ec16a879..237fc2b72974 100644 --- a/include/asm-powerpc/thread_info.h +++ b/include/asm-powerpc/thread_info.h | |||
@@ -113,7 +113,7 @@ static inline struct thread_info *current_thread_info(void) | |||
113 | #define TIF_POLLING_NRFLAG 4 /* true if poll_idle() is polling | 113 | #define TIF_POLLING_NRFLAG 4 /* true if poll_idle() is polling |
114 | TIF_NEED_RESCHED */ | 114 | TIF_NEED_RESCHED */ |
115 | #define TIF_32BIT 5 /* 32 bit binary */ | 115 | #define TIF_32BIT 5 /* 32 bit binary */ |
116 | /* #define SPARE 6 */ | 116 | #define TIF_RUNLATCH 6 /* Is the runlatch enabled? */ |
117 | #define TIF_ABI_PENDING 7 /* 32/64 bit switch needed */ | 117 | #define TIF_ABI_PENDING 7 /* 32/64 bit switch needed */ |
118 | #define TIF_SYSCALL_AUDIT 8 /* syscall auditing active */ | 118 | #define TIF_SYSCALL_AUDIT 8 /* syscall auditing active */ |
119 | #define TIF_SINGLESTEP 9 /* singlestepping active */ | 119 | #define TIF_SINGLESTEP 9 /* singlestepping active */ |
@@ -131,7 +131,7 @@ static inline struct thread_info *current_thread_info(void) | |||
131 | #define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) | 131 | #define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) |
132 | #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) | 132 | #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) |
133 | #define _TIF_32BIT (1<<TIF_32BIT) | 133 | #define _TIF_32BIT (1<<TIF_32BIT) |
134 | /* #define _SPARE (1<<SPARE) */ | 134 | #define _TIF_RUNLATCH (1<<TIF_RUNLATCH) |
135 | #define _TIF_ABI_PENDING (1<<TIF_ABI_PENDING) | 135 | #define _TIF_ABI_PENDING (1<<TIF_ABI_PENDING) |
136 | #define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT) | 136 | #define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT) |
137 | #define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP) | 137 | #define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP) |
diff --git a/include/asm-sparc64/futex.h b/include/asm-sparc64/futex.h index 6a332a9f099c..0caf60147e97 100644 --- a/include/asm-sparc64/futex.h +++ b/include/asm-sparc64/futex.h | |||
@@ -1,6 +1,86 @@ | |||
1 | #ifndef _ASM_FUTEX_H | 1 | #ifndef _SPARC64_FUTEX_H |
2 | #define _ASM_FUTEX_H | 2 | #define _SPARC64_FUTEX_H |
3 | 3 | ||
4 | #include <asm-generic/futex.h> | 4 | #include <linux/futex.h> |
5 | #include <asm/errno.h> | ||
6 | #include <asm/system.h> | ||
7 | #include <asm/uaccess.h> | ||
5 | 8 | ||
6 | #endif | 9 | #define __futex_cas_op(insn, ret, oldval, uaddr, oparg) \ |
10 | __asm__ __volatile__( \ | ||
11 | "\n1: lduwa [%3] %%asi, %2\n" \ | ||
12 | " " insn "\n" \ | ||
13 | "2: casa [%3] %%asi, %2, %1\n" \ | ||
14 | " cmp %2, %1\n" \ | ||
15 | " bne,pn %%icc, 1b\n" \ | ||
16 | " mov 0, %0\n" \ | ||
17 | "3:\n" \ | ||
18 | " .section .fixup,#alloc,#execinstr\n" \ | ||
19 | " .align 4\n" \ | ||
20 | "4: ba 3b\n" \ | ||
21 | " mov %5, %0\n" \ | ||
22 | " .previous\n" \ | ||
23 | " .section __ex_table,#alloc\n" \ | ||
24 | " .align 4\n" \ | ||
25 | " .word 1b, 4b\n" \ | ||
26 | " .word 2b, 4b\n" \ | ||
27 | " .previous\n" \ | ||
28 | : "=&r" (ret), "=&r" (oldval), "=&r" (tem) \ | ||
29 | : "r" (uaddr), "r" (oparg), "i" (-EFAULT) \ | ||
30 | : "memory") | ||
31 | |||
32 | static inline int futex_atomic_op_inuser(int encoded_op, int __user *uaddr) | ||
33 | { | ||
34 | int op = (encoded_op >> 28) & 7; | ||
35 | int cmp = (encoded_op >> 24) & 15; | ||
36 | int oparg = (encoded_op << 8) >> 20; | ||
37 | int cmparg = (encoded_op << 20) >> 20; | ||
38 | int oldval = 0, ret, tem; | ||
39 | |||
40 | if (unlikely(!access_ok(VERIFY_WRITE, uaddr, sizeof(int)))) | ||
41 | return -EFAULT; | ||
42 | if (unlikely((((unsigned long) uaddr) & 0x3UL))) | ||
43 | return -EINVAL; | ||
44 | |||
45 | if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28)) | ||
46 | oparg = 1 << oparg; | ||
47 | |||
48 | inc_preempt_count(); | ||
49 | |||
50 | switch (op) { | ||
51 | case FUTEX_OP_SET: | ||
52 | __futex_cas_op("mov\t%4, %1", ret, oldval, uaddr, oparg); | ||
53 | break; | ||
54 | case FUTEX_OP_ADD: | ||
55 | __futex_cas_op("add\t%2, %4, %1", ret, oldval, uaddr, oparg); | ||
56 | break; | ||
57 | case FUTEX_OP_OR: | ||
58 | __futex_cas_op("or\t%2, %4, %1", ret, oldval, uaddr, oparg); | ||
59 | break; | ||
60 | case FUTEX_OP_ANDN: | ||
61 | __futex_cas_op("and\t%2, %4, %1", ret, oldval, uaddr, oparg); | ||
62 | break; | ||
63 | case FUTEX_OP_XOR: | ||
64 | __futex_cas_op("xor\t%2, %4, %1", ret, oldval, uaddr, oparg); | ||
65 | break; | ||
66 | default: | ||
67 | ret = -ENOSYS; | ||
68 | } | ||
69 | |||
70 | dec_preempt_count(); | ||
71 | |||
72 | if (!ret) { | ||
73 | switch (cmp) { | ||
74 | case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break; | ||
75 | case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break; | ||
76 | case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break; | ||
77 | case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break; | ||
78 | case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break; | ||
79 | case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break; | ||
80 | default: ret = -ENOSYS; | ||
81 | } | ||
82 | } | ||
83 | return ret; | ||
84 | } | ||
85 | |||
86 | #endif /* !(_SPARC64_FUTEX_H) */ | ||
diff --git a/include/asm-sparc64/smp.h b/include/asm-sparc64/smp.h index 110a2de89123..473edb2603ec 100644 --- a/include/asm-sparc64/smp.h +++ b/include/asm-sparc64/smp.h | |||
@@ -66,8 +66,14 @@ static __inline__ int hard_smp_processor_id(void) | |||
66 | 66 | ||
67 | #define raw_smp_processor_id() (current_thread_info()->cpu) | 67 | #define raw_smp_processor_id() (current_thread_info()->cpu) |
68 | 68 | ||
69 | extern void smp_setup_cpu_possible_map(void); | ||
70 | |||
69 | #endif /* !(__ASSEMBLY__) */ | 71 | #endif /* !(__ASSEMBLY__) */ |
70 | 72 | ||
73 | #else | ||
74 | |||
75 | #define smp_setup_cpu_possible_map() do { } while (0) | ||
76 | |||
71 | #endif /* !(CONFIG_SMP) */ | 77 | #endif /* !(CONFIG_SMP) */ |
72 | 78 | ||
73 | #define NO_PROC_ID 0xFF | 79 | #define NO_PROC_ID 0xFF |
diff --git a/include/asm-x86_64/pci.h b/include/asm-x86_64/pci.h index fd03e15d7ea6..8a05af264d18 100644 --- a/include/asm-x86_64/pci.h +++ b/include/asm-x86_64/pci.h | |||
@@ -19,8 +19,6 @@ extern unsigned int pcibios_assign_all_busses(void); | |||
19 | #endif | 19 | #endif |
20 | #define pcibios_scan_all_fns(a, b) 0 | 20 | #define pcibios_scan_all_fns(a, b) 0 |
21 | 21 | ||
22 | extern int no_iommu, force_iommu; | ||
23 | |||
24 | extern unsigned long pci_mem_start; | 22 | extern unsigned long pci_mem_start; |
25 | #define PCIBIOS_MIN_IO 0x1000 | 23 | #define PCIBIOS_MIN_IO 0x1000 |
26 | #define PCIBIOS_MIN_MEM (pci_mem_start) | 24 | #define PCIBIOS_MIN_MEM (pci_mem_start) |
diff --git a/include/asm-x86_64/pgtable.h b/include/asm-x86_64/pgtable.h index 8fbf4dd72115..715fd94cf577 100644 --- a/include/asm-x86_64/pgtable.h +++ b/include/asm-x86_64/pgtable.h | |||
@@ -131,7 +131,7 @@ static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, unsigned long | |||
131 | #define PGDIR_SIZE (1UL << PGDIR_SHIFT) | 131 | #define PGDIR_SIZE (1UL << PGDIR_SHIFT) |
132 | #define PGDIR_MASK (~(PGDIR_SIZE-1)) | 132 | #define PGDIR_MASK (~(PGDIR_SIZE-1)) |
133 | 133 | ||
134 | #define USER_PTRS_PER_PGD (TASK_SIZE/PGDIR_SIZE) | 134 | #define USER_PTRS_PER_PGD ((TASK_SIZE-1)/PGDIR_SIZE+1) |
135 | #define FIRST_USER_ADDRESS 0 | 135 | #define FIRST_USER_ADDRESS 0 |
136 | 136 | ||
137 | #ifndef __ASSEMBLY__ | 137 | #ifndef __ASSEMBLY__ |
diff --git a/include/asm-x86_64/proto.h b/include/asm-x86_64/proto.h index eca3f2d633db..3ba8fd45fcb3 100644 --- a/include/asm-x86_64/proto.h +++ b/include/asm-x86_64/proto.h | |||
@@ -39,7 +39,6 @@ extern void config_acpi_tables(void); | |||
39 | extern void ia32_syscall(void); | 39 | extern void ia32_syscall(void); |
40 | extern void iommu_hole_init(void); | 40 | extern void iommu_hole_init(void); |
41 | 41 | ||
42 | extern void time_init_gtod(void); | ||
43 | extern int pmtimer_mark_offset(void); | 42 | extern int pmtimer_mark_offset(void); |
44 | extern void pmtimer_resume(void); | 43 | extern void pmtimer_resume(void); |
45 | extern void pmtimer_wait(unsigned); | 44 | extern void pmtimer_wait(unsigned); |
@@ -134,6 +133,7 @@ extern int force_iommu; | |||
134 | 133 | ||
135 | extern int reboot_force; | 134 | extern int reboot_force; |
136 | extern int notsc_setup(char *); | 135 | extern int notsc_setup(char *); |
136 | extern int setup_additional_cpus(char *); | ||
137 | 137 | ||
138 | extern void smp_local_timer_interrupt(struct pt_regs * regs); | 138 | extern void smp_local_timer_interrupt(struct pt_regs * regs); |
139 | 139 | ||
diff --git a/include/linux/netfilter_bridge/ebt_log.h b/include/linux/netfilter_bridge/ebt_log.h index 358fbc84fb59..96e231ae7554 100644 --- a/include/linux/netfilter_bridge/ebt_log.h +++ b/include/linux/netfilter_bridge/ebt_log.h | |||
@@ -3,6 +3,7 @@ | |||
3 | 3 | ||
4 | #define EBT_LOG_IP 0x01 /* if the frame is made by ip, log the ip information */ | 4 | #define EBT_LOG_IP 0x01 /* if the frame is made by ip, log the ip information */ |
5 | #define EBT_LOG_ARP 0x02 | 5 | #define EBT_LOG_ARP 0x02 |
6 | #define EBT_LOG_NFLOG 0x04 | ||
6 | #define EBT_LOG_MASK (EBT_LOG_IP | EBT_LOG_ARP) | 7 | #define EBT_LOG_MASK (EBT_LOG_IP | EBT_LOG_ARP) |
7 | #define EBT_LOG_PREFIX_SIZE 30 | 8 | #define EBT_LOG_PREFIX_SIZE 30 |
8 | #define EBT_LOG_WATCHER "log" | 9 | #define EBT_LOG_WATCHER "log" |
diff --git a/include/linux/netfilter_ipv4/ipt_LOG.h b/include/linux/netfilter_ipv4/ipt_LOG.h index 22d16177319b..892f9a33fea8 100644 --- a/include/linux/netfilter_ipv4/ipt_LOG.h +++ b/include/linux/netfilter_ipv4/ipt_LOG.h | |||
@@ -6,7 +6,8 @@ | |||
6 | #define IPT_LOG_TCPOPT 0x02 /* Log TCP options */ | 6 | #define IPT_LOG_TCPOPT 0x02 /* Log TCP options */ |
7 | #define IPT_LOG_IPOPT 0x04 /* Log IP options */ | 7 | #define IPT_LOG_IPOPT 0x04 /* Log IP options */ |
8 | #define IPT_LOG_UID 0x08 /* Log UID owning local socket */ | 8 | #define IPT_LOG_UID 0x08 /* Log UID owning local socket */ |
9 | #define IPT_LOG_MASK 0x0f | 9 | #define IPT_LOG_NFLOG 0x10 /* Log using nf_log backend */ |
10 | #define IPT_LOG_MASK 0x1f | ||
10 | 11 | ||
11 | struct ipt_log_info { | 12 | struct ipt_log_info { |
12 | unsigned char level; | 13 | unsigned char level; |
diff --git a/include/linux/netfilter_ipv6/ip6t_LOG.h b/include/linux/netfilter_ipv6/ip6t_LOG.h index 9008ff5c40ae..060c1a1c6c60 100644 --- a/include/linux/netfilter_ipv6/ip6t_LOG.h +++ b/include/linux/netfilter_ipv6/ip6t_LOG.h | |||
@@ -6,7 +6,8 @@ | |||
6 | #define IP6T_LOG_TCPOPT 0x02 /* Log TCP options */ | 6 | #define IP6T_LOG_TCPOPT 0x02 /* Log TCP options */ |
7 | #define IP6T_LOG_IPOPT 0x04 /* Log IP options */ | 7 | #define IP6T_LOG_IPOPT 0x04 /* Log IP options */ |
8 | #define IP6T_LOG_UID 0x08 /* Log UID owning local socket */ | 8 | #define IP6T_LOG_UID 0x08 /* Log UID owning local socket */ |
9 | #define IP6T_LOG_MASK 0x0f | 9 | #define IP6T_LOG_NFLOG 0x10 /* Log using nf_log backend */ |
10 | #define IP6T_LOG_MASK 0x1f | ||
10 | 11 | ||
11 | struct ip6t_log_info { | 12 | struct ip6t_log_info { |
12 | unsigned char level; | 13 | unsigned char level; |
diff --git a/include/linux/sched.h b/include/linux/sched.h index b6f51e3a38ec..ff2e09c953b9 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -298,8 +298,9 @@ struct mm_struct { | |||
298 | unsigned long addr, unsigned long len, | 298 | unsigned long addr, unsigned long len, |
299 | unsigned long pgoff, unsigned long flags); | 299 | unsigned long pgoff, unsigned long flags); |
300 | void (*unmap_area) (struct mm_struct *mm, unsigned long addr); | 300 | void (*unmap_area) (struct mm_struct *mm, unsigned long addr); |
301 | unsigned long mmap_base; /* base of mmap area */ | 301 | unsigned long mmap_base; /* base of mmap area */ |
302 | unsigned long cached_hole_size; /* if non-zero, the largest hole below free_area_cache */ | 302 | unsigned long task_size; /* size of task vm space */ |
303 | unsigned long cached_hole_size; /* if non-zero, the largest hole below free_area_cache */ | ||
303 | unsigned long free_area_cache; /* first hole of size cached_hole_size or larger */ | 304 | unsigned long free_area_cache; /* first hole of size cached_hole_size or larger */ |
304 | pgd_t * pgd; | 305 | pgd_t * pgd; |
305 | atomic_t mm_users; /* How many users with user space? */ | 306 | atomic_t mm_users; /* How many users with user space? */ |
diff --git a/include/linux/serial_reg.h b/include/linux/serial_reg.h index 6a2bb955844b..3c8a6aa77415 100644 --- a/include/linux/serial_reg.h +++ b/include/linux/serial_reg.h | |||
@@ -247,10 +247,10 @@ | |||
247 | #define UART_CTR 0xFF | 247 | #define UART_CTR 0xFF |
248 | 248 | ||
249 | /* | 249 | /* |
250 | * The 16C950 Additional Control Reigster | 250 | * The 16C950 Additional Control Register |
251 | */ | 251 | */ |
252 | #define UART_ACR_RXDIS 0x01 /* Receiver disable */ | 252 | #define UART_ACR_RXDIS 0x01 /* Receiver disable */ |
253 | #define UART_ACR_TXDIS 0x02 /* Receiver disable */ | 253 | #define UART_ACR_TXDIS 0x02 /* Transmitter disable */ |
254 | #define UART_ACR_DSRFC 0x04 /* DSR Flow Control */ | 254 | #define UART_ACR_DSRFC 0x04 /* DSR Flow Control */ |
255 | #define UART_ACR_TLENB 0x20 /* 950 trigger levels enable */ | 255 | #define UART_ACR_TLENB 0x20 /* 950 trigger levels enable */ |
256 | #define UART_ACR_ICRRD 0x40 /* ICR Read enable */ | 256 | #define UART_ACR_ICRRD 0x40 /* ICR Read enable */ |
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index d73501ba7e44..b9ea44ac0ddb 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h | |||
@@ -543,7 +543,7 @@ asmlinkage long sys_unlinkat(int dfd, const char __user * pathname, int flag); | |||
543 | asmlinkage long sys_symlinkat(const char __user * oldname, | 543 | asmlinkage long sys_symlinkat(const char __user * oldname, |
544 | int newdfd, const char __user * newname); | 544 | int newdfd, const char __user * newname); |
545 | asmlinkage long sys_linkat(int olddfd, const char __user *oldname, | 545 | asmlinkage long sys_linkat(int olddfd, const char __user *oldname, |
546 | int newdfd, const char __user *newname); | 546 | int newdfd, const char __user *newname, int flags); |
547 | asmlinkage long sys_renameat(int olddfd, const char __user * oldname, | 547 | asmlinkage long sys_renameat(int olddfd, const char __user * oldname, |
548 | int newdfd, const char __user * newname); | 548 | int newdfd, const char __user * newname); |
549 | asmlinkage long sys_futimesat(int dfd, char __user *filename, | 549 | asmlinkage long sys_futimesat(int dfd, char __user *filename, |
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h index 0e92bf7ec28e..bac61db26456 100644 --- a/include/linux/sysctl.h +++ b/include/linux/sysctl.h | |||
@@ -147,6 +147,7 @@ enum | |||
147 | KERN_SETUID_DUMPABLE=69, /* int: behaviour of dumps for setuid core */ | 147 | KERN_SETUID_DUMPABLE=69, /* int: behaviour of dumps for setuid core */ |
148 | KERN_SPIN_RETRY=70, /* int: number of spinlock retries */ | 148 | KERN_SPIN_RETRY=70, /* int: number of spinlock retries */ |
149 | KERN_ACPI_VIDEO_FLAGS=71, /* int: flags for setting up video after ACPI sleep */ | 149 | KERN_ACPI_VIDEO_FLAGS=71, /* int: flags for setting up video after ACPI sleep */ |
150 | KERN_IA64_UNALIGNED=72, /* int: ia64 unaligned userland trap enable */ | ||
150 | }; | 151 | }; |
151 | 152 | ||
152 | 153 | ||
diff --git a/include/net/xfrm.h b/include/net/xfrm.h index d6111a2f0a23..8d362c49b8a9 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h | |||
@@ -233,7 +233,6 @@ struct xfrm_type | |||
233 | int (*init_state)(struct xfrm_state *x); | 233 | int (*init_state)(struct xfrm_state *x); |
234 | void (*destructor)(struct xfrm_state *); | 234 | void (*destructor)(struct xfrm_state *); |
235 | int (*input)(struct xfrm_state *, struct xfrm_decap_state *, struct sk_buff *skb); | 235 | int (*input)(struct xfrm_state *, struct xfrm_decap_state *, struct sk_buff *skb); |
236 | int (*post_input)(struct xfrm_state *, struct xfrm_decap_state *, struct sk_buff *skb); | ||
237 | int (*output)(struct xfrm_state *, struct sk_buff *pskb); | 236 | int (*output)(struct xfrm_state *, struct sk_buff *pskb); |
238 | /* Estimate maximal size of result of transformation of a dgram */ | 237 | /* Estimate maximal size of result of transformation of a dgram */ |
239 | u32 (*get_max_size)(struct xfrm_state *, int size); | 238 | u32 (*get_max_size)(struct xfrm_state *, int size); |
@@ -403,6 +402,11 @@ unsigned xfrm_spi_hash(xfrm_address_t *addr, u32 spi, u8 proto, unsigned short f | |||
403 | 402 | ||
404 | extern void __xfrm_state_destroy(struct xfrm_state *); | 403 | extern void __xfrm_state_destroy(struct xfrm_state *); |
405 | 404 | ||
405 | static inline void __xfrm_state_put(struct xfrm_state *x) | ||
406 | { | ||
407 | atomic_dec(&x->refcnt); | ||
408 | } | ||
409 | |||
406 | static inline void xfrm_state_put(struct xfrm_state *x) | 410 | static inline void xfrm_state_put(struct xfrm_state *x) |
407 | { | 411 | { |
408 | if (atomic_dec_and_test(&x->refcnt)) | 412 | if (atomic_dec_and_test(&x->refcnt)) |
diff --git a/include/pcmcia/device_id.h b/include/pcmcia/device_id.h index 346d81ece287..e04e0b0d9a25 100644 --- a/include/pcmcia/device_id.h +++ b/include/pcmcia/device_id.h | |||
@@ -72,6 +72,15 @@ | |||
72 | .prod_id = { (v1), (v2), (v3), (v4) }, \ | 72 | .prod_id = { (v1), (v2), (v3), (v4) }, \ |
73 | .prod_id_hash = { (vh1), (vh2), (vh3), (vh4) }, } | 73 | .prod_id_hash = { (vh1), (vh2), (vh3), (vh4) }, } |
74 | 74 | ||
75 | #define PCMCIA_DEVICE_MANF_CARD_PROD_ID1(manf, card, v1, vh1) { \ | ||
76 | .match_flags = PCMCIA_DEV_ID_MATCH_MANF_ID| \ | ||
77 | PCMCIA_DEV_ID_MATCH_CARD_ID| \ | ||
78 | PCMCIA_DEV_ID_MATCH_PROD_ID1, \ | ||
79 | .manf_id = (manf), \ | ||
80 | .card_id = (card), \ | ||
81 | .prod_id = { (v1), NULL, NULL, NULL }, \ | ||
82 | .prod_id_hash = { (vh1), 0, 0, 0 }, } | ||
83 | |||
75 | 84 | ||
76 | /* multi-function devices */ | 85 | /* multi-function devices */ |
77 | 86 | ||