diff options
Diffstat (limited to 'include')
40 files changed, 409 insertions, 127 deletions
diff --git a/include/asm-arm/arch-s3c2410/spi.h b/include/asm-arm/arch-s3c2410/spi.h index 7ca0ed97a6d0..352d33860b63 100644 --- a/include/asm-arm/arch-s3c2410/spi.h +++ b/include/asm-arm/arch-s3c2410/spi.h | |||
@@ -15,6 +15,7 @@ | |||
15 | 15 | ||
16 | struct s3c2410_spi_info { | 16 | struct s3c2410_spi_info { |
17 | unsigned long pin_cs; /* simple gpio cs */ | 17 | unsigned long pin_cs; /* simple gpio cs */ |
18 | unsigned int num_cs; /* total chipselects */ | ||
18 | 19 | ||
19 | void (*set_cs)(struct s3c2410_spi_info *spi, int cs, int pol); | 20 | void (*set_cs)(struct s3c2410_spi_info *spi, int cs, int pol); |
20 | }; | 21 | }; |
diff --git a/include/asm-frv/mem-layout.h b/include/asm-frv/mem-layout.h index 83532252b8be..734a1d0583b6 100644 --- a/include/asm-frv/mem-layout.h +++ b/include/asm-frv/mem-layout.h | |||
@@ -60,7 +60,7 @@ | |||
60 | */ | 60 | */ |
61 | #define BRK_BASE __UL(2 * 1024 * 1024 + PAGE_SIZE) | 61 | #define BRK_BASE __UL(2 * 1024 * 1024 + PAGE_SIZE) |
62 | #define STACK_TOP __UL(2 * 1024 * 1024) | 62 | #define STACK_TOP __UL(2 * 1024 * 1024) |
63 | #define STACK_TOP_MAX STACK_TOP | 63 | #define STACK_TOP_MAX __UL(0xc0000000) |
64 | 64 | ||
65 | /* userspace process size */ | 65 | /* userspace process size */ |
66 | #ifdef CONFIG_MMU | 66 | #ifdef CONFIG_MMU |
diff --git a/include/asm-frv/pgtable.h b/include/asm-frv/pgtable.h index 6c0682ed5fc9..4e219046fe42 100644 --- a/include/asm-frv/pgtable.h +++ b/include/asm-frv/pgtable.h | |||
@@ -507,13 +507,22 @@ static inline int pte_file(pte_t pte) | |||
507 | */ | 507 | */ |
508 | static inline void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte) | 508 | static inline void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte) |
509 | { | 509 | { |
510 | struct mm_struct *mm; | ||
510 | unsigned long ampr; | 511 | unsigned long ampr; |
511 | pgd_t *pge = pgd_offset(current->mm, address); | ||
512 | pud_t *pue = pud_offset(pge, address); | ||
513 | pmd_t *pme = pmd_offset(pue, address); | ||
514 | 512 | ||
515 | ampr = pme->ste[0] & 0xffffff00; | 513 | mm = current->mm; |
516 | ampr |= xAMPRx_L | xAMPRx_SS_16Kb | xAMPRx_S | xAMPRx_C | xAMPRx_V; | 514 | if (mm) { |
515 | pgd_t *pge = pgd_offset(mm, address); | ||
516 | pud_t *pue = pud_offset(pge, address); | ||
517 | pmd_t *pme = pmd_offset(pue, address); | ||
518 | |||
519 | ampr = pme->ste[0] & 0xffffff00; | ||
520 | ampr |= xAMPRx_L | xAMPRx_SS_16Kb | xAMPRx_S | xAMPRx_C | | ||
521 | xAMPRx_V; | ||
522 | } else { | ||
523 | address = ULONG_MAX; | ||
524 | ampr = 0; | ||
525 | } | ||
517 | 526 | ||
518 | asm volatile("movgs %0,scr0\n" | 527 | asm volatile("movgs %0,scr0\n" |
519 | "movgs %0,scr1\n" | 528 | "movgs %0,scr1\n" |
diff --git a/include/asm-frv/spr-regs.h b/include/asm-frv/spr-regs.h index c2a541ef828d..01e6af5e99b8 100644 --- a/include/asm-frv/spr-regs.h +++ b/include/asm-frv/spr-regs.h | |||
@@ -99,9 +99,23 @@ | |||
99 | #define TBR_TT_TRAP1 (0x81 << 4) | 99 | #define TBR_TT_TRAP1 (0x81 << 4) |
100 | #define TBR_TT_TRAP2 (0x82 << 4) | 100 | #define TBR_TT_TRAP2 (0x82 << 4) |
101 | #define TBR_TT_TRAP3 (0x83 << 4) | 101 | #define TBR_TT_TRAP3 (0x83 << 4) |
102 | #define TBR_TT_TRAP120 (0xf8 << 4) | ||
103 | #define TBR_TT_TRAP121 (0xf9 << 4) | ||
104 | #define TBR_TT_TRAP122 (0xfa << 4) | ||
105 | #define TBR_TT_TRAP123 (0xfb << 4) | ||
106 | #define TBR_TT_TRAP124 (0xfc << 4) | ||
107 | #define TBR_TT_TRAP125 (0xfd << 4) | ||
102 | #define TBR_TT_TRAP126 (0xfe << 4) | 108 | #define TBR_TT_TRAP126 (0xfe << 4) |
103 | #define TBR_TT_BREAK (0xff << 4) | 109 | #define TBR_TT_BREAK (0xff << 4) |
104 | 110 | ||
111 | #define TBR_TT_ATOMIC_CMPXCHG32 TBR_TT_TRAP120 | ||
112 | #define TBR_TT_ATOMIC_XCHG32 TBR_TT_TRAP121 | ||
113 | #define TBR_TT_ATOMIC_XOR TBR_TT_TRAP122 | ||
114 | #define TBR_TT_ATOMIC_OR TBR_TT_TRAP123 | ||
115 | #define TBR_TT_ATOMIC_AND TBR_TT_TRAP124 | ||
116 | #define TBR_TT_ATOMIC_SUB TBR_TT_TRAP125 | ||
117 | #define TBR_TT_ATOMIC_ADD TBR_TT_TRAP126 | ||
118 | |||
105 | #define __get_TBR() ({ unsigned long x; asm volatile("movsg tbr,%0" : "=r"(x)); x; }) | 119 | #define __get_TBR() ({ unsigned long x; asm volatile("movsg tbr,%0" : "=r"(x)); x; }) |
106 | 120 | ||
107 | /* | 121 | /* |
diff --git a/include/asm-frv/system.h b/include/asm-frv/system.h index 2c57f4734746..30a67a9da11a 100644 --- a/include/asm-frv/system.h +++ b/include/asm-frv/system.h | |||
@@ -179,14 +179,23 @@ do { \ | |||
179 | #define mb() asm volatile ("membar" : : :"memory") | 179 | #define mb() asm volatile ("membar" : : :"memory") |
180 | #define rmb() asm volatile ("membar" : : :"memory") | 180 | #define rmb() asm volatile ("membar" : : :"memory") |
181 | #define wmb() asm volatile ("membar" : : :"memory") | 181 | #define wmb() asm volatile ("membar" : : :"memory") |
182 | #define set_mb(var, value) do { var = value; mb(); } while (0) | 182 | #define read_barrier_depends() barrier() |
183 | 183 | ||
184 | #define smp_mb() mb() | 184 | #ifdef CONFIG_SMP |
185 | #define smp_rmb() rmb() | 185 | #define smp_mb() mb() |
186 | #define smp_wmb() wmb() | 186 | #define smp_rmb() rmb() |
187 | 187 | #define smp_wmb() wmb() | |
188 | #define read_barrier_depends() do {} while(0) | ||
189 | #define smp_read_barrier_depends() read_barrier_depends() | 188 | #define smp_read_barrier_depends() read_barrier_depends() |
189 | #define set_mb(var, value) \ | ||
190 | do { xchg(&var, (value)); } while (0) | ||
191 | #else | ||
192 | #define smp_mb() barrier() | ||
193 | #define smp_rmb() barrier() | ||
194 | #define smp_wmb() barrier() | ||
195 | #define smp_read_barrier_depends() do {} while(0) | ||
196 | #define set_mb(var, value) \ | ||
197 | do { var = (value); barrier(); } while (0) | ||
198 | #endif | ||
190 | 199 | ||
191 | #define HARD_RESET_NOW() \ | 200 | #define HARD_RESET_NOW() \ |
192 | do { \ | 201 | do { \ |
diff --git a/include/asm-ia64/acpi.h b/include/asm-ia64/acpi.h index cd1cc39b5599..fcfad326f4c7 100644 --- a/include/asm-ia64/acpi.h +++ b/include/asm-ia64/acpi.h | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <linux/init.h> | 35 | #include <linux/init.h> |
36 | #include <linux/numa.h> | 36 | #include <linux/numa.h> |
37 | #include <asm/system.h> | 37 | #include <asm/system.h> |
38 | #include <asm/numa.h> | ||
38 | 39 | ||
39 | #define COMPILER_DEPENDENT_INT64 long | 40 | #define COMPILER_DEPENDENT_INT64 long |
40 | #define COMPILER_DEPENDENT_UINT64 unsigned long | 41 | #define COMPILER_DEPENDENT_UINT64 unsigned long |
@@ -115,7 +116,11 @@ extern unsigned int is_cpu_cpei_target(unsigned int cpu); | |||
115 | extern void set_cpei_target_cpu(unsigned int cpu); | 116 | extern void set_cpei_target_cpu(unsigned int cpu); |
116 | extern unsigned int get_cpei_target_cpu(void); | 117 | extern unsigned int get_cpei_target_cpu(void); |
117 | extern void prefill_possible_map(void); | 118 | extern void prefill_possible_map(void); |
119 | #ifdef CONFIG_ACPI_HOTPLUG_CPU | ||
118 | extern int additional_cpus; | 120 | extern int additional_cpus; |
121 | #else | ||
122 | #define additional_cpus 0 | ||
123 | #endif | ||
119 | 124 | ||
120 | #ifdef CONFIG_ACPI_NUMA | 125 | #ifdef CONFIG_ACPI_NUMA |
121 | #if MAX_NUMNODES > 256 | 126 | #if MAX_NUMNODES > 256 |
@@ -129,6 +134,34 @@ extern int __initdata nid_to_pxm_map[MAX_NUMNODES]; | |||
129 | 134 | ||
130 | #define acpi_unlazy_tlb(x) | 135 | #define acpi_unlazy_tlb(x) |
131 | 136 | ||
137 | #ifdef CONFIG_ACPI_NUMA | ||
138 | extern cpumask_t early_cpu_possible_map; | ||
139 | #define for_each_possible_early_cpu(cpu) \ | ||
140 | for_each_cpu_mask((cpu), early_cpu_possible_map) | ||
141 | |||
142 | static inline void per_cpu_scan_finalize(int min_cpus, int reserve_cpus) | ||
143 | { | ||
144 | int low_cpu, high_cpu; | ||
145 | int cpu; | ||
146 | int next_nid = 0; | ||
147 | |||
148 | low_cpu = cpus_weight(early_cpu_possible_map); | ||
149 | |||
150 | high_cpu = max(low_cpu, min_cpus); | ||
151 | high_cpu = min(high_cpu + reserve_cpus, NR_CPUS); | ||
152 | |||
153 | for (cpu = low_cpu; cpu < high_cpu; cpu++) { | ||
154 | cpu_set(cpu, early_cpu_possible_map); | ||
155 | if (node_cpuid[cpu].nid == NUMA_NO_NODE) { | ||
156 | node_cpuid[cpu].nid = next_nid; | ||
157 | next_nid++; | ||
158 | if (next_nid >= num_online_nodes()) | ||
159 | next_nid = 0; | ||
160 | } | ||
161 | } | ||
162 | } | ||
163 | #endif /* CONFIG_ACPI_NUMA */ | ||
164 | |||
132 | #endif /*__KERNEL__*/ | 165 | #endif /*__KERNEL__*/ |
133 | 166 | ||
134 | #endif /*_ASM_ACPI_H*/ | 167 | #endif /*_ASM_ACPI_H*/ |
diff --git a/include/asm-ia64/cputime.h b/include/asm-ia64/cputime.h index 72400a78002a..f9abdec6577a 100644 --- a/include/asm-ia64/cputime.h +++ b/include/asm-ia64/cputime.h | |||
@@ -1,6 +1,110 @@ | |||
1 | /* | ||
2 | * include/asm-ia64/cputime.h: | ||
3 | * Definitions for measuring cputime on ia64 machines. | ||
4 | * | ||
5 | * Based on <asm-powerpc/cputime.h>. | ||
6 | * | ||
7 | * Copyright (C) 2007 FUJITSU LIMITED | ||
8 | * Copyright (C) 2007 Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com> | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or | ||
11 | * modify it under the terms of the GNU General Public License | ||
12 | * as published by the Free Software Foundation; either version | ||
13 | * 2 of the License, or (at your option) any later version. | ||
14 | * | ||
15 | * If we have CONFIG_VIRT_CPU_ACCOUNTING, we measure cpu time in nsec. | ||
16 | * Otherwise we measure cpu time in jiffies using the generic definitions. | ||
17 | */ | ||
18 | |||
1 | #ifndef __IA64_CPUTIME_H | 19 | #ifndef __IA64_CPUTIME_H |
2 | #define __IA64_CPUTIME_H | 20 | #define __IA64_CPUTIME_H |
3 | 21 | ||
22 | #ifndef CONFIG_VIRT_CPU_ACCOUNTING | ||
4 | #include <asm-generic/cputime.h> | 23 | #include <asm-generic/cputime.h> |
24 | #else | ||
25 | |||
26 | #include <linux/time.h> | ||
27 | #include <linux/jiffies.h> | ||
28 | #include <asm/processor.h> | ||
29 | |||
30 | typedef u64 cputime_t; | ||
31 | typedef u64 cputime64_t; | ||
32 | |||
33 | #define cputime_zero ((cputime_t)0) | ||
34 | #define cputime_max ((~((cputime_t)0) >> 1) - 1) | ||
35 | #define cputime_add(__a, __b) ((__a) + (__b)) | ||
36 | #define cputime_sub(__a, __b) ((__a) - (__b)) | ||
37 | #define cputime_div(__a, __n) ((__a) / (__n)) | ||
38 | #define cputime_halve(__a) ((__a) >> 1) | ||
39 | #define cputime_eq(__a, __b) ((__a) == (__b)) | ||
40 | #define cputime_gt(__a, __b) ((__a) > (__b)) | ||
41 | #define cputime_ge(__a, __b) ((__a) >= (__b)) | ||
42 | #define cputime_lt(__a, __b) ((__a) < (__b)) | ||
43 | #define cputime_le(__a, __b) ((__a) <= (__b)) | ||
44 | |||
45 | #define cputime64_zero ((cputime64_t)0) | ||
46 | #define cputime64_add(__a, __b) ((__a) + (__b)) | ||
47 | #define cputime64_sub(__a, __b) ((__a) - (__b)) | ||
48 | #define cputime_to_cputime64(__ct) (__ct) | ||
49 | |||
50 | /* | ||
51 | * Convert cputime <-> jiffies (HZ) | ||
52 | */ | ||
53 | #define cputime_to_jiffies(__ct) ((__ct) / (NSEC_PER_SEC / HZ)) | ||
54 | #define jiffies_to_cputime(__jif) ((__jif) * (NSEC_PER_SEC / HZ)) | ||
55 | #define cputime64_to_jiffies64(__ct) ((__ct) / (NSEC_PER_SEC / HZ)) | ||
56 | #define jiffies64_to_cputime64(__jif) ((__jif) * (NSEC_PER_SEC / HZ)) | ||
57 | |||
58 | /* | ||
59 | * Convert cputime <-> milliseconds | ||
60 | */ | ||
61 | #define cputime_to_msecs(__ct) ((__ct) / NSEC_PER_MSEC) | ||
62 | #define msecs_to_cputime(__msecs) ((__msecs) * NSEC_PER_MSEC) | ||
63 | |||
64 | /* | ||
65 | * Convert cputime <-> seconds | ||
66 | */ | ||
67 | #define cputime_to_secs(__ct) ((__ct) / NSEC_PER_SEC) | ||
68 | #define secs_to_cputime(__secs) ((__secs) * NSEC_PER_SEC) | ||
69 | |||
70 | /* | ||
71 | * Convert cputime <-> timespec (nsec) | ||
72 | */ | ||
73 | static inline cputime_t timespec_to_cputime(const struct timespec *val) | ||
74 | { | ||
75 | cputime_t ret = val->tv_sec * NSEC_PER_SEC; | ||
76 | return (ret + val->tv_nsec); | ||
77 | } | ||
78 | static inline void cputime_to_timespec(const cputime_t ct, struct timespec *val) | ||
79 | { | ||
80 | val->tv_sec = ct / NSEC_PER_SEC; | ||
81 | val->tv_nsec = ct % NSEC_PER_SEC; | ||
82 | } | ||
83 | |||
84 | /* | ||
85 | * Convert cputime <-> timeval (msec) | ||
86 | */ | ||
87 | static inline cputime_t timeval_to_cputime(struct timeval *val) | ||
88 | { | ||
89 | cputime_t ret = val->tv_sec * NSEC_PER_SEC; | ||
90 | return (ret + val->tv_usec * NSEC_PER_USEC); | ||
91 | } | ||
92 | static inline void cputime_to_timeval(const cputime_t ct, struct timeval *val) | ||
93 | { | ||
94 | val->tv_sec = ct / NSEC_PER_SEC; | ||
95 | val->tv_usec = (ct % NSEC_PER_SEC) / NSEC_PER_USEC; | ||
96 | } | ||
97 | |||
98 | /* | ||
99 | * Convert cputime <-> clock (USER_HZ) | ||
100 | */ | ||
101 | #define cputime_to_clock_t(__ct) ((__ct) / (NSEC_PER_SEC / USER_HZ)) | ||
102 | #define clock_t_to_cputime(__x) ((__x) * (NSEC_PER_SEC / USER_HZ)) | ||
103 | |||
104 | /* | ||
105 | * Convert cputime64 to clock. | ||
106 | */ | ||
107 | #define cputime64_to_clock_t(__ct) cputime_to_clock_t((cputime_t)__ct) | ||
5 | 108 | ||
109 | #endif /* CONFIG_VIRT_CPU_ACCOUNTING */ | ||
6 | #endif /* __IA64_CPUTIME_H */ | 110 | #endif /* __IA64_CPUTIME_H */ |
diff --git a/include/asm-ia64/elf.h b/include/asm-ia64/elf.h index f8e83eca67a2..5e0c1a6bce8d 100644 --- a/include/asm-ia64/elf.h +++ b/include/asm-ia64/elf.h | |||
@@ -26,6 +26,7 @@ | |||
26 | #define ELF_ARCH EM_IA_64 | 26 | #define ELF_ARCH EM_IA_64 |
27 | 27 | ||
28 | #define USE_ELF_CORE_DUMP | 28 | #define USE_ELF_CORE_DUMP |
29 | #define CORE_DUMP_USE_REGSET | ||
29 | 30 | ||
30 | /* Least-significant four bits of ELF header's e_flags are OS-specific. The bits are | 31 | /* Least-significant four bits of ELF header's e_flags are OS-specific. The bits are |
31 | interpreted as follows by Linux: */ | 32 | interpreted as follows by Linux: */ |
@@ -154,6 +155,30 @@ extern void ia64_init_addr_space (void); | |||
154 | #define ELF_NGREG 128 /* we really need just 72 but let's leave some headroom... */ | 155 | #define ELF_NGREG 128 /* we really need just 72 but let's leave some headroom... */ |
155 | #define ELF_NFPREG 128 /* f0 and f1 could be omitted, but so what... */ | 156 | #define ELF_NFPREG 128 /* f0 and f1 could be omitted, but so what... */ |
156 | 157 | ||
158 | /* elf_gregset_t register offsets */ | ||
159 | #define ELF_GR_0_OFFSET 0 | ||
160 | #define ELF_NAT_OFFSET (32 * sizeof(elf_greg_t)) | ||
161 | #define ELF_PR_OFFSET (33 * sizeof(elf_greg_t)) | ||
162 | #define ELF_BR_0_OFFSET (34 * sizeof(elf_greg_t)) | ||
163 | #define ELF_CR_IIP_OFFSET (42 * sizeof(elf_greg_t)) | ||
164 | #define ELF_CFM_OFFSET (43 * sizeof(elf_greg_t)) | ||
165 | #define ELF_CR_IPSR_OFFSET (44 * sizeof(elf_greg_t)) | ||
166 | #define ELF_GR_OFFSET(i) (ELF_GR_0_OFFSET + i * sizeof(elf_greg_t)) | ||
167 | #define ELF_BR_OFFSET(i) (ELF_BR_0_OFFSET + i * sizeof(elf_greg_t)) | ||
168 | #define ELF_AR_RSC_OFFSET (45 * sizeof(elf_greg_t)) | ||
169 | #define ELF_AR_BSP_OFFSET (46 * sizeof(elf_greg_t)) | ||
170 | #define ELF_AR_BSPSTORE_OFFSET (47 * sizeof(elf_greg_t)) | ||
171 | #define ELF_AR_RNAT_OFFSET (48 * sizeof(elf_greg_t)) | ||
172 | #define ELF_AR_CCV_OFFSET (49 * sizeof(elf_greg_t)) | ||
173 | #define ELF_AR_UNAT_OFFSET (50 * sizeof(elf_greg_t)) | ||
174 | #define ELF_AR_FPSR_OFFSET (51 * sizeof(elf_greg_t)) | ||
175 | #define ELF_AR_PFS_OFFSET (52 * sizeof(elf_greg_t)) | ||
176 | #define ELF_AR_LC_OFFSET (53 * sizeof(elf_greg_t)) | ||
177 | #define ELF_AR_EC_OFFSET (54 * sizeof(elf_greg_t)) | ||
178 | #define ELF_AR_CSD_OFFSET (55 * sizeof(elf_greg_t)) | ||
179 | #define ELF_AR_SSD_OFFSET (56 * sizeof(elf_greg_t)) | ||
180 | #define ELF_AR_END_OFFSET (57 * sizeof(elf_greg_t)) | ||
181 | |||
157 | typedef unsigned long elf_fpxregset_t; | 182 | typedef unsigned long elf_fpxregset_t; |
158 | 183 | ||
159 | typedef unsigned long elf_greg_t; | 184 | typedef unsigned long elf_greg_t; |
@@ -183,12 +208,6 @@ extern void ia64_elf_core_copy_regs (struct pt_regs *src, elf_gregset_t dst); | |||
183 | 208 | ||
184 | struct task_struct; | 209 | struct task_struct; |
185 | 210 | ||
186 | extern int dump_task_regs(struct task_struct *, elf_gregset_t *); | ||
187 | extern int dump_task_fpu (struct task_struct *, elf_fpregset_t *); | ||
188 | |||
189 | #define ELF_CORE_COPY_TASK_REGS(tsk, elf_gregs) dump_task_regs(tsk, elf_gregs) | ||
190 | #define ELF_CORE_COPY_FPREGS(tsk, elf_fpregs) dump_task_fpu(tsk, elf_fpregs) | ||
191 | |||
192 | #define GATE_EHDR ((const struct elfhdr *) GATE_ADDR) | 211 | #define GATE_EHDR ((const struct elfhdr *) GATE_ADDR) |
193 | 212 | ||
194 | /* update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT entries changes */ | 213 | /* update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT entries changes */ |
diff --git a/include/asm-ia64/kregs.h b/include/asm-ia64/kregs.h index 7e55a584975c..aefcdfee7f23 100644 --- a/include/asm-ia64/kregs.h +++ b/include/asm-ia64/kregs.h | |||
@@ -31,6 +31,9 @@ | |||
31 | #define IA64_TR_PALCODE 1 /* itr1: maps PALcode as required by EFI */ | 31 | #define IA64_TR_PALCODE 1 /* itr1: maps PALcode as required by EFI */ |
32 | #define IA64_TR_CURRENT_STACK 1 /* dtr1: maps kernel's memory- & register-stacks */ | 32 | #define IA64_TR_CURRENT_STACK 1 /* dtr1: maps kernel's memory- & register-stacks */ |
33 | 33 | ||
34 | #define IA64_TR_ALLOC_BASE 2 /* itr&dtr: Base of dynamic TR resource*/ | ||
35 | #define IA64_TR_ALLOC_MAX 32 /* Max number for dynamic use*/ | ||
36 | |||
34 | /* Processor status register bits: */ | 37 | /* Processor status register bits: */ |
35 | #define IA64_PSR_BE_BIT 1 | 38 | #define IA64_PSR_BE_BIT 1 |
36 | #define IA64_PSR_UP_BIT 2 | 39 | #define IA64_PSR_UP_BIT 2 |
diff --git a/include/asm-ia64/numa.h b/include/asm-ia64/numa.h index 6a8a27cfae3e..3499ff57bf42 100644 --- a/include/asm-ia64/numa.h +++ b/include/asm-ia64/numa.h | |||
@@ -22,6 +22,8 @@ | |||
22 | 22 | ||
23 | #include <asm/mmzone.h> | 23 | #include <asm/mmzone.h> |
24 | 24 | ||
25 | #define NUMA_NO_NODE -1 | ||
26 | |||
25 | extern u16 cpu_to_node_map[NR_CPUS] __cacheline_aligned; | 27 | extern u16 cpu_to_node_map[NR_CPUS] __cacheline_aligned; |
26 | extern cpumask_t node_to_cpu_mask[MAX_NUMNODES] __cacheline_aligned; | 28 | extern cpumask_t node_to_cpu_mask[MAX_NUMNODES] __cacheline_aligned; |
27 | extern pg_data_t *pgdat_list[MAX_NUMNODES]; | 29 | extern pg_data_t *pgdat_list[MAX_NUMNODES]; |
diff --git a/include/asm-ia64/smp.h b/include/asm-ia64/smp.h index 4fa733dd417a..ec5f355fb7e3 100644 --- a/include/asm-ia64/smp.h +++ b/include/asm-ia64/smp.h | |||
@@ -38,6 +38,9 @@ ia64_get_lid (void) | |||
38 | return lid.f.id << 8 | lid.f.eid; | 38 | return lid.f.id << 8 | lid.f.eid; |
39 | } | 39 | } |
40 | 40 | ||
41 | extern int smp_call_function_mask(cpumask_t mask, void (*func)(void *), | ||
42 | void *info, int wait); | ||
43 | |||
41 | #define hard_smp_processor_id() ia64_get_lid() | 44 | #define hard_smp_processor_id() ia64_get_lid() |
42 | 45 | ||
43 | #ifdef CONFIG_SMP | 46 | #ifdef CONFIG_SMP |
diff --git a/include/asm-ia64/system.h b/include/asm-ia64/system.h index 595112bca3cc..dff8128fa58e 100644 --- a/include/asm-ia64/system.h +++ b/include/asm-ia64/system.h | |||
@@ -210,6 +210,13 @@ struct task_struct; | |||
210 | extern void ia64_save_extra (struct task_struct *task); | 210 | extern void ia64_save_extra (struct task_struct *task); |
211 | extern void ia64_load_extra (struct task_struct *task); | 211 | extern void ia64_load_extra (struct task_struct *task); |
212 | 212 | ||
213 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING | ||
214 | extern void ia64_account_on_switch (struct task_struct *prev, struct task_struct *next); | ||
215 | # define IA64_ACCOUNT_ON_SWITCH(p,n) ia64_account_on_switch(p,n) | ||
216 | #else | ||
217 | # define IA64_ACCOUNT_ON_SWITCH(p,n) | ||
218 | #endif | ||
219 | |||
213 | #ifdef CONFIG_PERFMON | 220 | #ifdef CONFIG_PERFMON |
214 | DECLARE_PER_CPU(unsigned long, pfm_syst_info); | 221 | DECLARE_PER_CPU(unsigned long, pfm_syst_info); |
215 | # define PERFMON_IS_SYSWIDE() (__get_cpu_var(pfm_syst_info) & 0x1) | 222 | # define PERFMON_IS_SYSWIDE() (__get_cpu_var(pfm_syst_info) & 0x1) |
@@ -222,6 +229,7 @@ extern void ia64_load_extra (struct task_struct *task); | |||
222 | || IS_IA32_PROCESS(task_pt_regs(t)) || PERFMON_IS_SYSWIDE()) | 229 | || IS_IA32_PROCESS(task_pt_regs(t)) || PERFMON_IS_SYSWIDE()) |
223 | 230 | ||
224 | #define __switch_to(prev,next,last) do { \ | 231 | #define __switch_to(prev,next,last) do { \ |
232 | IA64_ACCOUNT_ON_SWITCH(prev, next); \ | ||
225 | if (IA64_HAS_EXTRA_STATE(prev)) \ | 233 | if (IA64_HAS_EXTRA_STATE(prev)) \ |
226 | ia64_save_extra(prev); \ | 234 | ia64_save_extra(prev); \ |
227 | if (IA64_HAS_EXTRA_STATE(next)) \ | 235 | if (IA64_HAS_EXTRA_STATE(next)) \ |
@@ -266,6 +274,10 @@ void cpu_idle_wait(void); | |||
266 | 274 | ||
267 | void default_idle(void); | 275 | void default_idle(void); |
268 | 276 | ||
277 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING | ||
278 | extern void account_system_vtime(struct task_struct *); | ||
279 | #endif | ||
280 | |||
269 | #endif /* __KERNEL__ */ | 281 | #endif /* __KERNEL__ */ |
270 | 282 | ||
271 | #endif /* __ASSEMBLY__ */ | 283 | #endif /* __ASSEMBLY__ */ |
diff --git a/include/asm-ia64/thread_info.h b/include/asm-ia64/thread_info.h index 93d83cbe0c8c..6da8069a0f77 100644 --- a/include/asm-ia64/thread_info.h +++ b/include/asm-ia64/thread_info.h | |||
@@ -31,6 +31,12 @@ struct thread_info { | |||
31 | mm_segment_t addr_limit; /* user-level address space limit */ | 31 | mm_segment_t addr_limit; /* user-level address space limit */ |
32 | int preempt_count; /* 0=premptable, <0=BUG; will also serve as bh-counter */ | 32 | int preempt_count; /* 0=premptable, <0=BUG; will also serve as bh-counter */ |
33 | struct restart_block restart_block; | 33 | struct restart_block restart_block; |
34 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING | ||
35 | __u64 ac_stamp; | ||
36 | __u64 ac_leave; | ||
37 | __u64 ac_stime; | ||
38 | __u64 ac_utime; | ||
39 | #endif | ||
34 | }; | 40 | }; |
35 | 41 | ||
36 | #define THREAD_SIZE KERNEL_STACK_SIZE | 42 | #define THREAD_SIZE KERNEL_STACK_SIZE |
@@ -62,9 +68,17 @@ struct thread_info { | |||
62 | #define task_stack_page(tsk) ((void *)(tsk)) | 68 | #define task_stack_page(tsk) ((void *)(tsk)) |
63 | 69 | ||
64 | #define __HAVE_THREAD_FUNCTIONS | 70 | #define __HAVE_THREAD_FUNCTIONS |
71 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING | ||
72 | #define setup_thread_stack(p, org) \ | ||
73 | *task_thread_info(p) = *task_thread_info(org); \ | ||
74 | task_thread_info(p)->ac_stime = 0; \ | ||
75 | task_thread_info(p)->ac_utime = 0; \ | ||
76 | task_thread_info(p)->task = (p); | ||
77 | #else | ||
65 | #define setup_thread_stack(p, org) \ | 78 | #define setup_thread_stack(p, org) \ |
66 | *task_thread_info(p) = *task_thread_info(org); \ | 79 | *task_thread_info(p) = *task_thread_info(org); \ |
67 | task_thread_info(p)->task = (p); | 80 | task_thread_info(p)->task = (p); |
81 | #endif | ||
68 | #define end_of_stack(p) (unsigned long *)((void *)(p) + IA64_RBS_OFFSET) | 82 | #define end_of_stack(p) (unsigned long *)((void *)(p) + IA64_RBS_OFFSET) |
69 | 83 | ||
70 | #define __HAVE_ARCH_TASK_STRUCT_ALLOCATOR | 84 | #define __HAVE_ARCH_TASK_STRUCT_ALLOCATOR |
diff --git a/include/asm-ia64/tlb.h b/include/asm-ia64/tlb.h index 26edcb750f9f..20d8a39680c2 100644 --- a/include/asm-ia64/tlb.h +++ b/include/asm-ia64/tlb.h | |||
@@ -64,6 +64,32 @@ struct mmu_gather { | |||
64 | struct page *pages[FREE_PTE_NR]; | 64 | struct page *pages[FREE_PTE_NR]; |
65 | }; | 65 | }; |
66 | 66 | ||
67 | struct ia64_tr_entry { | ||
68 | u64 ifa; | ||
69 | u64 itir; | ||
70 | u64 pte; | ||
71 | u64 rr; | ||
72 | }; /*Record for tr entry!*/ | ||
73 | |||
74 | extern int ia64_itr_entry(u64 target_mask, u64 va, u64 pte, u64 log_size); | ||
75 | extern void ia64_ptr_entry(u64 target_mask, int slot); | ||
76 | |||
77 | extern struct ia64_tr_entry __per_cpu_idtrs[NR_CPUS][2][IA64_TR_ALLOC_MAX]; | ||
78 | |||
79 | /* | ||
80 | region register macros | ||
81 | */ | ||
82 | #define RR_TO_VE(val) (((val) >> 0) & 0x0000000000000001) | ||
83 | #define RR_VE(val) (((val) & 0x0000000000000001) << 0) | ||
84 | #define RR_VE_MASK 0x0000000000000001L | ||
85 | #define RR_VE_SHIFT 0 | ||
86 | #define RR_TO_PS(val) (((val) >> 2) & 0x000000000000003f) | ||
87 | #define RR_PS(val) (((val) & 0x000000000000003f) << 2) | ||
88 | #define RR_PS_MASK 0x00000000000000fcL | ||
89 | #define RR_PS_SHIFT 2 | ||
90 | #define RR_RID_MASK 0x00000000ffffff00L | ||
91 | #define RR_TO_RID(val) ((val >> 8) & 0xffffff) | ||
92 | |||
67 | /* Users of the generic TLB shootdown code must declare this storage space. */ | 93 | /* Users of the generic TLB shootdown code must declare this storage space. */ |
68 | DECLARE_PER_CPU(struct mmu_gather, mmu_gathers); | 94 | DECLARE_PER_CPU(struct mmu_gather, mmu_gathers); |
69 | 95 | ||
diff --git a/include/asm-mips/cacheflush.h b/include/asm-mips/cacheflush.h index 01e7eadc97e2..d5c0f2fda51b 100644 --- a/include/asm-mips/cacheflush.h +++ b/include/asm-mips/cacheflush.h | |||
@@ -63,8 +63,22 @@ static inline void flush_icache_page(struct vm_area_struct *vma, | |||
63 | } | 63 | } |
64 | 64 | ||
65 | extern void (*flush_icache_range)(unsigned long start, unsigned long end); | 65 | extern void (*flush_icache_range)(unsigned long start, unsigned long end); |
66 | #define flush_cache_vmap(start, end) flush_cache_all() | 66 | |
67 | #define flush_cache_vunmap(start, end) flush_cache_all() | 67 | extern void (*__flush_cache_vmap)(void); |
68 | |||
69 | static inline void flush_cache_vmap(unsigned long start, unsigned long end) | ||
70 | { | ||
71 | if (cpu_has_dc_aliases) | ||
72 | __flush_cache_vmap(); | ||
73 | } | ||
74 | |||
75 | extern void (*__flush_cache_vunmap)(void); | ||
76 | |||
77 | static inline void flush_cache_vunmap(unsigned long start, unsigned long end) | ||
78 | { | ||
79 | if (cpu_has_dc_aliases) | ||
80 | __flush_cache_vunmap(); | ||
81 | } | ||
68 | 82 | ||
69 | extern void copy_to_user_page(struct vm_area_struct *vma, | 83 | extern void copy_to_user_page(struct vm_area_struct *vma, |
70 | struct page *page, unsigned long vaddr, void *dst, const void *src, | 84 | struct page *page, unsigned long vaddr, void *dst, const void *src, |
diff --git a/include/asm-mips/mach-au1x00/au1xxx_ide.h b/include/asm-mips/mach-au1x00/au1xxx_ide.h index e4fe26c160ba..89655c0cdcd6 100644 --- a/include/asm-mips/mach-au1x00/au1xxx_ide.h +++ b/include/asm-mips/mach-au1x00/au1xxx_ide.h | |||
@@ -122,24 +122,6 @@ static const struct drive_list_entry dma_black_list [] = { | |||
122 | }; | 122 | }; |
123 | #endif | 123 | #endif |
124 | 124 | ||
125 | /* function prototyping */ | ||
126 | u8 auide_inb(unsigned long port); | ||
127 | u16 auide_inw(unsigned long port); | ||
128 | u32 auide_inl(unsigned long port); | ||
129 | void auide_insw(unsigned long port, void *addr, u32 count); | ||
130 | void auide_insl(unsigned long port, void *addr, u32 count); | ||
131 | void auide_outb(u8 addr, unsigned long port); | ||
132 | void auide_outbsync(ide_drive_t *drive, u8 addr, unsigned long port); | ||
133 | void auide_outw(u16 addr, unsigned long port); | ||
134 | void auide_outl(u32 addr, unsigned long port); | ||
135 | void auide_outsw(unsigned long port, void *addr, u32 count); | ||
136 | void auide_outsl(unsigned long port, void *addr, u32 count); | ||
137 | static void auide_tune_drive(ide_drive_t *drive, byte pio); | ||
138 | static int auide_tune_chipset(ide_drive_t *drive, u8 speed); | ||
139 | static int auide_ddma_init( _auide_hwif *auide ); | ||
140 | static void auide_setup_ports(hw_regs_t *hw, _auide_hwif *ahwif); | ||
141 | int __init auide_probe(void); | ||
142 | |||
143 | /******************************************************************************* | 125 | /******************************************************************************* |
144 | * PIO Mode timing calculation : * | 126 | * PIO Mode timing calculation : * |
145 | * * | 127 | * * |
diff --git a/include/asm-mips/mach-db1x00/db1200.h b/include/asm-mips/mach-db1x00/db1200.h index a6bdac61ab49..d2e28e64932e 100644 --- a/include/asm-mips/mach-db1x00/db1200.h +++ b/include/asm-mips/mach-db1x00/db1200.h | |||
@@ -173,8 +173,8 @@ static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR; | |||
173 | #define AU1XXX_SMC91111_IRQ DB1200_ETH_INT | 173 | #define AU1XXX_SMC91111_IRQ DB1200_ETH_INT |
174 | 174 | ||
175 | #define AU1XXX_ATA_PHYS_ADDR (0x18800000) | 175 | #define AU1XXX_ATA_PHYS_ADDR (0x18800000) |
176 | #define AU1XXX_ATA_PHYS_LEN (0x100) | 176 | #define AU1XXX_ATA_REG_OFFSET (5) |
177 | #define AU1XXX_ATA_REG_OFFSET (5) | 177 | #define AU1XXX_ATA_PHYS_LEN (16 << AU1XXX_ATA_REG_OFFSET) |
178 | #define AU1XXX_ATA_INT DB1200_IDE_INT | 178 | #define AU1XXX_ATA_INT DB1200_IDE_INT |
179 | #define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1; | 179 | #define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1; |
180 | #define AU1XXX_ATA_RQSIZE 128 | 180 | #define AU1XXX_ATA_RQSIZE 128 |
diff --git a/include/asm-mips/mach-pb1x00/pb1200.h b/include/asm-mips/mach-pb1x00/pb1200.h index ed5fd7390678..edaa489b58f1 100644 --- a/include/asm-mips/mach-pb1x00/pb1200.h +++ b/include/asm-mips/mach-pb1x00/pb1200.h | |||
@@ -186,8 +186,8 @@ static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR; | |||
186 | #define AU1XXX_SMC91111_IRQ PB1200_ETH_INT | 186 | #define AU1XXX_SMC91111_IRQ PB1200_ETH_INT |
187 | 187 | ||
188 | #define AU1XXX_ATA_PHYS_ADDR (0x0C800000) | 188 | #define AU1XXX_ATA_PHYS_ADDR (0x0C800000) |
189 | #define AU1XXX_ATA_PHYS_LEN (0x100) | 189 | #define AU1XXX_ATA_REG_OFFSET (5) |
190 | #define AU1XXX_ATA_REG_OFFSET (5) | 190 | #define AU1XXX_ATA_PHYS_LEN (16 << AU1XXX_ATA_REG_OFFSET) |
191 | #define AU1XXX_ATA_INT PB1200_IDE_INT | 191 | #define AU1XXX_ATA_INT PB1200_IDE_INT |
192 | #define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1; | 192 | #define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1; |
193 | #define AU1XXX_ATA_RQSIZE 128 | 193 | #define AU1XXX_ATA_RQSIZE 128 |
@@ -245,7 +245,7 @@ enum external_pb1200_ints { | |||
245 | PB1200_SD1_INSERT_INT, | 245 | PB1200_SD1_INSERT_INT, |
246 | PB1200_SD1_EJECT_INT, | 246 | PB1200_SD1_EJECT_INT, |
247 | 247 | ||
248 | PB1200_INT_END (PB1200_INT_BEGIN + 15) | 248 | PB1200_INT_END = PB1200_INT_BEGIN + 15 |
249 | }; | 249 | }; |
250 | 250 | ||
251 | /* For drivers/pcmcia/au1000_db1x00.c */ | 251 | /* For drivers/pcmcia/au1000_db1x00.c */ |
diff --git a/include/asm-um/tlb.h b/include/asm-um/tlb.h index 39fc475df6c9..5240fa1c5e08 100644 --- a/include/asm-um/tlb.h +++ b/include/asm-um/tlb.h | |||
@@ -1,6 +1,7 @@ | |||
1 | #ifndef __UM_TLB_H | 1 | #ifndef __UM_TLB_H |
2 | #define __UM_TLB_H | 2 | #define __UM_TLB_H |
3 | 3 | ||
4 | #include <linux/pagemap.h> | ||
4 | #include <linux/swap.h> | 5 | #include <linux/swap.h> |
5 | #include <asm/percpu.h> | 6 | #include <asm/percpu.h> |
6 | #include <asm/pgalloc.h> | 7 | #include <asm/pgalloc.h> |
diff --git a/include/asm-x86/irqflags.h b/include/asm-x86/irqflags.h index 92021c1ffa3a..0e2292483b35 100644 --- a/include/asm-x86/irqflags.h +++ b/include/asm-x86/irqflags.h | |||
@@ -70,6 +70,26 @@ static inline void raw_local_irq_restore(unsigned long flags) | |||
70 | native_restore_fl(flags); | 70 | native_restore_fl(flags); |
71 | } | 71 | } |
72 | 72 | ||
73 | #ifdef CONFIG_X86_VSMP | ||
74 | |||
75 | /* | ||
76 | * Interrupt control for the VSMP architecture: | ||
77 | */ | ||
78 | |||
79 | static inline void raw_local_irq_disable(void) | ||
80 | { | ||
81 | unsigned long flags = __raw_local_save_flags(); | ||
82 | raw_local_irq_restore((flags & ~X86_EFLAGS_IF) | X86_EFLAGS_AC); | ||
83 | } | ||
84 | |||
85 | static inline void raw_local_irq_enable(void) | ||
86 | { | ||
87 | unsigned long flags = __raw_local_save_flags(); | ||
88 | raw_local_irq_restore((flags | X86_EFLAGS_IF) & (~X86_EFLAGS_AC)); | ||
89 | } | ||
90 | |||
91 | #else | ||
92 | |||
73 | static inline void raw_local_irq_disable(void) | 93 | static inline void raw_local_irq_disable(void) |
74 | { | 94 | { |
75 | native_irq_disable(); | 95 | native_irq_disable(); |
@@ -80,6 +100,8 @@ static inline void raw_local_irq_enable(void) | |||
80 | native_irq_enable(); | 100 | native_irq_enable(); |
81 | } | 101 | } |
82 | 102 | ||
103 | #endif | ||
104 | |||
83 | /* | 105 | /* |
84 | * Used in the idle loop; sti takes one instruction cycle | 106 | * Used in the idle loop; sti takes one instruction cycle |
85 | * to complete: | 107 | * to complete: |
@@ -137,10 +159,17 @@ static inline unsigned long __raw_local_irq_save(void) | |||
137 | #define raw_local_irq_save(flags) \ | 159 | #define raw_local_irq_save(flags) \ |
138 | do { (flags) = __raw_local_irq_save(); } while (0) | 160 | do { (flags) = __raw_local_irq_save(); } while (0) |
139 | 161 | ||
162 | #ifdef CONFIG_X86_VSMP | ||
163 | static inline int raw_irqs_disabled_flags(unsigned long flags) | ||
164 | { | ||
165 | return !(flags & X86_EFLAGS_IF) || (flags & X86_EFLAGS_AC); | ||
166 | } | ||
167 | #else | ||
140 | static inline int raw_irqs_disabled_flags(unsigned long flags) | 168 | static inline int raw_irqs_disabled_flags(unsigned long flags) |
141 | { | 169 | { |
142 | return !(flags & X86_EFLAGS_IF); | 170 | return !(flags & X86_EFLAGS_IF); |
143 | } | 171 | } |
172 | #endif | ||
144 | 173 | ||
145 | static inline int raw_irqs_disabled(void) | 174 | static inline int raw_irqs_disabled(void) |
146 | { | 175 | { |
diff --git a/include/asm-x86/linkage.h b/include/asm-x86/linkage.h index 31739c7d66a9..c048353f4b85 100644 --- a/include/asm-x86/linkage.h +++ b/include/asm-x86/linkage.h | |||
@@ -8,12 +8,45 @@ | |||
8 | 8 | ||
9 | #ifdef CONFIG_X86_32 | 9 | #ifdef CONFIG_X86_32 |
10 | #define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0))) | 10 | #define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0))) |
11 | #define prevent_tail_call(ret) __asm__ ("" : "=r" (ret) : "0" (ret)) | ||
12 | /* | 11 | /* |
13 | * For 32-bit UML - mark functions implemented in assembly that use | 12 | * For 32-bit UML - mark functions implemented in assembly that use |
14 | * regparm input parameters: | 13 | * regparm input parameters: |
15 | */ | 14 | */ |
16 | #define asmregparm __attribute__((regparm(3))) | 15 | #define asmregparm __attribute__((regparm(3))) |
16 | |||
17 | /* | ||
18 | * Make sure the compiler doesn't do anything stupid with the | ||
19 | * arguments on the stack - they are owned by the *caller*, not | ||
20 | * the callee. This just fools gcc into not spilling into them, | ||
21 | * and keeps it from doing tailcall recursion and/or using the | ||
22 | * stack slots for temporaries, since they are live and "used" | ||
23 | * all the way to the end of the function. | ||
24 | * | ||
25 | * NOTE! On x86-64, all the arguments are in registers, so this | ||
26 | * only matters on a 32-bit kernel. | ||
27 | */ | ||
28 | #define asmlinkage_protect(n, ret, args...) \ | ||
29 | __asmlinkage_protect##n(ret, ##args) | ||
30 | #define __asmlinkage_protect_n(ret, args...) \ | ||
31 | __asm__ __volatile__ ("" : "=r" (ret) : "0" (ret), ##args) | ||
32 | #define __asmlinkage_protect0(ret) \ | ||
33 | __asmlinkage_protect_n(ret) | ||
34 | #define __asmlinkage_protect1(ret, arg1) \ | ||
35 | __asmlinkage_protect_n(ret, "g" (arg1)) | ||
36 | #define __asmlinkage_protect2(ret, arg1, arg2) \ | ||
37 | __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2)) | ||
38 | #define __asmlinkage_protect3(ret, arg1, arg2, arg3) \ | ||
39 | __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2), "g" (arg3)) | ||
40 | #define __asmlinkage_protect4(ret, arg1, arg2, arg3, arg4) \ | ||
41 | __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2), "g" (arg3), \ | ||
42 | "g" (arg4)) | ||
43 | #define __asmlinkage_protect5(ret, arg1, arg2, arg3, arg4, arg5) \ | ||
44 | __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2), "g" (arg3), \ | ||
45 | "g" (arg4), "g" (arg5)) | ||
46 | #define __asmlinkage_protect6(ret, arg1, arg2, arg3, arg4, arg5, arg6) \ | ||
47 | __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2), "g" (arg3), \ | ||
48 | "g" (arg4), "g" (arg5), "g" (arg6)) | ||
49 | |||
17 | #endif | 50 | #endif |
18 | 51 | ||
19 | #ifdef CONFIG_X86_ALIGNMENT_16 | 52 | #ifdef CONFIG_X86_ALIGNMENT_16 |
diff --git a/include/asm-x86/nops.h b/include/asm-x86/nops.h index e3b2bce0aff8..b3930ae539b3 100644 --- a/include/asm-x86/nops.h +++ b/include/asm-x86/nops.h | |||
@@ -73,16 +73,7 @@ | |||
73 | #define P6_NOP7 ".byte 0x0f,0x1f,0x80,0,0,0,0\n" | 73 | #define P6_NOP7 ".byte 0x0f,0x1f,0x80,0,0,0,0\n" |
74 | #define P6_NOP8 ".byte 0x0f,0x1f,0x84,0x00,0,0,0,0\n" | 74 | #define P6_NOP8 ".byte 0x0f,0x1f,0x84,0x00,0,0,0,0\n" |
75 | 75 | ||
76 | #if defined(CONFIG_MK8) | 76 | #if defined(CONFIG_MK7) |
77 | #define ASM_NOP1 K8_NOP1 | ||
78 | #define ASM_NOP2 K8_NOP2 | ||
79 | #define ASM_NOP3 K8_NOP3 | ||
80 | #define ASM_NOP4 K8_NOP4 | ||
81 | #define ASM_NOP5 K8_NOP5 | ||
82 | #define ASM_NOP6 K8_NOP6 | ||
83 | #define ASM_NOP7 K8_NOP7 | ||
84 | #define ASM_NOP8 K8_NOP8 | ||
85 | #elif defined(CONFIG_MK7) | ||
86 | #define ASM_NOP1 K7_NOP1 | 77 | #define ASM_NOP1 K7_NOP1 |
87 | #define ASM_NOP2 K7_NOP2 | 78 | #define ASM_NOP2 K7_NOP2 |
88 | #define ASM_NOP3 K7_NOP3 | 79 | #define ASM_NOP3 K7_NOP3 |
@@ -100,6 +91,15 @@ | |||
100 | #define ASM_NOP6 P6_NOP6 | 91 | #define ASM_NOP6 P6_NOP6 |
101 | #define ASM_NOP7 P6_NOP7 | 92 | #define ASM_NOP7 P6_NOP7 |
102 | #define ASM_NOP8 P6_NOP8 | 93 | #define ASM_NOP8 P6_NOP8 |
94 | #elif defined(CONFIG_X86_64) | ||
95 | #define ASM_NOP1 K8_NOP1 | ||
96 | #define ASM_NOP2 K8_NOP2 | ||
97 | #define ASM_NOP3 K8_NOP3 | ||
98 | #define ASM_NOP4 K8_NOP4 | ||
99 | #define ASM_NOP5 K8_NOP5 | ||
100 | #define ASM_NOP6 K8_NOP6 | ||
101 | #define ASM_NOP7 K8_NOP7 | ||
102 | #define ASM_NOP8 K8_NOP8 | ||
103 | #else | 103 | #else |
104 | #define ASM_NOP1 GENERIC_NOP1 | 104 | #define ASM_NOP1 GENERIC_NOP1 |
105 | #define ASM_NOP2 GENERIC_NOP2 | 105 | #define ASM_NOP2 GENERIC_NOP2 |
diff --git a/include/linux/Kbuild b/include/linux/Kbuild index 9cdd12a9e843..cedbbd806bf6 100644 --- a/include/linux/Kbuild +++ b/include/linux/Kbuild | |||
@@ -86,6 +86,7 @@ header-y += if_plip.h | |||
86 | header-y += if_ppp.h | 86 | header-y += if_ppp.h |
87 | header-y += if_slip.h | 87 | header-y += if_slip.h |
88 | header-y += if_strip.h | 88 | header-y += if_strip.h |
89 | header-y += if_tun.h | ||
89 | header-y += if_tunnel.h | 90 | header-y += if_tunnel.h |
90 | header-y += in6.h | 91 | header-y += in6.h |
91 | header-y += in_route.h | 92 | header-y += in_route.h |
@@ -229,7 +230,6 @@ unifdef-y += if_link.h | |||
229 | unifdef-y += if_pppol2tp.h | 230 | unifdef-y += if_pppol2tp.h |
230 | unifdef-y += if_pppox.h | 231 | unifdef-y += if_pppox.h |
231 | unifdef-y += if_tr.h | 232 | unifdef-y += if_tr.h |
232 | unifdef-y += if_tun.h | ||
233 | unifdef-y += if_vlan.h | 233 | unifdef-y += if_vlan.h |
234 | unifdef-y += if_wanpipe.h | 234 | unifdef-y += if_wanpipe.h |
235 | unifdef-y += igmp.h | 235 | unifdef-y += igmp.h |
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index 028ba3b523b1..a6a6035a4e1e 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h | |||
@@ -256,6 +256,7 @@ struct cgroup_subsys { | |||
256 | void (*bind)(struct cgroup_subsys *ss, struct cgroup *root); | 256 | void (*bind)(struct cgroup_subsys *ss, struct cgroup *root); |
257 | int subsys_id; | 257 | int subsys_id; |
258 | int active; | 258 | int active; |
259 | int disabled; | ||
259 | int early_init; | 260 | int early_init; |
260 | #define MAX_CGROUP_TYPE_NAMELEN 32 | 261 | #define MAX_CGROUP_TYPE_NAMELEN 32 |
261 | const char *name; | 262 | const char *name; |
diff --git a/include/linux/hpet.h b/include/linux/hpet.h index 9cd94bfd07e5..2dc29ce6c8e4 100644 --- a/include/linux/hpet.h +++ b/include/linux/hpet.h | |||
@@ -64,7 +64,7 @@ struct hpet { | |||
64 | */ | 64 | */ |
65 | 65 | ||
66 | #define Tn_INT_ROUTE_CAP_MASK (0xffffffff00000000ULL) | 66 | #define Tn_INT_ROUTE_CAP_MASK (0xffffffff00000000ULL) |
67 | #define Tn_INT_ROUTE_CAP_SHIFT (32UL) | 67 | #define Tn_INI_ROUTE_CAP_SHIFT (32UL) |
68 | #define Tn_FSB_INT_DELCAP_MASK (0x8000UL) | 68 | #define Tn_FSB_INT_DELCAP_MASK (0x8000UL) |
69 | #define Tn_FSB_INT_DELCAP_SHIFT (15) | 69 | #define Tn_FSB_INT_DELCAP_SHIFT (15) |
70 | #define Tn_FSB_EN_CNF_MASK (0x4000UL) | 70 | #define Tn_FSB_EN_CNF_MASK (0x4000UL) |
diff --git a/include/linux/if_tun.h b/include/linux/if_tun.h index 72f1c5f47be3..8c71fe2fb1f5 100644 --- a/include/linux/if_tun.h +++ b/include/linux/if_tun.h | |||
@@ -18,47 +18,8 @@ | |||
18 | #ifndef __IF_TUN_H | 18 | #ifndef __IF_TUN_H |
19 | #define __IF_TUN_H | 19 | #define __IF_TUN_H |
20 | 20 | ||
21 | /* Uncomment to enable debugging */ | ||
22 | /* #define TUN_DEBUG 1 */ | ||
23 | |||
24 | #include <linux/types.h> | 21 | #include <linux/types.h> |
25 | 22 | ||
26 | #ifdef __KERNEL__ | ||
27 | |||
28 | #ifdef TUN_DEBUG | ||
29 | #define DBG if(tun->debug)printk | ||
30 | #define DBG1 if(debug==2)printk | ||
31 | #else | ||
32 | #define DBG( a... ) | ||
33 | #define DBG1( a... ) | ||
34 | #endif | ||
35 | |||
36 | struct tun_struct { | ||
37 | struct list_head list; | ||
38 | unsigned long flags; | ||
39 | int attached; | ||
40 | uid_t owner; | ||
41 | gid_t group; | ||
42 | |||
43 | wait_queue_head_t read_wait; | ||
44 | struct sk_buff_head readq; | ||
45 | |||
46 | struct net_device *dev; | ||
47 | |||
48 | struct fasync_struct *fasync; | ||
49 | |||
50 | unsigned long if_flags; | ||
51 | u8 dev_addr[ETH_ALEN]; | ||
52 | u32 chr_filter[2]; | ||
53 | u32 net_filter[2]; | ||
54 | |||
55 | #ifdef TUN_DEBUG | ||
56 | int debug; | ||
57 | #endif | ||
58 | }; | ||
59 | |||
60 | #endif /* __KERNEL__ */ | ||
61 | |||
62 | /* Read queue size */ | 23 | /* Read queue size */ |
63 | #define TUN_READQ_SIZE 500 | 24 | #define TUN_READQ_SIZE 500 |
64 | 25 | ||
diff --git a/include/linux/iocontext.h b/include/linux/iocontext.h index cac4b364cd40..2b7a1187cb29 100644 --- a/include/linux/iocontext.h +++ b/include/linux/iocontext.h | |||
@@ -91,8 +91,10 @@ static inline struct io_context *ioc_task_link(struct io_context *ioc) | |||
91 | * if ref count is zero, don't allow sharing (ioc is going away, it's | 91 | * if ref count is zero, don't allow sharing (ioc is going away, it's |
92 | * a race). | 92 | * a race). |
93 | */ | 93 | */ |
94 | if (ioc && atomic_inc_not_zero(&ioc->refcount)) | 94 | if (ioc && atomic_inc_not_zero(&ioc->refcount)) { |
95 | atomic_inc(&ioc->nr_tasks); | ||
95 | return ioc; | 96 | return ioc; |
97 | } | ||
96 | 98 | ||
97 | return NULL; | 99 | return NULL; |
98 | } | 100 | } |
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h index 4aaefc349a4b..134c8e5cf07c 100644 --- a/include/linux/ipv6.h +++ b/include/linux/ipv6.h | |||
@@ -53,7 +53,7 @@ struct ipv6_opt_hdr { | |||
53 | /* | 53 | /* |
54 | * TLV encoded option data follows. | 54 | * TLV encoded option data follows. |
55 | */ | 55 | */ |
56 | }; | 56 | } __attribute__ ((packed)); /* required for some archs */ |
57 | 57 | ||
58 | #define ipv6_destopt_hdr ipv6_opt_hdr | 58 | #define ipv6_destopt_hdr ipv6_opt_hdr |
59 | #define ipv6_hopopt_hdr ipv6_opt_hdr | 59 | #define ipv6_hopopt_hdr ipv6_opt_hdr |
diff --git a/include/linux/libata.h b/include/linux/libata.h index b064bfeb69ee..37ee881c42ac 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -350,7 +350,8 @@ enum { | |||
350 | ATAPI_READ = 0, /* READs */ | 350 | ATAPI_READ = 0, /* READs */ |
351 | ATAPI_WRITE = 1, /* WRITEs */ | 351 | ATAPI_WRITE = 1, /* WRITEs */ |
352 | ATAPI_READ_CD = 2, /* READ CD [MSF] */ | 352 | ATAPI_READ_CD = 2, /* READ CD [MSF] */ |
353 | ATAPI_MISC = 3, /* the rest */ | 353 | ATAPI_PASS_THRU = 3, /* SAT pass-thru */ |
354 | ATAPI_MISC = 4, /* the rest */ | ||
354 | }; | 355 | }; |
355 | 356 | ||
356 | enum ata_xfer_mask { | 357 | enum ata_xfer_mask { |
@@ -849,6 +850,7 @@ extern unsigned int ata_dev_try_classify(struct ata_device *dev, int present, | |||
849 | */ | 850 | */ |
850 | extern void ata_tf_load(struct ata_port *ap, const struct ata_taskfile *tf); | 851 | extern void ata_tf_load(struct ata_port *ap, const struct ata_taskfile *tf); |
851 | extern void ata_tf_read(struct ata_port *ap, struct ata_taskfile *tf); | 852 | extern void ata_tf_read(struct ata_port *ap, struct ata_taskfile *tf); |
853 | extern int atapi_cmd_type(u8 opcode); | ||
852 | extern void ata_tf_to_fis(const struct ata_taskfile *tf, | 854 | extern void ata_tf_to_fis(const struct ata_taskfile *tf, |
853 | u8 pmp, int is_cmd, u8 *fis); | 855 | u8 pmp, int is_cmd, u8 *fis); |
854 | extern void ata_tf_from_fis(const u8 *fis, struct ata_taskfile *tf); | 856 | extern void ata_tf_from_fis(const u8 *fis, struct ata_taskfile *tf); |
@@ -1379,27 +1381,6 @@ static inline int ata_try_flush_cache(const struct ata_device *dev) | |||
1379 | ata_id_has_flush_ext(dev->id); | 1381 | ata_id_has_flush_ext(dev->id); |
1380 | } | 1382 | } |
1381 | 1383 | ||
1382 | static inline int atapi_cmd_type(u8 opcode) | ||
1383 | { | ||
1384 | switch (opcode) { | ||
1385 | case GPCMD_READ_10: | ||
1386 | case GPCMD_READ_12: | ||
1387 | return ATAPI_READ; | ||
1388 | |||
1389 | case GPCMD_WRITE_10: | ||
1390 | case GPCMD_WRITE_12: | ||
1391 | case GPCMD_WRITE_AND_VERIFY_10: | ||
1392 | return ATAPI_WRITE; | ||
1393 | |||
1394 | case GPCMD_READ_CD: | ||
1395 | case GPCMD_READ_CD_MSF: | ||
1396 | return ATAPI_READ_CD; | ||
1397 | |||
1398 | default: | ||
1399 | return ATAPI_MISC; | ||
1400 | } | ||
1401 | } | ||
1402 | |||
1403 | static inline unsigned int ac_err_mask(u8 status) | 1384 | static inline unsigned int ac_err_mask(u8 status) |
1404 | { | 1385 | { |
1405 | if (status & (ATA_BUSY | ATA_DRQ)) | 1386 | if (status & (ATA_BUSY | ATA_DRQ)) |
diff --git a/include/linux/linkage.h b/include/linux/linkage.h index 0592936344c4..2119610b24f8 100644 --- a/include/linux/linkage.h +++ b/include/linux/linkage.h | |||
@@ -17,8 +17,24 @@ | |||
17 | # define asmregparm | 17 | # define asmregparm |
18 | #endif | 18 | #endif |
19 | 19 | ||
20 | #ifndef prevent_tail_call | 20 | /* |
21 | # define prevent_tail_call(ret) do { } while (0) | 21 | * This is used by architectures to keep arguments on the stack |
22 | * untouched by the compiler by keeping them live until the end. | ||
23 | * The argument stack may be owned by the assembly-language | ||
24 | * caller, not the callee, and gcc doesn't always understand | ||
25 | * that. | ||
26 | * | ||
27 | * We have the return value, and a maximum of six arguments. | ||
28 | * | ||
29 | * This should always be followed by a "return ret" for the | ||
30 | * protection to work (ie no more work that the compiler might | ||
31 | * end up needing stack temporaries for). | ||
32 | */ | ||
33 | /* Assembly files may be compiled with -traditional .. */ | ||
34 | #ifndef __ASSEMBLY__ | ||
35 | #ifndef asmlinkage_protect | ||
36 | # define asmlinkage_protect(n, ret, args...) do { } while (0) | ||
37 | #endif | ||
22 | #endif | 38 | #endif |
23 | 39 | ||
24 | #ifndef __ALIGN | 40 | #ifndef __ALIGN |
diff --git a/include/linux/mbcache.h b/include/linux/mbcache.h index 99e044b4efc6..a09b84e4fdb4 100644 --- a/include/linux/mbcache.h +++ b/include/linux/mbcache.h | |||
@@ -34,7 +34,7 @@ void mb_cache_destroy(struct mb_cache *); | |||
34 | 34 | ||
35 | /* Functions on cache entries */ | 35 | /* Functions on cache entries */ |
36 | 36 | ||
37 | struct mb_cache_entry *mb_cache_entry_alloc(struct mb_cache *); | 37 | struct mb_cache_entry *mb_cache_entry_alloc(struct mb_cache *, gfp_t); |
38 | int mb_cache_entry_insert(struct mb_cache_entry *, struct block_device *, | 38 | int mb_cache_entry_insert(struct mb_cache_entry *, struct block_device *, |
39 | sector_t, unsigned int[]); | 39 | sector_t, unsigned int[]); |
40 | void mb_cache_entry_release(struct mb_cache_entry *); | 40 | void mb_cache_entry_release(struct mb_cache_entry *); |
diff --git a/include/linux/pnp.h b/include/linux/pnp.h index 29dd55838e84..b2f05c230f4b 100644 --- a/include/linux/pnp.h +++ b/include/linux/pnp.h | |||
@@ -175,7 +175,7 @@ static inline void pnp_set_card_drvdata(struct pnp_card_link *pcard, void *data) | |||
175 | struct pnp_dev { | 175 | struct pnp_dev { |
176 | struct device dev; /* Driver Model device interface */ | 176 | struct device dev; /* Driver Model device interface */ |
177 | u64 dma_mask; | 177 | u64 dma_mask; |
178 | unsigned char number; /* used as an index, must be unique */ | 178 | unsigned int number; /* used as an index, must be unique */ |
179 | int status; | 179 | int status; |
180 | 180 | ||
181 | struct list_head global_list; /* node in global list of devices */ | 181 | struct list_head global_list; /* node in global list of devices */ |
diff --git a/include/linux/spinlock.h b/include/linux/spinlock.h index 576a5f77d3bd..1129ee0a7180 100644 --- a/include/linux/spinlock.h +++ b/include/linux/spinlock.h | |||
@@ -341,6 +341,9 @@ static inline void double_spin_unlock(spinlock_t *l1, spinlock_t *l2, | |||
341 | * atomic_dec_and_lock - lock on reaching reference count zero | 341 | * atomic_dec_and_lock - lock on reaching reference count zero |
342 | * @atomic: the atomic counter | 342 | * @atomic: the atomic counter |
343 | * @lock: the spinlock in question | 343 | * @lock: the spinlock in question |
344 | * | ||
345 | * Decrements @atomic by 1. If the result is 0, returns true and locks | ||
346 | * @lock. Returns false for all other cases. | ||
344 | */ | 347 | */ |
345 | extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock); | 348 | extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock); |
346 | #define atomic_dec_and_lock(atomic, lock) \ | 349 | #define atomic_dec_and_lock(atomic, lock) \ |
diff --git a/include/linux/ssb/ssb.h b/include/linux/ssb/ssb.h index 20add65215af..db53defde5ee 100644 --- a/include/linux/ssb/ssb.h +++ b/include/linux/ssb/ssb.h | |||
@@ -129,6 +129,10 @@ struct ssb_device { | |||
129 | const struct ssb_bus_ops *ops; | 129 | const struct ssb_bus_ops *ops; |
130 | 130 | ||
131 | struct device *dev; | 131 | struct device *dev; |
132 | /* Pointer to the device that has to be used for | ||
133 | * any DMA related operation. */ | ||
134 | struct device *dma_dev; | ||
135 | |||
132 | struct ssb_bus *bus; | 136 | struct ssb_bus *bus; |
133 | struct ssb_device_id id; | 137 | struct ssb_device_id id; |
134 | 138 | ||
diff --git a/include/linux/thermal.h b/include/linux/thermal.h index 818ca1cf0b6d..90c1c191ea69 100644 --- a/include/linux/thermal.h +++ b/include/linux/thermal.h | |||
@@ -50,7 +50,7 @@ struct thermal_cooling_device_ops { | |||
50 | }; | 50 | }; |
51 | 51 | ||
52 | #define THERMAL_TRIPS_NONE -1 | 52 | #define THERMAL_TRIPS_NONE -1 |
53 | #define THERMAL_MAX_TRIPS 10 | 53 | #define THERMAL_MAX_TRIPS 12 |
54 | #define THERMAL_NAME_LENGTH 20 | 54 | #define THERMAL_NAME_LENGTH 20 |
55 | struct thermal_cooling_device { | 55 | struct thermal_cooling_device { |
56 | int id; | 56 | int id; |
diff --git a/include/linux/virtio.h b/include/linux/virtio.h index 12c18ac1b973..e7d10845b3c1 100644 --- a/include/linux/virtio.h +++ b/include/linux/virtio.h | |||
@@ -41,6 +41,8 @@ struct virtqueue | |||
41 | * Returns NULL or the "data" token handed to add_buf. | 41 | * Returns NULL or the "data" token handed to add_buf. |
42 | * @disable_cb: disable callbacks | 42 | * @disable_cb: disable callbacks |
43 | * vq: the struct virtqueue we're talking about. | 43 | * vq: the struct virtqueue we're talking about. |
44 | * Note that this is not necessarily synchronous, hence unreliable and only | ||
45 | * useful as an optimization. | ||
44 | * @enable_cb: restart callbacks after disable_cb. | 46 | * @enable_cb: restart callbacks after disable_cb. |
45 | * vq: the struct virtqueue we're talking about. | 47 | * vq: the struct virtqueue we're talking about. |
46 | * This re-enables callbacks; it returns "false" if there are pending | 48 | * This re-enables callbacks; it returns "false" if there are pending |
@@ -48,7 +50,8 @@ struct virtqueue | |||
48 | * checking for more work, and enabling callbacks. | 50 | * checking for more work, and enabling callbacks. |
49 | * | 51 | * |
50 | * Locking rules are straightforward: the driver is responsible for | 52 | * Locking rules are straightforward: the driver is responsible for |
51 | * locking. No two operations may be invoked simultaneously. | 53 | * locking. No two operations may be invoked simultaneously, with the exception |
54 | * of @disable_cb. | ||
52 | * | 55 | * |
53 | * All operations can be called in any context. | 56 | * All operations can be called in any context. |
54 | */ | 57 | */ |
diff --git a/include/net/inet_ecn.h b/include/net/inet_ecn.h index ba33db053854..7040a782c656 100644 --- a/include/net/inet_ecn.h +++ b/include/net/inet_ecn.h | |||
@@ -47,7 +47,7 @@ static inline __u8 INET_ECN_encapsulate(__u8 outer, __u8 inner) | |||
47 | } while (0) | 47 | } while (0) |
48 | 48 | ||
49 | #define IP6_ECN_flow_xmit(sk, label) do { \ | 49 | #define IP6_ECN_flow_xmit(sk, label) do { \ |
50 | if (INET_ECN_is_capable(inet_sk(sk)->tos)) \ | 50 | if (INET_ECN_is_capable(inet6_sk(sk)->tclass)) \ |
51 | (label) |= htonl(INET_ECN_ECT_0 << 20); \ | 51 | (label) |= htonl(INET_ECN_ECT_0 << 20); \ |
52 | } while (0) | 52 | } while (0) |
53 | 53 | ||
diff --git a/include/net/sctp/command.h b/include/net/sctp/command.h index 10ae2da6f93b..35b1e83fb96a 100644 --- a/include/net/sctp/command.h +++ b/include/net/sctp/command.h | |||
@@ -104,6 +104,7 @@ typedef enum { | |||
104 | SCTP_CMD_ADAPTATION_IND, /* generate and send adaptation event */ | 104 | SCTP_CMD_ADAPTATION_IND, /* generate and send adaptation event */ |
105 | SCTP_CMD_ASSOC_SHKEY, /* generate the association shared keys */ | 105 | SCTP_CMD_ASSOC_SHKEY, /* generate the association shared keys */ |
106 | SCTP_CMD_T1_RETRAN, /* Mark for retransmission after T1 timeout */ | 106 | SCTP_CMD_T1_RETRAN, /* Mark for retransmission after T1 timeout */ |
107 | SCTP_CMD_UPDATE_INITTAG, /* Update peer inittag */ | ||
107 | SCTP_CMD_LAST | 108 | SCTP_CMD_LAST |
108 | } sctp_verb_t; | 109 | } sctp_verb_t; |
109 | 110 | ||
diff --git a/include/net/sctp/ulpevent.h b/include/net/sctp/ulpevent.h index 9bcfc12275e8..7ea12e8e6676 100644 --- a/include/net/sctp/ulpevent.h +++ b/include/net/sctp/ulpevent.h | |||
@@ -67,7 +67,7 @@ struct sctp_ulpevent { | |||
67 | }; | 67 | }; |
68 | 68 | ||
69 | /* Retrieve the skb this event sits inside of. */ | 69 | /* Retrieve the skb this event sits inside of. */ |
70 | static inline struct sk_buff *sctp_event2skb(struct sctp_ulpevent *ev) | 70 | static inline struct sk_buff *sctp_event2skb(const struct sctp_ulpevent *ev) |
71 | { | 71 | { |
72 | return container_of((void *)ev, struct sk_buff, cb); | 72 | return container_of((void *)ev, struct sk_buff, cb); |
73 | } | 73 | } |
diff --git a/include/net/tcp.h b/include/net/tcp.h index 7de4ea3a04d9..4fd3eb2f8ec2 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
@@ -752,6 +752,8 @@ static inline unsigned int tcp_packets_in_flight(const struct tcp_sock *tp) | |||
752 | return tp->packets_out - tcp_left_out(tp) + tp->retrans_out; | 752 | return tp->packets_out - tcp_left_out(tp) + tp->retrans_out; |
753 | } | 753 | } |
754 | 754 | ||
755 | extern int tcp_limit_reno_sacked(struct tcp_sock *tp); | ||
756 | |||
755 | /* If cwnd > ssthresh, we may raise ssthresh to be half-way to cwnd. | 757 | /* If cwnd > ssthresh, we may raise ssthresh to be half-way to cwnd. |
756 | * The exception is rate halving phase, when cwnd is decreasing towards | 758 | * The exception is rate halving phase, when cwnd is decreasing towards |
757 | * ssthresh. | 759 | * ssthresh. |