diff options
Diffstat (limited to 'include')
100 files changed, 652 insertions, 941 deletions
diff --git a/include/asm-alpha/cacheflush.h b/include/asm-alpha/cacheflush.h index 805640b41078..b686cc7fc44e 100644 --- a/include/asm-alpha/cacheflush.h +++ b/include/asm-alpha/cacheflush.h | |||
@@ -6,6 +6,7 @@ | |||
6 | /* Caches aren't brain-dead on the Alpha. */ | 6 | /* Caches aren't brain-dead on the Alpha. */ |
7 | #define flush_cache_all() do { } while (0) | 7 | #define flush_cache_all() do { } while (0) |
8 | #define flush_cache_mm(mm) do { } while (0) | 8 | #define flush_cache_mm(mm) do { } while (0) |
9 | #define flush_cache_dup_mm(mm) do { } while (0) | ||
9 | #define flush_cache_range(vma, start, end) do { } while (0) | 10 | #define flush_cache_range(vma, start, end) do { } while (0) |
10 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) | 11 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) |
11 | #define flush_dcache_page(page) do { } while (0) | 12 | #define flush_dcache_page(page) do { } while (0) |
diff --git a/include/asm-arm/arch-imx/imx-regs.h b/include/asm-arm/arch-imx/imx-regs.h index a6912b3d8671..e56a4e247d62 100644 --- a/include/asm-arm/arch-imx/imx-regs.h +++ b/include/asm-arm/arch-imx/imx-regs.h | |||
@@ -41,7 +41,13 @@ | |||
41 | 41 | ||
42 | /* PLL registers */ | 42 | /* PLL registers */ |
43 | #define CSCR __REG(IMX_PLL_BASE) /* Clock Source Control Register */ | 43 | #define CSCR __REG(IMX_PLL_BASE) /* Clock Source Control Register */ |
44 | #define CSCR_SYSTEM_SEL (1<<16) | 44 | #define CSCR_SPLL_RESTART (1<<22) |
45 | #define CSCR_MPLL_RESTART (1<<21) | ||
46 | #define CSCR_SYSTEM_SEL (1<<16) | ||
47 | #define CSCR_BCLK_DIV (0xf<<10) | ||
48 | #define CSCR_MPU_PRESC (1<<15) | ||
49 | #define CSCR_SPEN (1<<1) | ||
50 | #define CSCR_MPEN (1<<0) | ||
45 | 51 | ||
46 | #define MPCTL0 __REG(IMX_PLL_BASE + 0x4) /* MCU PLL Control Register 0 */ | 52 | #define MPCTL0 __REG(IMX_PLL_BASE + 0x4) /* MCU PLL Control Register 0 */ |
47 | #define MPCTL1 __REG(IMX_PLL_BASE + 0x8) /* MCU PLL and System Clock Register 1 */ | 53 | #define MPCTL1 __REG(IMX_PLL_BASE + 0x8) /* MCU PLL and System Clock Register 1 */ |
@@ -49,8 +55,6 @@ | |||
49 | #define SPCTL1 __REG(IMX_PLL_BASE + 0x10) /* System PLL Control Register 1 */ | 55 | #define SPCTL1 __REG(IMX_PLL_BASE + 0x10) /* System PLL Control Register 1 */ |
50 | #define PCDR __REG(IMX_PLL_BASE + 0x20) /* Peripheral Clock Divider Register */ | 56 | #define PCDR __REG(IMX_PLL_BASE + 0x20) /* Peripheral Clock Divider Register */ |
51 | 57 | ||
52 | #define CSCR_MPLL_RESTART (1<<21) | ||
53 | |||
54 | /* | 58 | /* |
55 | * GPIO Module and I/O Multiplexer | 59 | * GPIO Module and I/O Multiplexer |
56 | * x = 0..3 for reg_A, reg_B, reg_C, reg_D | 60 | * x = 0..3 for reg_A, reg_B, reg_C, reg_D |
diff --git a/include/asm-arm/arch-s3c2410/regs-udc.h b/include/asm-arm/arch-s3c2410/regs-udc.h index 487861d5b49a..3c8354619b60 100644 --- a/include/asm-arm/arch-s3c2410/regs-udc.h +++ b/include/asm-arm/arch-s3c2410/regs-udc.h | |||
@@ -11,8 +11,7 @@ | |||
11 | #ifndef __ASM_ARCH_REGS_UDC_H | 11 | #ifndef __ASM_ARCH_REGS_UDC_H |
12 | #define __ASM_ARCH_REGS_UDC_H | 12 | #define __ASM_ARCH_REGS_UDC_H |
13 | 13 | ||
14 | 14 | #define S3C2410_USBDREG(x) (x) | |
15 | #define S3C2410_USBDREG(x) ((x) + S3C24XX_VA_USBDEV) | ||
16 | 15 | ||
17 | #define S3C2410_UDC_FUNC_ADDR_REG S3C2410_USBDREG(0x0140) | 16 | #define S3C2410_UDC_FUNC_ADDR_REG S3C2410_USBDREG(0x0140) |
18 | #define S3C2410_UDC_PWR_REG S3C2410_USBDREG(0x0144) | 17 | #define S3C2410_UDC_PWR_REG S3C2410_USBDREG(0x0144) |
@@ -136,8 +135,8 @@ | |||
136 | #define S3C2410_UDC_OCSR2_ISO (1<<6) // R/W | 135 | #define S3C2410_UDC_OCSR2_ISO (1<<6) // R/W |
137 | #define S3C2410_UDC_OCSR2_DMAIEN (1<<5) // R/W | 136 | #define S3C2410_UDC_OCSR2_DMAIEN (1<<5) // R/W |
138 | 137 | ||
139 | #define S3C2410_UDC_SETIX(x) \ | 138 | #define S3C2410_UDC_SETIX(base,x) \ |
140 | __raw_writel(S3C2410_UDC_INDEX_ ## x, S3C2410_UDC_INDEX_REG); | 139 | writel(S3C2410_UDC_INDEX_ ## x, base+S3C2410_UDC_INDEX_REG); |
141 | 140 | ||
142 | 141 | ||
143 | #define S3C2410_UDC_EP0_CSR_OPKRDY (1<<0) | 142 | #define S3C2410_UDC_EP0_CSR_OPKRDY (1<<0) |
diff --git a/include/asm-arm/cacheflush.h b/include/asm-arm/cacheflush.h index f0845646aacb..378a3a2ce8d9 100644 --- a/include/asm-arm/cacheflush.h +++ b/include/asm-arm/cacheflush.h | |||
@@ -319,6 +319,8 @@ extern void flush_ptrace_access(struct vm_area_struct *vma, struct page *page, | |||
319 | unsigned long len, int write); | 319 | unsigned long len, int write); |
320 | #endif | 320 | #endif |
321 | 321 | ||
322 | #define flush_cache_dup_mm(mm) flush_cache_mm(mm) | ||
323 | |||
322 | /* | 324 | /* |
323 | * flush_cache_user_range is used when we want to ensure that the | 325 | * flush_cache_user_range is used when we want to ensure that the |
324 | * Harvard caches are synchronised for the user space address range. | 326 | * Harvard caches are synchronised for the user space address range. |
diff --git a/include/asm-arm/cpu-multi32.h b/include/asm-arm/cpu-multi32.h index 4679f63688e9..715e18a4add1 100644 --- a/include/asm-arm/cpu-multi32.h +++ b/include/asm-arm/cpu-multi32.h | |||
@@ -50,9 +50,10 @@ extern struct processor { | |||
50 | */ | 50 | */ |
51 | void (*switch_mm)(unsigned long pgd_phys, struct mm_struct *mm); | 51 | void (*switch_mm)(unsigned long pgd_phys, struct mm_struct *mm); |
52 | /* | 52 | /* |
53 | * Set a PTE | 53 | * Set a possibly extended PTE. Non-extended PTEs should |
54 | * ignore 'ext'. | ||
54 | */ | 55 | */ |
55 | void (*set_pte)(pte_t *ptep, pte_t pte); | 56 | void (*set_pte_ext)(pte_t *ptep, pte_t pte, unsigned int ext); |
56 | } processor; | 57 | } processor; |
57 | 58 | ||
58 | #define cpu_proc_init() processor._proc_init() | 59 | #define cpu_proc_init() processor._proc_init() |
@@ -60,5 +61,5 @@ extern struct processor { | |||
60 | #define cpu_reset(addr) processor.reset(addr) | 61 | #define cpu_reset(addr) processor.reset(addr) |
61 | #define cpu_do_idle() processor._do_idle() | 62 | #define cpu_do_idle() processor._do_idle() |
62 | #define cpu_dcache_clean_area(addr,sz) processor.dcache_clean_area(addr,sz) | 63 | #define cpu_dcache_clean_area(addr,sz) processor.dcache_clean_area(addr,sz) |
63 | #define cpu_set_pte(ptep, pte) processor.set_pte(ptep, pte) | 64 | #define cpu_set_pte_ext(ptep,pte,ext) processor.set_pte_ext(ptep,pte,ext) |
64 | #define cpu_do_switch_mm(pgd,mm) processor.switch_mm(pgd,mm) | 65 | #define cpu_do_switch_mm(pgd,mm) processor.switch_mm(pgd,mm) |
diff --git a/include/asm-arm/cpu-single.h b/include/asm-arm/cpu-single.h index 6723e67244fa..0b120ee36091 100644 --- a/include/asm-arm/cpu-single.h +++ b/include/asm-arm/cpu-single.h | |||
@@ -28,7 +28,7 @@ | |||
28 | #define cpu_do_idle __cpu_fn(CPU_NAME,_do_idle) | 28 | #define cpu_do_idle __cpu_fn(CPU_NAME,_do_idle) |
29 | #define cpu_dcache_clean_area __cpu_fn(CPU_NAME,_dcache_clean_area) | 29 | #define cpu_dcache_clean_area __cpu_fn(CPU_NAME,_dcache_clean_area) |
30 | #define cpu_do_switch_mm __cpu_fn(CPU_NAME,_switch_mm) | 30 | #define cpu_do_switch_mm __cpu_fn(CPU_NAME,_switch_mm) |
31 | #define cpu_set_pte __cpu_fn(CPU_NAME,_set_pte) | 31 | #define cpu_set_pte_ext __cpu_fn(CPU_NAME,_set_pte_ext) |
32 | 32 | ||
33 | #include <asm/page.h> | 33 | #include <asm/page.h> |
34 | 34 | ||
@@ -40,5 +40,5 @@ extern void cpu_proc_fin(void); | |||
40 | extern int cpu_do_idle(void); | 40 | extern int cpu_do_idle(void); |
41 | extern void cpu_dcache_clean_area(void *, int); | 41 | extern void cpu_dcache_clean_area(void *, int); |
42 | extern void cpu_do_switch_mm(unsigned long pgd_phys, struct mm_struct *mm); | 42 | extern void cpu_do_switch_mm(unsigned long pgd_phys, struct mm_struct *mm); |
43 | extern void cpu_set_pte(pte_t *ptep, pte_t pte); | 43 | extern void cpu_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext); |
44 | extern void cpu_reset(unsigned long addr) __attribute__((noreturn)); | 44 | extern void cpu_reset(unsigned long addr) __attribute__((noreturn)); |
diff --git a/include/asm-arm/pgtable.h b/include/asm-arm/pgtable.h index 88cd5c784ef0..b8cf2d5ec304 100644 --- a/include/asm-arm/pgtable.h +++ b/include/asm-arm/pgtable.h | |||
@@ -21,6 +21,7 @@ | |||
21 | 21 | ||
22 | #include <asm/memory.h> | 22 | #include <asm/memory.h> |
23 | #include <asm/arch/vmalloc.h> | 23 | #include <asm/arch/vmalloc.h> |
24 | #include <asm/pgtable-hwdef.h> | ||
24 | 25 | ||
25 | /* | 26 | /* |
26 | * Just any arbitrary offset to the start of the vmalloc VM area: the | 27 | * Just any arbitrary offset to the start of the vmalloc VM area: the |
@@ -170,7 +171,6 @@ extern void __pgd_error(const char *file, int line, unsigned long val); | |||
170 | #define L_PTE_EXEC (1 << 6) | 171 | #define L_PTE_EXEC (1 << 6) |
171 | #define L_PTE_DIRTY (1 << 7) | 172 | #define L_PTE_DIRTY (1 << 7) |
172 | #define L_PTE_SHARED (1 << 10) /* shared(v6), coherent(xsc3) */ | 173 | #define L_PTE_SHARED (1 << 10) /* shared(v6), coherent(xsc3) */ |
173 | #define L_PTE_ASID (1 << 11) /* non-global (use ASID, v6) */ | ||
174 | 174 | ||
175 | #ifndef __ASSEMBLY__ | 175 | #ifndef __ASSEMBLY__ |
176 | 176 | ||
@@ -228,7 +228,7 @@ extern struct page *empty_zero_page; | |||
228 | #define pfn_pte(pfn,prot) (__pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))) | 228 | #define pfn_pte(pfn,prot) (__pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))) |
229 | 229 | ||
230 | #define pte_none(pte) (!pte_val(pte)) | 230 | #define pte_none(pte) (!pte_val(pte)) |
231 | #define pte_clear(mm,addr,ptep) set_pte_at((mm),(addr),(ptep), __pte(0)) | 231 | #define pte_clear(mm,addr,ptep) set_pte_ext(ptep, __pte(0), 0) |
232 | #define pte_page(pte) (pfn_to_page(pte_pfn(pte))) | 232 | #define pte_page(pte) (pfn_to_page(pte_pfn(pte))) |
233 | #define pte_offset_kernel(dir,addr) (pmd_page_vaddr(*(dir)) + __pte_index(addr)) | 233 | #define pte_offset_kernel(dir,addr) (pmd_page_vaddr(*(dir)) + __pte_index(addr)) |
234 | #define pte_offset_map(dir,addr) (pmd_page_vaddr(*(dir)) + __pte_index(addr)) | 234 | #define pte_offset_map(dir,addr) (pmd_page_vaddr(*(dir)) + __pte_index(addr)) |
@@ -236,8 +236,11 @@ extern struct page *empty_zero_page; | |||
236 | #define pte_unmap(pte) do { } while (0) | 236 | #define pte_unmap(pte) do { } while (0) |
237 | #define pte_unmap_nested(pte) do { } while (0) | 237 | #define pte_unmap_nested(pte) do { } while (0) |
238 | 238 | ||
239 | #define set_pte(ptep, pte) cpu_set_pte(ptep,pte) | 239 | #define set_pte_ext(ptep,pte,ext) cpu_set_pte_ext(ptep,pte,ext) |
240 | #define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval) | 240 | |
241 | #define set_pte_at(mm,addr,ptep,pteval) do { \ | ||
242 | set_pte_ext(ptep, pteval, (addr) >= PAGE_OFFSET ? 0 : PTE_EXT_NG); \ | ||
243 | } while (0) | ||
241 | 244 | ||
242 | /* | 245 | /* |
243 | * The following only work if pte_present() is true. | 246 | * The following only work if pte_present() is true. |
diff --git a/include/asm-arm/processor.h b/include/asm-arm/processor.h index b442e8e2a809..1bbf16182d62 100644 --- a/include/asm-arm/processor.h +++ b/include/asm-arm/processor.h | |||
@@ -103,14 +103,14 @@ extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); | |||
103 | #if __LINUX_ARM_ARCH__ >= 5 | 103 | #if __LINUX_ARM_ARCH__ >= 5 |
104 | 104 | ||
105 | #define ARCH_HAS_PREFETCH | 105 | #define ARCH_HAS_PREFETCH |
106 | #define prefetch(ptr) \ | 106 | static inline void prefetch(const void *ptr) |
107 | ({ \ | 107 | { |
108 | __asm__ __volatile__( \ | 108 | __asm__ __volatile__( |
109 | "pld\t%0" \ | 109 | "pld\t%0" |
110 | : \ | 110 | : |
111 | : "o" (*(char *)(ptr)) \ | 111 | : "o" (*(char *)ptr) |
112 | : "cc"); \ | 112 | : "cc"); |
113 | }) | 113 | } |
114 | 114 | ||
115 | #define ARCH_HAS_PREFETCHW | 115 | #define ARCH_HAS_PREFETCHW |
116 | #define prefetchw(ptr) prefetch(ptr) | 116 | #define prefetchw(ptr) prefetch(ptr) |
diff --git a/include/asm-arm/system.h b/include/asm-arm/system.h index f05fbe31576c..e160aeb0138d 100644 --- a/include/asm-arm/system.h +++ b/include/asm-arm/system.h | |||
@@ -139,23 +139,60 @@ static inline int cpu_is_xsc3(void) | |||
139 | #define cpu_is_xscale() 1 | 139 | #define cpu_is_xscale() 1 |
140 | #endif | 140 | #endif |
141 | 141 | ||
142 | #define set_cr(x) \ | 142 | static inline unsigned int get_cr(void) |
143 | __asm__ __volatile__( \ | 143 | { |
144 | "mcr p15, 0, %0, c1, c0, 0 @ set CR" \ | 144 | unsigned int val; |
145 | : : "r" (x) : "cc") | 145 | asm("mrc p15, 0, %0, c1, c0, 0 @ get CR" : "=r" (val) : : "cc"); |
146 | 146 | return val; | |
147 | #define get_cr() \ | 147 | } |
148 | ({ \ | 148 | |
149 | unsigned int __val; \ | 149 | static inline void set_cr(unsigned int val) |
150 | __asm__ __volatile__( \ | 150 | { |
151 | "mrc p15, 0, %0, c1, c0, 0 @ get CR" \ | 151 | asm volatile("mcr p15, 0, %0, c1, c0, 0 @ set CR" |
152 | : "=r" (__val) : : "cc"); \ | 152 | : : "r" (val) : "cc"); |
153 | __val; \ | 153 | } |
154 | }) | 154 | |
155 | #define CPACC_FULL(n) (3 << (n * 2)) | ||
156 | #define CPACC_SVC(n) (1 << (n * 2)) | ||
157 | #define CPACC_DISABLE(n) (0 << (n * 2)) | ||
158 | |||
159 | static inline unsigned int get_copro_access(void) | ||
160 | { | ||
161 | unsigned int val; | ||
162 | asm("mrc p15, 0, %0, c1, c0, 2 @ get copro access" | ||
163 | : "=r" (val) : : "cc"); | ||
164 | return val; | ||
165 | } | ||
166 | |||
167 | static inline void set_copro_access(unsigned int val) | ||
168 | { | ||
169 | asm volatile("mcr p15, 0, %0, c1, c0, 2 @ set copro access" | ||
170 | : : "r" (val) : "cc"); | ||
171 | } | ||
155 | 172 | ||
156 | extern unsigned long cr_no_alignment; /* defined in entry-armv.S */ | 173 | extern unsigned long cr_no_alignment; /* defined in entry-armv.S */ |
157 | extern unsigned long cr_alignment; /* defined in entry-armv.S */ | 174 | extern unsigned long cr_alignment; /* defined in entry-armv.S */ |
158 | 175 | ||
176 | #ifndef CONFIG_SMP | ||
177 | static inline void adjust_cr(unsigned long mask, unsigned long set) | ||
178 | { | ||
179 | unsigned long flags, cr; | ||
180 | |||
181 | mask &= ~CR_A; | ||
182 | |||
183 | set &= mask; | ||
184 | |||
185 | local_irq_save(flags); | ||
186 | |||
187 | cr_no_alignment = (cr_no_alignment & ~mask) | set; | ||
188 | cr_alignment = (cr_alignment & ~mask) | set; | ||
189 | |||
190 | set_cr((get_cr() & ~mask) | set); | ||
191 | |||
192 | local_irq_restore(flags); | ||
193 | } | ||
194 | #endif | ||
195 | |||
159 | #define UDBG_UNDEFINED (1 << 0) | 196 | #define UDBG_UNDEFINED (1 << 0) |
160 | #define UDBG_SYSCALL (1 << 1) | 197 | #define UDBG_SYSCALL (1 << 1) |
161 | #define UDBG_BADABORT (1 << 2) | 198 | #define UDBG_BADABORT (1 << 2) |
diff --git a/include/asm-arm/thread_info.h b/include/asm-arm/thread_info.h index d9b8bddc8732..5014794f9eb3 100644 --- a/include/asm-arm/thread_info.h +++ b/include/asm-arm/thread_info.h | |||
@@ -147,6 +147,7 @@ extern void iwmmxt_task_switch(struct thread_info *); | |||
147 | #define TIF_POLLING_NRFLAG 16 | 147 | #define TIF_POLLING_NRFLAG 16 |
148 | #define TIF_USING_IWMMXT 17 | 148 | #define TIF_USING_IWMMXT 17 |
149 | #define TIF_MEMDIE 18 | 149 | #define TIF_MEMDIE 18 |
150 | #define TIF_FREEZE 19 | ||
150 | 151 | ||
151 | #define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME) | 152 | #define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME) |
152 | #define _TIF_SIGPENDING (1 << TIF_SIGPENDING) | 153 | #define _TIF_SIGPENDING (1 << TIF_SIGPENDING) |
@@ -154,6 +155,7 @@ extern void iwmmxt_task_switch(struct thread_info *); | |||
154 | #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) | 155 | #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) |
155 | #define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG) | 156 | #define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG) |
156 | #define _TIF_USING_IWMMXT (1 << TIF_USING_IWMMXT) | 157 | #define _TIF_USING_IWMMXT (1 << TIF_USING_IWMMXT) |
158 | #define _TIF_FREEZE (1 << TIF_FREEZE) | ||
157 | 159 | ||
158 | /* | 160 | /* |
159 | * Change these and you break ASM code in entry-common.S | 161 | * Change these and you break ASM code in entry-common.S |
diff --git a/include/asm-arm/unistd.h b/include/asm-arm/unistd.h index d44c629d8424..32b06eb52819 100644 --- a/include/asm-arm/unistd.h +++ b/include/asm-arm/unistd.h | |||
@@ -347,6 +347,19 @@ | |||
347 | #define __NR_mbind (__NR_SYSCALL_BASE+319) | 347 | #define __NR_mbind (__NR_SYSCALL_BASE+319) |
348 | #define __NR_get_mempolicy (__NR_SYSCALL_BASE+320) | 348 | #define __NR_get_mempolicy (__NR_SYSCALL_BASE+320) |
349 | #define __NR_set_mempolicy (__NR_SYSCALL_BASE+321) | 349 | #define __NR_set_mempolicy (__NR_SYSCALL_BASE+321) |
350 | #define __NR_openat (__NR_SYSCALL_BASE+322) | ||
351 | #define __NR_mkdirat (__NR_SYSCALL_BASE+323) | ||
352 | #define __NR_mknodat (__NR_SYSCALL_BASE+324) | ||
353 | #define __NR_fchownat (__NR_SYSCALL_BASE+325) | ||
354 | #define __NR_futimesat (__NR_SYSCALL_BASE+326) | ||
355 | #define __NR_fstatat64 (__NR_SYSCALL_BASE+327) | ||
356 | #define __NR_unlinkat (__NR_SYSCALL_BASE+328) | ||
357 | #define __NR_renameat (__NR_SYSCALL_BASE+329) | ||
358 | #define __NR_linkat (__NR_SYSCALL_BASE+330) | ||
359 | #define __NR_symlinkat (__NR_SYSCALL_BASE+331) | ||
360 | #define __NR_readlinkat (__NR_SYSCALL_BASE+332) | ||
361 | #define __NR_fchmodat (__NR_SYSCALL_BASE+333) | ||
362 | #define __NR_faccessat (__NR_SYSCALL_BASE+334) | ||
350 | 363 | ||
351 | /* | 364 | /* |
352 | * The following SWIs are ARM private. | 365 | * The following SWIs are ARM private. |
diff --git a/include/asm-arm26/cacheflush.h b/include/asm-arm26/cacheflush.h index 9c1b9c7f2ebd..14ae15b6faab 100644 --- a/include/asm-arm26/cacheflush.h +++ b/include/asm-arm26/cacheflush.h | |||
@@ -22,6 +22,7 @@ | |||
22 | 22 | ||
23 | #define flush_cache_all() do { } while (0) | 23 | #define flush_cache_all() do { } while (0) |
24 | #define flush_cache_mm(mm) do { } while (0) | 24 | #define flush_cache_mm(mm) do { } while (0) |
25 | #define flush_cache_dup_mm(mm) do { } while (0) | ||
25 | #define flush_cache_range(vma,start,end) do { } while (0) | 26 | #define flush_cache_range(vma,start,end) do { } while (0) |
26 | #define flush_cache_page(vma,vmaddr,pfn) do { } while (0) | 27 | #define flush_cache_page(vma,vmaddr,pfn) do { } while (0) |
27 | #define flush_cache_vmap(start, end) do { } while (0) | 28 | #define flush_cache_vmap(start, end) do { } while (0) |
diff --git a/include/asm-avr32/cacheflush.h b/include/asm-avr32/cacheflush.h index f1bf1708980e..dfaaa88cd412 100644 --- a/include/asm-avr32/cacheflush.h +++ b/include/asm-avr32/cacheflush.h | |||
@@ -87,6 +87,7 @@ void invalidate_icache_region(void *start, size_t len); | |||
87 | */ | 87 | */ |
88 | #define flush_cache_all() do { } while (0) | 88 | #define flush_cache_all() do { } while (0) |
89 | #define flush_cache_mm(mm) do { } while (0) | 89 | #define flush_cache_mm(mm) do { } while (0) |
90 | #define flush_cache_dup_mm(mm) do { } while (0) | ||
90 | #define flush_cache_range(vma, start, end) do { } while (0) | 91 | #define flush_cache_range(vma, start, end) do { } while (0) |
91 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) | 92 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) |
92 | #define flush_cache_vmap(start, end) do { } while (0) | 93 | #define flush_cache_vmap(start, end) do { } while (0) |
diff --git a/include/asm-avr32/pgalloc.h b/include/asm-avr32/pgalloc.h index 7492cfb92ced..bb82e70cde8d 100644 --- a/include/asm-avr32/pgalloc.h +++ b/include/asm-avr32/pgalloc.h | |||
@@ -28,7 +28,7 @@ static __inline__ void pmd_populate(struct mm_struct *mm, pmd_t *pmd, | |||
28 | static __inline__ pgd_t *pgd_alloc(struct mm_struct *mm) | 28 | static __inline__ pgd_t *pgd_alloc(struct mm_struct *mm) |
29 | { | 29 | { |
30 | unsigned int pgd_size = (USER_PTRS_PER_PGD * sizeof(pgd_t)); | 30 | unsigned int pgd_size = (USER_PTRS_PER_PGD * sizeof(pgd_t)); |
31 | pgd_t *pgd = (pgd_t *)kmalloc(pgd_size, GFP_KERNEL); | 31 | pgd_t *pgd = kmalloc(pgd_size, GFP_KERNEL); |
32 | 32 | ||
33 | if (pgd) | 33 | if (pgd) |
34 | memset(pgd, 0, pgd_size); | 34 | memset(pgd, 0, pgd_size); |
diff --git a/include/asm-cris/cacheflush.h b/include/asm-cris/cacheflush.h index 72cc71dffe70..01af2de27c5b 100644 --- a/include/asm-cris/cacheflush.h +++ b/include/asm-cris/cacheflush.h | |||
@@ -9,6 +9,7 @@ | |||
9 | */ | 9 | */ |
10 | #define flush_cache_all() do { } while (0) | 10 | #define flush_cache_all() do { } while (0) |
11 | #define flush_cache_mm(mm) do { } while (0) | 11 | #define flush_cache_mm(mm) do { } while (0) |
12 | #define flush_cache_dup_mm(mm) do { } while (0) | ||
12 | #define flush_cache_range(vma, start, end) do { } while (0) | 13 | #define flush_cache_range(vma, start, end) do { } while (0) |
13 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) | 14 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) |
14 | #define flush_dcache_page(page) do { } while (0) | 15 | #define flush_dcache_page(page) do { } while (0) |
diff --git a/include/asm-frv/cacheflush.h b/include/asm-frv/cacheflush.h index eaa5826bc1c8..02500405a6fb 100644 --- a/include/asm-frv/cacheflush.h +++ b/include/asm-frv/cacheflush.h | |||
@@ -20,6 +20,7 @@ | |||
20 | */ | 20 | */ |
21 | #define flush_cache_all() do {} while(0) | 21 | #define flush_cache_all() do {} while(0) |
22 | #define flush_cache_mm(mm) do {} while(0) | 22 | #define flush_cache_mm(mm) do {} while(0) |
23 | #define flush_cache_dup_mm(mm) do {} while(0) | ||
23 | #define flush_cache_range(mm, start, end) do {} while(0) | 24 | #define flush_cache_range(mm, start, end) do {} while(0) |
24 | #define flush_cache_page(vma, vmaddr, pfn) do {} while(0) | 25 | #define flush_cache_page(vma, vmaddr, pfn) do {} while(0) |
25 | #define flush_cache_vmap(start, end) do {} while(0) | 26 | #define flush_cache_vmap(start, end) do {} while(0) |
diff --git a/include/asm-frv/thread_info.h b/include/asm-frv/thread_info.h index d66c48e6ef14..d881f518e6a9 100644 --- a/include/asm-frv/thread_info.h +++ b/include/asm-frv/thread_info.h | |||
@@ -116,6 +116,7 @@ register struct thread_info *__current_thread_info asm("gr15"); | |||
116 | #define TIF_RESTORE_SIGMASK 6 /* restore signal mask in do_signal() */ | 116 | #define TIF_RESTORE_SIGMASK 6 /* restore signal mask in do_signal() */ |
117 | #define TIF_POLLING_NRFLAG 16 /* true if poll_idle() is polling TIF_NEED_RESCHED */ | 117 | #define TIF_POLLING_NRFLAG 16 /* true if poll_idle() is polling TIF_NEED_RESCHED */ |
118 | #define TIF_MEMDIE 17 /* OOM killer killed process */ | 118 | #define TIF_MEMDIE 17 /* OOM killer killed process */ |
119 | #define TIF_FREEZE 18 /* freezing for suspend */ | ||
119 | 120 | ||
120 | #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) | 121 | #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) |
121 | #define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME) | 122 | #define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME) |
@@ -125,6 +126,7 @@ register struct thread_info *__current_thread_info asm("gr15"); | |||
125 | #define _TIF_IRET (1 << TIF_IRET) | 126 | #define _TIF_IRET (1 << TIF_IRET) |
126 | #define _TIF_RESTORE_SIGMASK (1 << TIF_RESTORE_SIGMASK) | 127 | #define _TIF_RESTORE_SIGMASK (1 << TIF_RESTORE_SIGMASK) |
127 | #define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG) | 128 | #define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG) |
129 | #define _TIF_FREEZE (1 << TIF_FREEZE) | ||
128 | 130 | ||
129 | #define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */ | 131 | #define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */ |
130 | #define _TIF_ALLWORK_MASK 0x0000FFFF /* work to do on any return to u-space */ | 132 | #define _TIF_ALLWORK_MASK 0x0000FFFF /* work to do on any return to u-space */ |
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 7437ccaada77..1587121730c5 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h | |||
@@ -119,8 +119,6 @@ | |||
119 | *(__ksymtab_strings) \ | 119 | *(__ksymtab_strings) \ |
120 | } \ | 120 | } \ |
121 | \ | 121 | \ |
122 | EH_FRAME \ | ||
123 | \ | ||
124 | /* Built-in module parameters. */ \ | 122 | /* Built-in module parameters. */ \ |
125 | __param : AT(ADDR(__param) - LOAD_OFFSET) { \ | 123 | __param : AT(ADDR(__param) - LOAD_OFFSET) { \ |
126 | VMLINUX_SYMBOL(__start___param) = .; \ | 124 | VMLINUX_SYMBOL(__start___param) = .; \ |
@@ -160,26 +158,6 @@ | |||
160 | *(.kprobes.text) \ | 158 | *(.kprobes.text) \ |
161 | VMLINUX_SYMBOL(__kprobes_text_end) = .; | 159 | VMLINUX_SYMBOL(__kprobes_text_end) = .; |
162 | 160 | ||
163 | #ifdef CONFIG_STACK_UNWIND | ||
164 | #define EH_FRAME \ | ||
165 | /* Unwind data binary search table */ \ | ||
166 | . = ALIGN(8); \ | ||
167 | .eh_frame_hdr : AT(ADDR(.eh_frame_hdr) - LOAD_OFFSET) { \ | ||
168 | VMLINUX_SYMBOL(__start_unwind_hdr) = .; \ | ||
169 | *(.eh_frame_hdr) \ | ||
170 | VMLINUX_SYMBOL(__end_unwind_hdr) = .; \ | ||
171 | } \ | ||
172 | /* Unwind data */ \ | ||
173 | . = ALIGN(8); \ | ||
174 | .eh_frame : AT(ADDR(.eh_frame) - LOAD_OFFSET) { \ | ||
175 | VMLINUX_SYMBOL(__start_unwind) = .; \ | ||
176 | *(.eh_frame) \ | ||
177 | VMLINUX_SYMBOL(__end_unwind) = .; \ | ||
178 | } | ||
179 | #else | ||
180 | #define EH_FRAME | ||
181 | #endif | ||
182 | |||
183 | /* DWARF debug sections. | 161 | /* DWARF debug sections. |
184 | Symbols in the DWARF debugging sections are relative to | 162 | Symbols in the DWARF debugging sections are relative to |
185 | the beginning of the section so we begin them at 0. */ | 163 | the beginning of the section so we begin them at 0. */ |
diff --git a/include/asm-h8300/cacheflush.h b/include/asm-h8300/cacheflush.h index 1e4d95bb5ec9..71210d141b64 100644 --- a/include/asm-h8300/cacheflush.h +++ b/include/asm-h8300/cacheflush.h | |||
@@ -12,6 +12,7 @@ | |||
12 | 12 | ||
13 | #define flush_cache_all() | 13 | #define flush_cache_all() |
14 | #define flush_cache_mm(mm) | 14 | #define flush_cache_mm(mm) |
15 | #define flush_cache_dup_mm(mm) do { } while (0) | ||
15 | #define flush_cache_range(vma,a,b) | 16 | #define flush_cache_range(vma,a,b) |
16 | #define flush_cache_page(vma,p,pfn) | 17 | #define flush_cache_page(vma,p,pfn) |
17 | #define flush_dcache_page(page) | 18 | #define flush_dcache_page(page) |
diff --git a/include/asm-i386/cacheflush.h b/include/asm-i386/cacheflush.h index 7199f7b326f1..74e03c8f2e51 100644 --- a/include/asm-i386/cacheflush.h +++ b/include/asm-i386/cacheflush.h | |||
@@ -7,6 +7,7 @@ | |||
7 | /* Caches aren't brain-dead on the intel. */ | 7 | /* Caches aren't brain-dead on the intel. */ |
8 | #define flush_cache_all() do { } while (0) | 8 | #define flush_cache_all() do { } while (0) |
9 | #define flush_cache_mm(mm) do { } while (0) | 9 | #define flush_cache_mm(mm) do { } while (0) |
10 | #define flush_cache_dup_mm(mm) do { } while (0) | ||
10 | #define flush_cache_range(vma, start, end) do { } while (0) | 11 | #define flush_cache_range(vma, start, end) do { } while (0) |
11 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) | 12 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) |
12 | #define flush_dcache_page(page) do { } while (0) | 13 | #define flush_dcache_page(page) do { } while (0) |
diff --git a/include/asm-i386/thread_info.h b/include/asm-i386/thread_info.h index 46d32ad92082..4b187bb377b4 100644 --- a/include/asm-i386/thread_info.h +++ b/include/asm-i386/thread_info.h | |||
@@ -134,6 +134,7 @@ static inline struct thread_info *current_thread_info(void) | |||
134 | #define TIF_MEMDIE 16 | 134 | #define TIF_MEMDIE 16 |
135 | #define TIF_DEBUG 17 /* uses debug registers */ | 135 | #define TIF_DEBUG 17 /* uses debug registers */ |
136 | #define TIF_IO_BITMAP 18 /* uses I/O bitmap */ | 136 | #define TIF_IO_BITMAP 18 /* uses I/O bitmap */ |
137 | #define TIF_FREEZE 19 /* is freezing for suspend */ | ||
137 | 138 | ||
138 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) | 139 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) |
139 | #define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME) | 140 | #define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME) |
@@ -147,6 +148,7 @@ static inline struct thread_info *current_thread_info(void) | |||
147 | #define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) | 148 | #define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) |
148 | #define _TIF_DEBUG (1<<TIF_DEBUG) | 149 | #define _TIF_DEBUG (1<<TIF_DEBUG) |
149 | #define _TIF_IO_BITMAP (1<<TIF_IO_BITMAP) | 150 | #define _TIF_IO_BITMAP (1<<TIF_IO_BITMAP) |
151 | #define _TIF_FREEZE (1<<TIF_FREEZE) | ||
150 | 152 | ||
151 | /* work to do on interrupt/exception return */ | 153 | /* work to do on interrupt/exception return */ |
152 | #define _TIF_WORK_MASK \ | 154 | #define _TIF_WORK_MASK \ |
diff --git a/include/asm-i386/unwind.h b/include/asm-i386/unwind.h index aa2c931e30db..43c70c3de2f9 100644 --- a/include/asm-i386/unwind.h +++ b/include/asm-i386/unwind.h | |||
@@ -1,95 +1,6 @@ | |||
1 | #ifndef _ASM_I386_UNWIND_H | 1 | #ifndef _ASM_I386_UNWIND_H |
2 | #define _ASM_I386_UNWIND_H | 2 | #define _ASM_I386_UNWIND_H |
3 | 3 | ||
4 | /* | ||
5 | * Copyright (C) 2002-2006 Novell, Inc. | ||
6 | * Jan Beulich <jbeulich@novell.com> | ||
7 | * This code is released under version 2 of the GNU GPL. | ||
8 | */ | ||
9 | |||
10 | #ifdef CONFIG_STACK_UNWIND | ||
11 | |||
12 | #include <linux/sched.h> | ||
13 | #include <asm/fixmap.h> | ||
14 | #include <asm/ptrace.h> | ||
15 | #include <asm/uaccess.h> | ||
16 | |||
17 | struct unwind_frame_info | ||
18 | { | ||
19 | struct pt_regs regs; | ||
20 | struct task_struct *task; | ||
21 | unsigned call_frame:1; | ||
22 | }; | ||
23 | |||
24 | #define UNW_PC(frame) (frame)->regs.eip | ||
25 | #define UNW_SP(frame) (frame)->regs.esp | ||
26 | #ifdef CONFIG_FRAME_POINTER | ||
27 | #define UNW_FP(frame) (frame)->regs.ebp | ||
28 | #define FRAME_RETADDR_OFFSET 4 | ||
29 | #define FRAME_LINK_OFFSET 0 | ||
30 | #define STACK_BOTTOM(tsk) STACK_LIMIT((tsk)->thread.esp0) | ||
31 | #define STACK_TOP(tsk) ((tsk)->thread.esp0) | ||
32 | #else | ||
33 | #define UNW_FP(frame) ((void)(frame), 0) | ||
34 | #endif | ||
35 | #define STACK_LIMIT(ptr) (((ptr) - 1) & ~(THREAD_SIZE - 1)) | ||
36 | |||
37 | #define UNW_REGISTER_INFO \ | ||
38 | PTREGS_INFO(eax), \ | ||
39 | PTREGS_INFO(ecx), \ | ||
40 | PTREGS_INFO(edx), \ | ||
41 | PTREGS_INFO(ebx), \ | ||
42 | PTREGS_INFO(esp), \ | ||
43 | PTREGS_INFO(ebp), \ | ||
44 | PTREGS_INFO(esi), \ | ||
45 | PTREGS_INFO(edi), \ | ||
46 | PTREGS_INFO(eip) | ||
47 | |||
48 | #define UNW_DEFAULT_RA(raItem, dataAlign) \ | ||
49 | ((raItem).where == Memory && \ | ||
50 | !((raItem).value * (dataAlign) + 4)) | ||
51 | |||
52 | static inline void arch_unw_init_frame_info(struct unwind_frame_info *info, | ||
53 | /*const*/ struct pt_regs *regs) | ||
54 | { | ||
55 | if (user_mode_vm(regs)) | ||
56 | info->regs = *regs; | ||
57 | else { | ||
58 | memcpy(&info->regs, regs, offsetof(struct pt_regs, esp)); | ||
59 | info->regs.esp = (unsigned long)®s->esp; | ||
60 | info->regs.xss = __KERNEL_DS; | ||
61 | } | ||
62 | } | ||
63 | |||
64 | static inline void arch_unw_init_blocked(struct unwind_frame_info *info) | ||
65 | { | ||
66 | memset(&info->regs, 0, sizeof(info->regs)); | ||
67 | info->regs.eip = info->task->thread.eip; | ||
68 | info->regs.xcs = __KERNEL_CS; | ||
69 | __get_user(info->regs.ebp, (long *)info->task->thread.esp); | ||
70 | info->regs.esp = info->task->thread.esp; | ||
71 | info->regs.xss = __KERNEL_DS; | ||
72 | info->regs.xds = __USER_DS; | ||
73 | info->regs.xes = __USER_DS; | ||
74 | info->regs.xgs = __KERNEL_PDA; | ||
75 | } | ||
76 | |||
77 | extern asmlinkage int arch_unwind_init_running(struct unwind_frame_info *, | ||
78 | asmlinkage int (*callback)(struct unwind_frame_info *, | ||
79 | void *arg), | ||
80 | void *arg); | ||
81 | |||
82 | static inline int arch_unw_user_mode(/*const*/ struct unwind_frame_info *info) | ||
83 | { | ||
84 | return user_mode_vm(&info->regs) | ||
85 | || info->regs.eip < PAGE_OFFSET | ||
86 | || (info->regs.eip >= __fix_to_virt(FIX_VDSO) | ||
87 | && info->regs.eip < __fix_to_virt(FIX_VDSO) + PAGE_SIZE) | ||
88 | || info->regs.esp < PAGE_OFFSET; | ||
89 | } | ||
90 | |||
91 | #else | ||
92 | |||
93 | #define UNW_PC(frame) ((void)(frame), 0) | 4 | #define UNW_PC(frame) ((void)(frame), 0) |
94 | #define UNW_SP(frame) ((void)(frame), 0) | 5 | #define UNW_SP(frame) ((void)(frame), 0) |
95 | #define UNW_FP(frame) ((void)(frame), 0) | 6 | #define UNW_FP(frame) ((void)(frame), 0) |
@@ -99,6 +10,4 @@ static inline int arch_unw_user_mode(const void *info) | |||
99 | return 0; | 10 | return 0; |
100 | } | 11 | } |
101 | 12 | ||
102 | #endif | ||
103 | |||
104 | #endif /* _ASM_I386_UNWIND_H */ | 13 | #endif /* _ASM_I386_UNWIND_H */ |
diff --git a/include/asm-ia64/cacheflush.h b/include/asm-ia64/cacheflush.h index f2dacb4245ec..4906916d715b 100644 --- a/include/asm-ia64/cacheflush.h +++ b/include/asm-ia64/cacheflush.h | |||
@@ -18,6 +18,7 @@ | |||
18 | 18 | ||
19 | #define flush_cache_all() do { } while (0) | 19 | #define flush_cache_all() do { } while (0) |
20 | #define flush_cache_mm(mm) do { } while (0) | 20 | #define flush_cache_mm(mm) do { } while (0) |
21 | #define flush_cache_dup_mm(mm) do { } while (0) | ||
21 | #define flush_cache_range(vma, start, end) do { } while (0) | 22 | #define flush_cache_range(vma, start, end) do { } while (0) |
22 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) | 23 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) |
23 | #define flush_icache_page(vma,page) do { } while (0) | 24 | #define flush_icache_page(vma,page) do { } while (0) |
diff --git a/include/asm-ia64/pci.h b/include/asm-ia64/pci.h index 825eb7d882e6..556f53fa44cb 100644 --- a/include/asm-ia64/pci.h +++ b/include/asm-ia64/pci.h | |||
@@ -78,9 +78,6 @@ pcibios_penalize_isa_irq (int irq, int active) | |||
78 | #define pci_dac_dma_sync_single_for_cpu(dev,dma_addr,len,dir) do { } while (0) | 78 | #define pci_dac_dma_sync_single_for_cpu(dev,dma_addr,len,dir) do { } while (0) |
79 | #define pci_dac_dma_sync_single_for_device(dev,dma_addr,len,dir) do { mb(); } while (0) | 79 | #define pci_dac_dma_sync_single_for_device(dev,dma_addr,len,dir) do { mb(); } while (0) |
80 | 80 | ||
81 | #define sg_dma_len(sg) ((sg)->dma_length) | ||
82 | #define sg_dma_address(sg) ((sg)->dma_address) | ||
83 | |||
84 | #ifdef CONFIG_PCI | 81 | #ifdef CONFIG_PCI |
85 | static inline void pci_dma_burst_advice(struct pci_dev *pdev, | 82 | static inline void pci_dma_burst_advice(struct pci_dev *pdev, |
86 | enum pci_dma_burst_strategy *strat, | 83 | enum pci_dma_burst_strategy *strat, |
diff --git a/include/asm-ia64/scatterlist.h b/include/asm-ia64/scatterlist.h index 834a189ef189..9dbea8844d5e 100644 --- a/include/asm-ia64/scatterlist.h +++ b/include/asm-ia64/scatterlist.h | |||
@@ -25,4 +25,7 @@ struct scatterlist { | |||
25 | */ | 25 | */ |
26 | #define ISA_DMA_THRESHOLD 0xffffffff | 26 | #define ISA_DMA_THRESHOLD 0xffffffff |
27 | 27 | ||
28 | #define sg_dma_len(sg) ((sg)->dma_length) | ||
29 | #define sg_dma_address(sg) ((sg)->dma_address) | ||
30 | |||
28 | #endif /* _ASM_IA64_SCATTERLIST_H */ | 31 | #endif /* _ASM_IA64_SCATTERLIST_H */ |
diff --git a/include/asm-ia64/thread_info.h b/include/asm-ia64/thread_info.h index 8adcde0934ca..9b505b25544f 100644 --- a/include/asm-ia64/thread_info.h +++ b/include/asm-ia64/thread_info.h | |||
@@ -88,6 +88,7 @@ struct thread_info { | |||
88 | #define TIF_MEMDIE 17 | 88 | #define TIF_MEMDIE 17 |
89 | #define TIF_MCA_INIT 18 /* this task is processing MCA or INIT */ | 89 | #define TIF_MCA_INIT 18 /* this task is processing MCA or INIT */ |
90 | #define TIF_DB_DISABLED 19 /* debug trap disabled for fsyscall */ | 90 | #define TIF_DB_DISABLED 19 /* debug trap disabled for fsyscall */ |
91 | #define TIF_FREEZE 20 /* is freezing for suspend */ | ||
91 | 92 | ||
92 | #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) | 93 | #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) |
93 | #define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT) | 94 | #define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT) |
@@ -98,6 +99,7 @@ struct thread_info { | |||
98 | #define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG) | 99 | #define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG) |
99 | #define _TIF_MCA_INIT (1 << TIF_MCA_INIT) | 100 | #define _TIF_MCA_INIT (1 << TIF_MCA_INIT) |
100 | #define _TIF_DB_DISABLED (1 << TIF_DB_DISABLED) | 101 | #define _TIF_DB_DISABLED (1 << TIF_DB_DISABLED) |
102 | #define _TIF_FREEZE (1 << TIF_FREEZE) | ||
101 | 103 | ||
102 | /* "work to do on user-return" bits */ | 104 | /* "work to do on user-return" bits */ |
103 | #define TIF_ALLWORK_MASK (_TIF_NOTIFY_RESUME|_TIF_SIGPENDING|_TIF_NEED_RESCHED|_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT) | 105 | #define TIF_ALLWORK_MASK (_TIF_NOTIFY_RESUME|_TIF_SIGPENDING|_TIF_NEED_RESCHED|_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT) |
diff --git a/include/asm-m32r/cacheflush.h b/include/asm-m32r/cacheflush.h index 8b261b49149e..56961a9511b2 100644 --- a/include/asm-m32r/cacheflush.h +++ b/include/asm-m32r/cacheflush.h | |||
@@ -9,6 +9,7 @@ extern void _flush_cache_copyback_all(void); | |||
9 | #if defined(CONFIG_CHIP_M32700) || defined(CONFIG_CHIP_OPSP) || defined(CONFIG_CHIP_M32104) | 9 | #if defined(CONFIG_CHIP_M32700) || defined(CONFIG_CHIP_OPSP) || defined(CONFIG_CHIP_M32104) |
10 | #define flush_cache_all() do { } while (0) | 10 | #define flush_cache_all() do { } while (0) |
11 | #define flush_cache_mm(mm) do { } while (0) | 11 | #define flush_cache_mm(mm) do { } while (0) |
12 | #define flush_cache_dup_mm(mm) do { } while (0) | ||
12 | #define flush_cache_range(vma, start, end) do { } while (0) | 13 | #define flush_cache_range(vma, start, end) do { } while (0) |
13 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) | 14 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) |
14 | #define flush_dcache_page(page) do { } while (0) | 15 | #define flush_dcache_page(page) do { } while (0) |
@@ -29,6 +30,7 @@ extern void smp_flush_cache_all(void); | |||
29 | #elif defined(CONFIG_CHIP_M32102) | 30 | #elif defined(CONFIG_CHIP_M32102) |
30 | #define flush_cache_all() do { } while (0) | 31 | #define flush_cache_all() do { } while (0) |
31 | #define flush_cache_mm(mm) do { } while (0) | 32 | #define flush_cache_mm(mm) do { } while (0) |
33 | #define flush_cache_dup_mm(mm) do { } while (0) | ||
32 | #define flush_cache_range(vma, start, end) do { } while (0) | 34 | #define flush_cache_range(vma, start, end) do { } while (0) |
33 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) | 35 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) |
34 | #define flush_dcache_page(page) do { } while (0) | 36 | #define flush_dcache_page(page) do { } while (0) |
@@ -41,6 +43,7 @@ extern void smp_flush_cache_all(void); | |||
41 | #else | 43 | #else |
42 | #define flush_cache_all() do { } while (0) | 44 | #define flush_cache_all() do { } while (0) |
43 | #define flush_cache_mm(mm) do { } while (0) | 45 | #define flush_cache_mm(mm) do { } while (0) |
46 | #define flush_cache_dup_mm(mm) do { } while (0) | ||
44 | #define flush_cache_range(vma, start, end) do { } while (0) | 47 | #define flush_cache_range(vma, start, end) do { } while (0) |
45 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) | 48 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) |
46 | #define flush_dcache_page(page) do { } while (0) | 49 | #define flush_dcache_page(page) do { } while (0) |
diff --git a/include/asm-m68k/cacheflush.h b/include/asm-m68k/cacheflush.h index 24d3ff449135..16bf375fdbe1 100644 --- a/include/asm-m68k/cacheflush.h +++ b/include/asm-m68k/cacheflush.h | |||
@@ -89,6 +89,8 @@ static inline void flush_cache_mm(struct mm_struct *mm) | |||
89 | __flush_cache_030(); | 89 | __flush_cache_030(); |
90 | } | 90 | } |
91 | 91 | ||
92 | #define flush_cache_dup_mm(mm) flush_cache_mm(mm) | ||
93 | |||
92 | /* flush_cache_range/flush_cache_page must be macros to avoid | 94 | /* flush_cache_range/flush_cache_page must be macros to avoid |
93 | a dependency on linux/mm.h, which includes this file... */ | 95 | a dependency on linux/mm.h, which includes this file... */ |
94 | static inline void flush_cache_range(struct vm_area_struct *vma, | 96 | static inline void flush_cache_range(struct vm_area_struct *vma, |
diff --git a/include/asm-m68k/swim_iop.h b/include/asm-m68k/swim_iop.h deleted file mode 100644 index f29b67876b01..000000000000 --- a/include/asm-m68k/swim_iop.h +++ /dev/null | |||
@@ -1,221 +0,0 @@ | |||
1 | /* | ||
2 | * SWIM access through the IOP | ||
3 | * Written by Joshua M. Thompson | ||
4 | */ | ||
5 | |||
6 | /* IOP number and channel number for the SWIM */ | ||
7 | |||
8 | #define SWIM_IOP IOP_NUM_ISM | ||
9 | #define SWIM_CHAN 1 | ||
10 | |||
11 | /* Command code: */ | ||
12 | |||
13 | #define CMD_INIT 0x01 /* Initialize */ | ||
14 | #define CMD_SHUTDOWN 0x02 /* Shutdown */ | ||
15 | #define CMD_START_POLL 0x03 /* Start insert/eject polling */ | ||
16 | #define CMD_STOP_POLL 0x04 /* Stop insert/eject polling */ | ||
17 | #define CMD_SETHFSTAG 0x05 /* Set HFS tag buffer address */ | ||
18 | #define CMD_STATUS 0x06 /* Status */ | ||
19 | #define CMD_EJECT 0x07 /* Eject */ | ||
20 | #define CMD_FORMAT 0x08 /* Format */ | ||
21 | #define CMD_FORMAT_VERIFY 0x09 /* Format and Verify */ | ||
22 | #define CMD_WRITE 0x0A /* Write */ | ||
23 | #define CMD_READ 0x0B /* Read */ | ||
24 | #define CMD_READ_VERIFY 0x0C /* Read and Verify */ | ||
25 | #define CMD_CACHE_CTRL 0x0D /* Cache control */ | ||
26 | #define CMD_TAGBUFF_CTRL 0x0E /* Tag buffer control */ | ||
27 | #define CMD_GET_ICON 0x0F /* Get Icon */ | ||
28 | |||
29 | /* Drive types: */ | ||
30 | |||
31 | /* note: apple sez DRV_FDHD is 4, but I get back a type */ | ||
32 | /* of 5 when I do a drive status check on my FDHD */ | ||
33 | |||
34 | #define DRV_NONE 0 /* No drive */ | ||
35 | #define DRV_UNKNOWN 1 /* Unspecified drive */ | ||
36 | #define DRV_400K 2 /* 400K */ | ||
37 | #define DRV_800K 3 /* 400K/800K */ | ||
38 | #define DRV_FDHD 5 /* 400K/800K/720K/1440K */ | ||
39 | #define DRV_HD20 7 /* Apple HD20 */ | ||
40 | |||
41 | /* Format types: */ | ||
42 | |||
43 | #define FMT_HD20 0x0001 /* Apple HD20 */ | ||
44 | #define FMT_400K 0x0002 /* 400K (GCR) */ | ||
45 | #define FMT_800K 0x0004 /* 800K (GCR) */ | ||
46 | #define FMT_720K 0x0008 /* 720K (MFM) */ | ||
47 | #define FMT_1440K 0x0010 /* 1.44M (MFM) */ | ||
48 | |||
49 | #define FMD_KIND_400K 1 | ||
50 | #define FMD_KIND_800K 2 | ||
51 | #define FMD_KIND_720K 3 | ||
52 | #define FMD_KIND_1440K 1 | ||
53 | |||
54 | /* Icon Flags: */ | ||
55 | |||
56 | #define ICON_MEDIA 0x01 /* Have IOP supply media icon */ | ||
57 | #define ICON_DRIVE 0x01 /* Have IOP supply drive icon */ | ||
58 | |||
59 | /* Error codes: */ | ||
60 | |||
61 | #define gcrOnMFMErr -400 /* GCR (400/800K) on HD media */ | ||
62 | #define verErr -84 /* verify failed */ | ||
63 | #define fmt2Err -83 /* can't get enough sync during format */ | ||
64 | #define fmt1Err -82 /* can't find sector 0 after track format */ | ||
65 | #define sectNFErr -81 /* can't find sector */ | ||
66 | #define seekErr -80 /* drive error during seek */ | ||
67 | #define spdAdjErr -79 /* can't set drive speed */ | ||
68 | #define twoSideErr -78 /* drive is single-sided */ | ||
69 | #define initIWMErr -77 /* error during initialization */ | ||
70 | #define tk0badErr -76 /* track zero is bad */ | ||
71 | #define cantStepErr -75 /* drive error during step */ | ||
72 | #define wrUnderrun -74 /* write underrun occurred */ | ||
73 | #define badDBtSlp -73 /* bad data bitslip marks */ | ||
74 | #define badDCksum -72 /* bad data checksum */ | ||
75 | #define noDtaMkErr -71 /* can't find data mark */ | ||
76 | #define badBtSlpErr -70 /* bad address bitslip marks */ | ||
77 | #define badCksmErr -69 /* bad address-mark checksum */ | ||
78 | #define dataVerErr -68 /* read-verify failed */ | ||
79 | #define noAdrMkErr -67 /* can't find an address mark */ | ||
80 | #define noNybErr -66 /* no nybbles? disk is probably degaussed */ | ||
81 | #define offLinErr -65 /* no disk in drive */ | ||
82 | #define noDriveErr -64 /* drive isn't connected */ | ||
83 | #define nsDrvErr -56 /* no such drive */ | ||
84 | #define paramErr -50 /* bad positioning information */ | ||
85 | #define wPrErr -44 /* write protected */ | ||
86 | #define openErr -23 /* already initialized */ | ||
87 | |||
88 | #ifndef __ASSEMBLY__ | ||
89 | |||
90 | struct swim_drvstatus { | ||
91 | __u16 curr_track; /* Current track number */ | ||
92 | __u8 write_prot; /* 0x80 if disk is write protected */ | ||
93 | __u8 disk_in_drive; /* 0x01 or 0x02 if a disk is in the drive */ | ||
94 | __u8 installed; /* 0x01 if drive installed, 0xFF if not */ | ||
95 | __u8 num_sides; /* 0x80 if two-sided format supported */ | ||
96 | __u8 two_sided; /* 0xff if two-sided format diskette */ | ||
97 | __u8 new_interface; /* 0x00 if old 400K drive, 0xFF if newer */ | ||
98 | __u16 errors; /* Disk error count */ | ||
99 | struct { /* 32 bits */ | ||
100 | __u16 reserved; | ||
101 | __u16 :4; | ||
102 | __u16 external:1; /* Drive is external */ | ||
103 | __u16 scsi:1; /* Drive is a SCSI drive */ | ||
104 | __u16 fixed:1; /* Drive has fixed media */ | ||
105 | __u16 secondary:1; /* Drive is secondary drive */ | ||
106 | __u8 type; /* Drive type */ | ||
107 | } info; | ||
108 | __u8 mfm_drive; /* 0xFF if this is an FDHD drive */ | ||
109 | __u8 mfm_disk; /* 0xFF if 720K/1440K (MFM) disk */ | ||
110 | __u8 mfm_format; /* 0x00 if 720K, 0xFF if 1440K */ | ||
111 | __u8 ctlr_type; /* 0x00 if IWM, 0xFF if SWIM */ | ||
112 | __u16 curr_format; /* Current format type */ | ||
113 | __u16 allowed_fmt; /* Allowed format types */ | ||
114 | __u32 num_blocks; /* Number of blocks on disk */ | ||
115 | __u8 icon_flags; /* Icon flags */ | ||
116 | __u8 unusued; | ||
117 | }; | ||
118 | |||
119 | /* Commands issued from the host to the IOP: */ | ||
120 | |||
121 | struct swimcmd_init { | ||
122 | __u8 code; /* CMD_INIT */ | ||
123 | __u8 unusued; | ||
124 | __u16 error; | ||
125 | __u8 drives[28]; /* drive type list */ | ||
126 | }; | ||
127 | |||
128 | struct swimcmd_startpoll { | ||
129 | __u8 code; /* CMD_START_POLL */ | ||
130 | __u8 unusued; | ||
131 | __u16 error; | ||
132 | }; | ||
133 | |||
134 | struct swimcmd_sethfstag { | ||
135 | __u8 code; /* CMD_SETHFSTAG */ | ||
136 | __u8 unusued; | ||
137 | __u16 error; | ||
138 | caddr_t tagbuf; /* HFS tag buffer address */ | ||
139 | }; | ||
140 | |||
141 | struct swimcmd_status { | ||
142 | __u8 code; /* CMD_STATUS */ | ||
143 | __u8 drive_num; | ||
144 | __u16 error; | ||
145 | struct swim_drvstatus status; | ||
146 | }; | ||
147 | |||
148 | struct swimcmd_eject { | ||
149 | __u8 code; /* CMD_EJECT */ | ||
150 | __u8 drive_num; | ||
151 | __u16 error; | ||
152 | struct swim_drvstatus status; | ||
153 | }; | ||
154 | |||
155 | struct swimcmd_format { | ||
156 | __u8 code; /* CMD_FORMAT */ | ||
157 | __u8 drive_num; | ||
158 | __u16 error; | ||
159 | union { | ||
160 | struct { | ||
161 | __u16 fmt; /* format kind */ | ||
162 | __u8 hdrbyte; /* fmt byte for hdr (0=default) */ | ||
163 | __u8 interleave; /* interleave (0 = default) */ | ||
164 | caddr_t databuf; /* sector data buff (0=default */ | ||
165 | caddr_t tagbuf; /* tag data buffer (0=default) */ | ||
166 | } f; | ||
167 | struct swim_drvstatus status; | ||
168 | } p; | ||
169 | }; | ||
170 | |||
171 | struct swimcmd_fmtverify { | ||
172 | __u8 code; /* CMD_FORMAT_VERIFY */ | ||
173 | __u8 drive_num; | ||
174 | __u16 error; | ||
175 | }; | ||
176 | |||
177 | struct swimcmd_rw { | ||
178 | __u8 code; /* CMD_READ, CMD_WRITE or CMD_READ_VERIFY */ | ||
179 | __u8 drive_num; | ||
180 | __u16 error; | ||
181 | caddr_t buffer; /* R/W buffer address */ | ||
182 | __u32 first_block; /* Starting block */ | ||
183 | __u32 num_blocks; /* Number of blocks */ | ||
184 | __u8 tag[12]; /* tag data */ | ||
185 | }; | ||
186 | |||
187 | struct swimcmd_cachectl { | ||
188 | __u8 code; /* CMD_CACHE_CTRL */ | ||
189 | __u8 unused; | ||
190 | __u16 error; | ||
191 | __u8 enable; /* Nonzero to enable cache */ | ||
192 | __u8 install; /* +1 = install, -1 = remove, 0 = neither */ | ||
193 | }; | ||
194 | |||
195 | struct swimcmd_tagbufctl { | ||
196 | __u8 code; /* CMD_TAGBUFF_CTRL */ | ||
197 | __u8 unused; | ||
198 | __u16 error; | ||
199 | caddr_t buf; /* buffer address or 0 to disable */ | ||
200 | }; | ||
201 | |||
202 | struct swimcmd_geticon { | ||
203 | __u8 code; /* CMD_GET_ICON */ | ||
204 | __u8 drive_num; | ||
205 | __u16 error; | ||
206 | caddr_t buffer; /* Nuffer address */ | ||
207 | __u16 kind; /* 0 = media icon, 1 = drive icon */ | ||
208 | __u16 unused; | ||
209 | __u16 max_bytes; /* maximum byte count */ | ||
210 | }; | ||
211 | |||
212 | /* Messages from the SWIM IOP to the host CPU: */ | ||
213 | |||
214 | struct swimmsg_status { | ||
215 | __u8 code; /* 1 = insert, 2 = eject, 3 = status changed */ | ||
216 | __u8 drive_num; | ||
217 | __u16 error; | ||
218 | struct swim_drvstatus status; | ||
219 | }; | ||
220 | |||
221 | #endif /* __ASSEMBLY__ */ | ||
diff --git a/include/asm-m68knommu/cacheflush.h b/include/asm-m68knommu/cacheflush.h index c3aadf3b0d88..163dcb1a9689 100644 --- a/include/asm-m68knommu/cacheflush.h +++ b/include/asm-m68knommu/cacheflush.h | |||
@@ -8,6 +8,7 @@ | |||
8 | 8 | ||
9 | #define flush_cache_all() __flush_cache_all() | 9 | #define flush_cache_all() __flush_cache_all() |
10 | #define flush_cache_mm(mm) do { } while (0) | 10 | #define flush_cache_mm(mm) do { } while (0) |
11 | #define flush_cache_dup_mm(mm) do { } while (0) | ||
11 | #define flush_cache_range(vma, start, end) __flush_cache_all() | 12 | #define flush_cache_range(vma, start, end) __flush_cache_all() |
12 | #define flush_cache_page(vma, vmaddr) do { } while (0) | 13 | #define flush_cache_page(vma, vmaddr) do { } while (0) |
13 | #define flush_dcache_range(start,len) __flush_cache_all() | 14 | #define flush_dcache_range(start,len) __flush_cache_all() |
diff --git a/include/asm-mips/cacheflush.h b/include/asm-mips/cacheflush.h index e3c9925876a3..0ddada3bb0b6 100644 --- a/include/asm-mips/cacheflush.h +++ b/include/asm-mips/cacheflush.h | |||
@@ -17,6 +17,7 @@ | |||
17 | * | 17 | * |
18 | * - flush_cache_all() flushes entire cache | 18 | * - flush_cache_all() flushes entire cache |
19 | * - flush_cache_mm(mm) flushes the specified mm context's cache lines | 19 | * - flush_cache_mm(mm) flushes the specified mm context's cache lines |
20 | * - flush_cache_dup mm(mm) handles cache flushing when forking | ||
20 | * - flush_cache_page(mm, vmaddr, pfn) flushes a single page | 21 | * - flush_cache_page(mm, vmaddr, pfn) flushes a single page |
21 | * - flush_cache_range(vma, start, end) flushes a range of pages | 22 | * - flush_cache_range(vma, start, end) flushes a range of pages |
22 | * - flush_icache_range(start, end) flush a range of instructions | 23 | * - flush_icache_range(start, end) flush a range of instructions |
@@ -31,6 +32,7 @@ | |||
31 | extern void (*flush_cache_all)(void); | 32 | extern void (*flush_cache_all)(void); |
32 | extern void (*__flush_cache_all)(void); | 33 | extern void (*__flush_cache_all)(void); |
33 | extern void (*flush_cache_mm)(struct mm_struct *mm); | 34 | extern void (*flush_cache_mm)(struct mm_struct *mm); |
35 | #define flush_cache_dup_mm(mm) do { (void) (mm); } while (0) | ||
34 | extern void (*flush_cache_range)(struct vm_area_struct *vma, | 36 | extern void (*flush_cache_range)(struct vm_area_struct *vma, |
35 | unsigned long start, unsigned long end); | 37 | unsigned long start, unsigned long end); |
36 | extern void (*flush_cache_page)(struct vm_area_struct *vma, unsigned long page, unsigned long pfn); | 38 | extern void (*flush_cache_page)(struct vm_area_struct *vma, unsigned long page, unsigned long pfn); |
diff --git a/include/asm-mips/page.h b/include/asm-mips/page.h index 0dc1a45c27ed..2f9e1a9ec51f 100644 --- a/include/asm-mips/page.h +++ b/include/asm-mips/page.h | |||
@@ -35,7 +35,6 @@ | |||
35 | #ifndef __ASSEMBLY__ | 35 | #ifndef __ASSEMBLY__ |
36 | 36 | ||
37 | #include <linux/pfn.h> | 37 | #include <linux/pfn.h> |
38 | #include <asm/cpu-features.h> | ||
39 | #include <asm/io.h> | 38 | #include <asm/io.h> |
40 | 39 | ||
41 | extern void clear_page(void * page); | 40 | extern void clear_page(void * page); |
@@ -61,16 +60,13 @@ static inline void clear_user_page(void *addr, unsigned long vaddr, | |||
61 | flush_data_cache_page((unsigned long)addr); | 60 | flush_data_cache_page((unsigned long)addr); |
62 | } | 61 | } |
63 | 62 | ||
64 | static inline void copy_user_page(void *vto, void *vfrom, unsigned long vaddr, | 63 | extern void copy_user_page(void *vto, void *vfrom, unsigned long vaddr, |
65 | struct page *to) | 64 | struct page *to); |
66 | { | 65 | struct vm_area_struct; |
67 | extern void (*flush_data_cache_page)(unsigned long addr); | 66 | extern void copy_user_highpage(struct page *to, struct page *from, |
67 | unsigned long vaddr, struct vm_area_struct *vma); | ||
68 | 68 | ||
69 | copy_page(vto, vfrom); | 69 | #define __HAVE_ARCH_COPY_USER_HIGHPAGE |
70 | if (!cpu_has_ic_fills_f_dc || | ||
71 | pages_do_alias((unsigned long)vto, vaddr & PAGE_MASK)) | ||
72 | flush_data_cache_page((unsigned long)vto); | ||
73 | } | ||
74 | 70 | ||
75 | /* | 71 | /* |
76 | * These are used to make use of C type-checking.. | 72 | * These are used to make use of C type-checking.. |
diff --git a/include/asm-parisc/cacheflush.h b/include/asm-parisc/cacheflush.h index 2bc41f2e0271..aedb0512cb04 100644 --- a/include/asm-parisc/cacheflush.h +++ b/include/asm-parisc/cacheflush.h | |||
@@ -15,6 +15,8 @@ | |||
15 | #define flush_cache_mm(mm) flush_cache_all_local() | 15 | #define flush_cache_mm(mm) flush_cache_all_local() |
16 | #endif | 16 | #endif |
17 | 17 | ||
18 | #define flush_cache_dup_mm(mm) flush_cache_mm(mm) | ||
19 | |||
18 | #define flush_kernel_dcache_range(start,size) \ | 20 | #define flush_kernel_dcache_range(start,size) \ |
19 | flush_kernel_dcache_range_asm((start), (start)+(size)); | 21 | flush_kernel_dcache_range_asm((start), (start)+(size)); |
20 | 22 | ||
diff --git a/include/asm-powerpc/cacheflush.h b/include/asm-powerpc/cacheflush.h index 8a740c88d93d..08e93e789219 100644 --- a/include/asm-powerpc/cacheflush.h +++ b/include/asm-powerpc/cacheflush.h | |||
@@ -18,6 +18,7 @@ | |||
18 | */ | 18 | */ |
19 | #define flush_cache_all() do { } while (0) | 19 | #define flush_cache_all() do { } while (0) |
20 | #define flush_cache_mm(mm) do { } while (0) | 20 | #define flush_cache_mm(mm) do { } while (0) |
21 | #define flush_cache_dup_mm(mm) do { } while (0) | ||
21 | #define flush_cache_range(vma, start, end) do { } while (0) | 22 | #define flush_cache_range(vma, start, end) do { } while (0) |
22 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) | 23 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) |
23 | #define flush_icache_page(vma, page) do { } while (0) | 24 | #define flush_icache_page(vma, page) do { } while (0) |
diff --git a/include/asm-powerpc/thread_info.h b/include/asm-powerpc/thread_info.h index d339e2e88b11..3f32ca8bfec9 100644 --- a/include/asm-powerpc/thread_info.h +++ b/include/asm-powerpc/thread_info.h | |||
@@ -122,6 +122,7 @@ static inline struct thread_info *current_thread_info(void) | |||
122 | #define TIF_RESTOREALL 12 /* Restore all regs (implies NOERROR) */ | 122 | #define TIF_RESTOREALL 12 /* Restore all regs (implies NOERROR) */ |
123 | #define TIF_NOERROR 14 /* Force successful syscall return */ | 123 | #define TIF_NOERROR 14 /* Force successful syscall return */ |
124 | #define TIF_RESTORE_SIGMASK 15 /* Restore signal mask in do_signal */ | 124 | #define TIF_RESTORE_SIGMASK 15 /* Restore signal mask in do_signal */ |
125 | #define TIF_FREEZE 16 /* Freezing for suspend */ | ||
125 | 126 | ||
126 | /* as above, but as bit values */ | 127 | /* as above, but as bit values */ |
127 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) | 128 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) |
@@ -138,6 +139,7 @@ static inline struct thread_info *current_thread_info(void) | |||
138 | #define _TIF_RESTOREALL (1<<TIF_RESTOREALL) | 139 | #define _TIF_RESTOREALL (1<<TIF_RESTOREALL) |
139 | #define _TIF_NOERROR (1<<TIF_NOERROR) | 140 | #define _TIF_NOERROR (1<<TIF_NOERROR) |
140 | #define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) | 141 | #define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) |
142 | #define _TIF_FREEZE (1<<TIF_FREEZE) | ||
141 | #define _TIF_SYSCALL_T_OR_A (_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP) | 143 | #define _TIF_SYSCALL_T_OR_A (_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP) |
142 | 144 | ||
143 | #define _TIF_USER_WORK_MASK (_TIF_NOTIFY_RESUME | _TIF_SIGPENDING | \ | 145 | #define _TIF_USER_WORK_MASK (_TIF_NOTIFY_RESUME | _TIF_SIGPENDING | \ |
diff --git a/include/asm-s390/cacheflush.h b/include/asm-s390/cacheflush.h index e399a8ba2ed7..f7cade8083f3 100644 --- a/include/asm-s390/cacheflush.h +++ b/include/asm-s390/cacheflush.h | |||
@@ -7,6 +7,7 @@ | |||
7 | /* Caches aren't brain-dead on the s390. */ | 7 | /* Caches aren't brain-dead on the s390. */ |
8 | #define flush_cache_all() do { } while (0) | 8 | #define flush_cache_all() do { } while (0) |
9 | #define flush_cache_mm(mm) do { } while (0) | 9 | #define flush_cache_mm(mm) do { } while (0) |
10 | #define flush_cache_dup_mm(mm) do { } while (0) | ||
10 | #define flush_cache_range(vma, start, end) do { } while (0) | 11 | #define flush_cache_range(vma, start, end) do { } while (0) |
11 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) | 12 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) |
12 | #define flush_dcache_page(page) do { } while (0) | 13 | #define flush_dcache_page(page) do { } while (0) |
diff --git a/include/asm-s390/qdio.h b/include/asm-s390/qdio.h index 7189c79bc673..127f72e77419 100644 --- a/include/asm-s390/qdio.h +++ b/include/asm-s390/qdio.h | |||
@@ -34,6 +34,7 @@ | |||
34 | #define QDIO_QETH_QFMT 0 | 34 | #define QDIO_QETH_QFMT 0 |
35 | #define QDIO_ZFCP_QFMT 1 | 35 | #define QDIO_ZFCP_QFMT 1 |
36 | #define QDIO_IQDIO_QFMT 2 | 36 | #define QDIO_IQDIO_QFMT 2 |
37 | #define QDIO_IQDIO_QFMT_ASYNCH 3 | ||
37 | 38 | ||
38 | struct qdio_buffer_element{ | 39 | struct qdio_buffer_element{ |
39 | unsigned int flags; | 40 | unsigned int flags; |
diff --git a/include/asm-s390/reset.h b/include/asm-s390/reset.h index 9b439cf67800..532e65a2aafc 100644 --- a/include/asm-s390/reset.h +++ b/include/asm-s390/reset.h | |||
@@ -19,5 +19,6 @@ extern void register_reset_call(struct reset_call *reset); | |||
19 | extern void unregister_reset_call(struct reset_call *reset); | 19 | extern void unregister_reset_call(struct reset_call *reset); |
20 | extern void s390_reset_system(void); | 20 | extern void s390_reset_system(void); |
21 | extern void (*s390_reset_mcck_handler)(void); | 21 | extern void (*s390_reset_mcck_handler)(void); |
22 | extern void (*s390_reset_pgm_handler)(void); | ||
22 | 23 | ||
23 | #endif /* _ASM_S390_RESET_H */ | 24 | #endif /* _ASM_S390_RESET_H */ |
diff --git a/include/asm-sh/cpu-sh2/cacheflush.h b/include/asm-sh/cpu-sh2/cacheflush.h index f556fa80ea97..2979efb26de3 100644 --- a/include/asm-sh/cpu-sh2/cacheflush.h +++ b/include/asm-sh/cpu-sh2/cacheflush.h | |||
@@ -15,6 +15,7 @@ | |||
15 | * | 15 | * |
16 | * - flush_cache_all() flushes entire cache | 16 | * - flush_cache_all() flushes entire cache |
17 | * - flush_cache_mm(mm) flushes the specified mm context's cache lines | 17 | * - flush_cache_mm(mm) flushes the specified mm context's cache lines |
18 | * - flush_cache_dup mm(mm) handles cache flushing when forking | ||
18 | * - flush_cache_page(mm, vmaddr, pfn) flushes a single page | 19 | * - flush_cache_page(mm, vmaddr, pfn) flushes a single page |
19 | * - flush_cache_range(vma, start, end) flushes a range of pages | 20 | * - flush_cache_range(vma, start, end) flushes a range of pages |
20 | * | 21 | * |
@@ -27,6 +28,7 @@ | |||
27 | */ | 28 | */ |
28 | #define flush_cache_all() do { } while (0) | 29 | #define flush_cache_all() do { } while (0) |
29 | #define flush_cache_mm(mm) do { } while (0) | 30 | #define flush_cache_mm(mm) do { } while (0) |
31 | #define flush_cache_dup_mm(mm) do { } while (0) | ||
30 | #define flush_cache_range(vma, start, end) do { } while (0) | 32 | #define flush_cache_range(vma, start, end) do { } while (0) |
31 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) | 33 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) |
32 | #define flush_dcache_page(page) do { } while (0) | 34 | #define flush_dcache_page(page) do { } while (0) |
diff --git a/include/asm-sh/cpu-sh3/cacheflush.h b/include/asm-sh/cpu-sh3/cacheflush.h index 03fde97a7fd0..f70d8ef76a15 100644 --- a/include/asm-sh/cpu-sh3/cacheflush.h +++ b/include/asm-sh/cpu-sh3/cacheflush.h | |||
@@ -15,6 +15,7 @@ | |||
15 | * | 15 | * |
16 | * - flush_cache_all() flushes entire cache | 16 | * - flush_cache_all() flushes entire cache |
17 | * - flush_cache_mm(mm) flushes the specified mm context's cache lines | 17 | * - flush_cache_mm(mm) flushes the specified mm context's cache lines |
18 | * - flush_cache_dup mm(mm) handles cache flushing when forking | ||
18 | * - flush_cache_page(mm, vmaddr, pfn) flushes a single page | 19 | * - flush_cache_page(mm, vmaddr, pfn) flushes a single page |
19 | * - flush_cache_range(vma, start, end) flushes a range of pages | 20 | * - flush_cache_range(vma, start, end) flushes a range of pages |
20 | * | 21 | * |
@@ -39,6 +40,7 @@ | |||
39 | 40 | ||
40 | void flush_cache_all(void); | 41 | void flush_cache_all(void); |
41 | void flush_cache_mm(struct mm_struct *mm); | 42 | void flush_cache_mm(struct mm_struct *mm); |
43 | #define flush_cache_dup_mm(mm) flush_cache_mm(mm) | ||
42 | void flush_cache_range(struct vm_area_struct *vma, unsigned long start, | 44 | void flush_cache_range(struct vm_area_struct *vma, unsigned long start, |
43 | unsigned long end); | 45 | unsigned long end); |
44 | void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn); | 46 | void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn); |
@@ -48,6 +50,7 @@ void flush_icache_page(struct vm_area_struct *vma, struct page *page); | |||
48 | #else | 50 | #else |
49 | #define flush_cache_all() do { } while (0) | 51 | #define flush_cache_all() do { } while (0) |
50 | #define flush_cache_mm(mm) do { } while (0) | 52 | #define flush_cache_mm(mm) do { } while (0) |
53 | #define flush_cache_dup_mm(mm) do { } while (0) | ||
51 | #define flush_cache_range(vma, start, end) do { } while (0) | 54 | #define flush_cache_range(vma, start, end) do { } while (0) |
52 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) | 55 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) |
53 | #define flush_dcache_page(page) do { } while (0) | 56 | #define flush_dcache_page(page) do { } while (0) |
diff --git a/include/asm-sh/cpu-sh4/cacheflush.h b/include/asm-sh/cpu-sh4/cacheflush.h index 515fd574267c..b01a10f31225 100644 --- a/include/asm-sh/cpu-sh4/cacheflush.h +++ b/include/asm-sh/cpu-sh4/cacheflush.h | |||
@@ -18,6 +18,7 @@ | |||
18 | */ | 18 | */ |
19 | void flush_cache_all(void); | 19 | void flush_cache_all(void); |
20 | void flush_cache_mm(struct mm_struct *mm); | 20 | void flush_cache_mm(struct mm_struct *mm); |
21 | #define flush_cache_dup_mm(mm) flush_cache_mm(mm) | ||
21 | void flush_cache_range(struct vm_area_struct *vma, unsigned long start, | 22 | void flush_cache_range(struct vm_area_struct *vma, unsigned long start, |
22 | unsigned long end); | 23 | unsigned long end); |
23 | void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, | 24 | void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, |
diff --git a/include/asm-sh/thread_info.h b/include/asm-sh/thread_info.h index 0c01dc550819..879f741105db 100644 --- a/include/asm-sh/thread_info.h +++ b/include/asm-sh/thread_info.h | |||
@@ -106,6 +106,7 @@ static inline struct thread_info *current_thread_info(void) | |||
106 | #define TIF_USEDFPU 16 /* FPU was used by this task this quantum (SMP) */ | 106 | #define TIF_USEDFPU 16 /* FPU was used by this task this quantum (SMP) */ |
107 | #define TIF_POLLING_NRFLAG 17 /* true if poll_idle() is polling TIF_NEED_RESCHED */ | 107 | #define TIF_POLLING_NRFLAG 17 /* true if poll_idle() is polling TIF_NEED_RESCHED */ |
108 | #define TIF_MEMDIE 18 | 108 | #define TIF_MEMDIE 18 |
109 | #define TIF_FREEZE 19 | ||
109 | 110 | ||
110 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) | 111 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) |
111 | #define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME) | 112 | #define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME) |
@@ -114,6 +115,7 @@ static inline struct thread_info *current_thread_info(void) | |||
114 | #define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) | 115 | #define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) |
115 | #define _TIF_USEDFPU (1<<TIF_USEDFPU) | 116 | #define _TIF_USEDFPU (1<<TIF_USEDFPU) |
116 | #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) | 117 | #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) |
118 | #define _TIF_FREEZE (1<<TIF_FREEZE) | ||
117 | 119 | ||
118 | #define _TIF_WORK_MASK 0x000000FE /* work to do on interrupt/exception return */ | 120 | #define _TIF_WORK_MASK 0x000000FE /* work to do on interrupt/exception return */ |
119 | #define _TIF_ALLWORK_MASK 0x000000FF /* work to do on any return to u-space */ | 121 | #define _TIF_ALLWORK_MASK 0x000000FF /* work to do on any return to u-space */ |
diff --git a/include/asm-sh64/cacheflush.h b/include/asm-sh64/cacheflush.h index 55f71aa0aa6b..1e53a47bdc97 100644 --- a/include/asm-sh64/cacheflush.h +++ b/include/asm-sh64/cacheflush.h | |||
@@ -21,6 +21,8 @@ extern void flush_icache_user_range(struct vm_area_struct *vma, | |||
21 | struct page *page, unsigned long addr, | 21 | struct page *page, unsigned long addr, |
22 | int len); | 22 | int len); |
23 | 23 | ||
24 | #define flush_cache_dup_mm(mm) flush_cache_mm(mm) | ||
25 | |||
24 | #define flush_dcache_mmap_lock(mapping) do { } while (0) | 26 | #define flush_dcache_mmap_lock(mapping) do { } while (0) |
25 | #define flush_dcache_mmap_unlock(mapping) do { } while (0) | 27 | #define flush_dcache_mmap_unlock(mapping) do { } while (0) |
26 | 28 | ||
diff --git a/include/asm-sh64/pgalloc.h b/include/asm-sh64/pgalloc.h index b29dd468817e..cb803e56cb64 100644 --- a/include/asm-sh64/pgalloc.h +++ b/include/asm-sh64/pgalloc.h | |||
@@ -41,7 +41,7 @@ static inline void pgd_init(unsigned long page) | |||
41 | static inline pgd_t *get_pgd_slow(void) | 41 | static inline pgd_t *get_pgd_slow(void) |
42 | { | 42 | { |
43 | unsigned int pgd_size = (USER_PTRS_PER_PGD * sizeof(pgd_t)); | 43 | unsigned int pgd_size = (USER_PTRS_PER_PGD * sizeof(pgd_t)); |
44 | pgd_t *ret = (pgd_t *)kmalloc(pgd_size, GFP_KERNEL); | 44 | pgd_t *ret = kmalloc(pgd_size, GFP_KERNEL); |
45 | return ret; | 45 | return ret; |
46 | } | 46 | } |
47 | 47 | ||
diff --git a/include/asm-sparc/bitops.h b/include/asm-sparc/bitops.h index 04aa3318f76a..329e696e7751 100644 --- a/include/asm-sparc/bitops.h +++ b/include/asm-sparc/bitops.h | |||
@@ -14,6 +14,10 @@ | |||
14 | 14 | ||
15 | #ifdef __KERNEL__ | 15 | #ifdef __KERNEL__ |
16 | 16 | ||
17 | extern unsigned long ___set_bit(unsigned long *addr, unsigned long mask); | ||
18 | extern unsigned long ___clear_bit(unsigned long *addr, unsigned long mask); | ||
19 | extern unsigned long ___change_bit(unsigned long *addr, unsigned long mask); | ||
20 | |||
17 | /* | 21 | /* |
18 | * Set bit 'nr' in 32-bit quantity at address 'addr' where bit '0' | 22 | * Set bit 'nr' in 32-bit quantity at address 'addr' where bit '0' |
19 | * is in the highest of the four bytes and bit '31' is the high bit | 23 | * is in the highest of the four bytes and bit '31' is the high bit |
@@ -22,134 +26,62 @@ | |||
22 | */ | 26 | */ |
23 | static inline int test_and_set_bit(unsigned long nr, volatile unsigned long *addr) | 27 | static inline int test_and_set_bit(unsigned long nr, volatile unsigned long *addr) |
24 | { | 28 | { |
25 | register unsigned long mask asm("g2"); | 29 | unsigned long *ADDR, mask; |
26 | register unsigned long *ADDR asm("g1"); | ||
27 | register int tmp1 asm("g3"); | ||
28 | register int tmp2 asm("g4"); | ||
29 | register int tmp3 asm("g5"); | ||
30 | register int tmp4 asm("g7"); | ||
31 | 30 | ||
32 | ADDR = ((unsigned long *) addr) + (nr >> 5); | 31 | ADDR = ((unsigned long *) addr) + (nr >> 5); |
33 | mask = 1 << (nr & 31); | 32 | mask = 1 << (nr & 31); |
34 | 33 | ||
35 | __asm__ __volatile__( | 34 | return ___set_bit(ADDR, mask) != 0; |
36 | "mov %%o7, %%g4\n\t" | ||
37 | "call ___set_bit\n\t" | ||
38 | " add %%o7, 8, %%o7\n" | ||
39 | : "=&r" (mask), "=r" (tmp1), "=r" (tmp2), "=r" (tmp3), "=r" (tmp4) | ||
40 | : "0" (mask), "r" (ADDR) | ||
41 | : "memory", "cc"); | ||
42 | |||
43 | return mask != 0; | ||
44 | } | 35 | } |
45 | 36 | ||
46 | static inline void set_bit(unsigned long nr, volatile unsigned long *addr) | 37 | static inline void set_bit(unsigned long nr, volatile unsigned long *addr) |
47 | { | 38 | { |
48 | register unsigned long mask asm("g2"); | 39 | unsigned long *ADDR, mask; |
49 | register unsigned long *ADDR asm("g1"); | ||
50 | register int tmp1 asm("g3"); | ||
51 | register int tmp2 asm("g4"); | ||
52 | register int tmp3 asm("g5"); | ||
53 | register int tmp4 asm("g7"); | ||
54 | 40 | ||
55 | ADDR = ((unsigned long *) addr) + (nr >> 5); | 41 | ADDR = ((unsigned long *) addr) + (nr >> 5); |
56 | mask = 1 << (nr & 31); | 42 | mask = 1 << (nr & 31); |
57 | 43 | ||
58 | __asm__ __volatile__( | 44 | (void) ___set_bit(ADDR, mask); |
59 | "mov %%o7, %%g4\n\t" | ||
60 | "call ___set_bit\n\t" | ||
61 | " add %%o7, 8, %%o7\n" | ||
62 | : "=&r" (mask), "=r" (tmp1), "=r" (tmp2), "=r" (tmp3), "=r" (tmp4) | ||
63 | : "0" (mask), "r" (ADDR) | ||
64 | : "memory", "cc"); | ||
65 | } | 45 | } |
66 | 46 | ||
67 | static inline int test_and_clear_bit(unsigned long nr, volatile unsigned long *addr) | 47 | static inline int test_and_clear_bit(unsigned long nr, volatile unsigned long *addr) |
68 | { | 48 | { |
69 | register unsigned long mask asm("g2"); | 49 | unsigned long *ADDR, mask; |
70 | register unsigned long *ADDR asm("g1"); | ||
71 | register int tmp1 asm("g3"); | ||
72 | register int tmp2 asm("g4"); | ||
73 | register int tmp3 asm("g5"); | ||
74 | register int tmp4 asm("g7"); | ||
75 | 50 | ||
76 | ADDR = ((unsigned long *) addr) + (nr >> 5); | 51 | ADDR = ((unsigned long *) addr) + (nr >> 5); |
77 | mask = 1 << (nr & 31); | 52 | mask = 1 << (nr & 31); |
78 | 53 | ||
79 | __asm__ __volatile__( | 54 | return ___clear_bit(ADDR, mask) != 0; |
80 | "mov %%o7, %%g4\n\t" | ||
81 | "call ___clear_bit\n\t" | ||
82 | " add %%o7, 8, %%o7\n" | ||
83 | : "=&r" (mask), "=r" (tmp1), "=r" (tmp2), "=r" (tmp3), "=r" (tmp4) | ||
84 | : "0" (mask), "r" (ADDR) | ||
85 | : "memory", "cc"); | ||
86 | |||
87 | return mask != 0; | ||
88 | } | 55 | } |
89 | 56 | ||
90 | static inline void clear_bit(unsigned long nr, volatile unsigned long *addr) | 57 | static inline void clear_bit(unsigned long nr, volatile unsigned long *addr) |
91 | { | 58 | { |
92 | register unsigned long mask asm("g2"); | 59 | unsigned long *ADDR, mask; |
93 | register unsigned long *ADDR asm("g1"); | ||
94 | register int tmp1 asm("g3"); | ||
95 | register int tmp2 asm("g4"); | ||
96 | register int tmp3 asm("g5"); | ||
97 | register int tmp4 asm("g7"); | ||
98 | 60 | ||
99 | ADDR = ((unsigned long *) addr) + (nr >> 5); | 61 | ADDR = ((unsigned long *) addr) + (nr >> 5); |
100 | mask = 1 << (nr & 31); | 62 | mask = 1 << (nr & 31); |
101 | 63 | ||
102 | __asm__ __volatile__( | 64 | (void) ___clear_bit(ADDR, mask); |
103 | "mov %%o7, %%g4\n\t" | ||
104 | "call ___clear_bit\n\t" | ||
105 | " add %%o7, 8, %%o7\n" | ||
106 | : "=&r" (mask), "=r" (tmp1), "=r" (tmp2), "=r" (tmp3), "=r" (tmp4) | ||
107 | : "0" (mask), "r" (ADDR) | ||
108 | : "memory", "cc"); | ||
109 | } | 65 | } |
110 | 66 | ||
111 | static inline int test_and_change_bit(unsigned long nr, volatile unsigned long *addr) | 67 | static inline int test_and_change_bit(unsigned long nr, volatile unsigned long *addr) |
112 | { | 68 | { |
113 | register unsigned long mask asm("g2"); | 69 | unsigned long *ADDR, mask; |
114 | register unsigned long *ADDR asm("g1"); | ||
115 | register int tmp1 asm("g3"); | ||
116 | register int tmp2 asm("g4"); | ||
117 | register int tmp3 asm("g5"); | ||
118 | register int tmp4 asm("g7"); | ||
119 | 70 | ||
120 | ADDR = ((unsigned long *) addr) + (nr >> 5); | 71 | ADDR = ((unsigned long *) addr) + (nr >> 5); |
121 | mask = 1 << (nr & 31); | 72 | mask = 1 << (nr & 31); |
122 | 73 | ||
123 | __asm__ __volatile__( | 74 | return ___change_bit(ADDR, mask) != 0; |
124 | "mov %%o7, %%g4\n\t" | ||
125 | "call ___change_bit\n\t" | ||
126 | " add %%o7, 8, %%o7\n" | ||
127 | : "=&r" (mask), "=r" (tmp1), "=r" (tmp2), "=r" (tmp3), "=r" (tmp4) | ||
128 | : "0" (mask), "r" (ADDR) | ||
129 | : "memory", "cc"); | ||
130 | |||
131 | return mask != 0; | ||
132 | } | 75 | } |
133 | 76 | ||
134 | static inline void change_bit(unsigned long nr, volatile unsigned long *addr) | 77 | static inline void change_bit(unsigned long nr, volatile unsigned long *addr) |
135 | { | 78 | { |
136 | register unsigned long mask asm("g2"); | 79 | unsigned long *ADDR, mask; |
137 | register unsigned long *ADDR asm("g1"); | ||
138 | register int tmp1 asm("g3"); | ||
139 | register int tmp2 asm("g4"); | ||
140 | register int tmp3 asm("g5"); | ||
141 | register int tmp4 asm("g7"); | ||
142 | 80 | ||
143 | ADDR = ((unsigned long *) addr) + (nr >> 5); | 81 | ADDR = ((unsigned long *) addr) + (nr >> 5); |
144 | mask = 1 << (nr & 31); | 82 | mask = 1 << (nr & 31); |
145 | 83 | ||
146 | __asm__ __volatile__( | 84 | (void) ___change_bit(ADDR, mask); |
147 | "mov %%o7, %%g4\n\t" | ||
148 | "call ___change_bit\n\t" | ||
149 | " add %%o7, 8, %%o7\n" | ||
150 | : "=&r" (mask), "=r" (tmp1), "=r" (tmp2), "=r" (tmp3), "=r" (tmp4) | ||
151 | : "0" (mask), "r" (ADDR) | ||
152 | : "memory", "cc"); | ||
153 | } | 85 | } |
154 | 86 | ||
155 | #include <asm-generic/bitops/non-atomic.h> | 87 | #include <asm-generic/bitops/non-atomic.h> |
diff --git a/include/asm-sparc/cacheflush.h b/include/asm-sparc/cacheflush.h index fc632f811cd8..68ac10910271 100644 --- a/include/asm-sparc/cacheflush.h +++ b/include/asm-sparc/cacheflush.h | |||
@@ -48,6 +48,7 @@ BTFIXUPDEF_CALL(void, flush_cache_page, struct vm_area_struct *, unsigned long) | |||
48 | 48 | ||
49 | #define flush_cache_all() BTFIXUP_CALL(flush_cache_all)() | 49 | #define flush_cache_all() BTFIXUP_CALL(flush_cache_all)() |
50 | #define flush_cache_mm(mm) BTFIXUP_CALL(flush_cache_mm)(mm) | 50 | #define flush_cache_mm(mm) BTFIXUP_CALL(flush_cache_mm)(mm) |
51 | #define flush_cache_dup_mm(mm) BTFIXUP_CALL(flush_cache_mm)(mm) | ||
51 | #define flush_cache_range(vma,start,end) BTFIXUP_CALL(flush_cache_range)(vma,start,end) | 52 | #define flush_cache_range(vma,start,end) BTFIXUP_CALL(flush_cache_range)(vma,start,end) |
52 | #define flush_cache_page(vma,addr,pfn) BTFIXUP_CALL(flush_cache_page)(vma,addr) | 53 | #define flush_cache_page(vma,addr,pfn) BTFIXUP_CALL(flush_cache_page)(vma,addr) |
53 | #define flush_icache_range(start, end) do { } while (0) | 54 | #define flush_icache_range(start, end) do { } while (0) |
diff --git a/include/asm-sparc64/cacheflush.h b/include/asm-sparc64/cacheflush.h index 745d1ab60371..122e4058dd9e 100644 --- a/include/asm-sparc64/cacheflush.h +++ b/include/asm-sparc64/cacheflush.h | |||
@@ -12,6 +12,7 @@ | |||
12 | /* These are the same regardless of whether this is an SMP kernel or not. */ | 12 | /* These are the same regardless of whether this is an SMP kernel or not. */ |
13 | #define flush_cache_mm(__mm) \ | 13 | #define flush_cache_mm(__mm) \ |
14 | do { if ((__mm) == current->mm) flushw_user(); } while(0) | 14 | do { if ((__mm) == current->mm) flushw_user(); } while(0) |
15 | #define flush_cache_dup_mm(mm) flush_cache_mm(mm) | ||
15 | #define flush_cache_range(vma, start, end) \ | 16 | #define flush_cache_range(vma, start, end) \ |
16 | flush_cache_mm((vma)->vm_mm) | 17 | flush_cache_mm((vma)->vm_mm) |
17 | #define flush_cache_page(vma, page, pfn) \ | 18 | #define flush_cache_page(vma, page, pfn) \ |
diff --git a/include/asm-sparc64/hw_irq.h b/include/asm-sparc64/hw_irq.h index 599b3b073450..8e44a8360829 100644 --- a/include/asm-sparc64/hw_irq.h +++ b/include/asm-sparc64/hw_irq.h | |||
@@ -1,6 +1,4 @@ | |||
1 | #ifndef __ASM_SPARC64_HW_IRQ_H | 1 | #ifndef __ASM_SPARC64_HW_IRQ_H |
2 | #define __ASM_SPARC64_HW_IRQ_H | 2 | #define __ASM_SPARC64_HW_IRQ_H |
3 | 3 | ||
4 | extern void hw_resend_irq(struct hw_interrupt_type *handler, unsigned int virt_irq); | ||
5 | |||
6 | #endif | 4 | #endif |
diff --git a/include/asm-sparc64/percpu.h b/include/asm-sparc64/percpu.h index ced8cbde046d..0d3df76aa47f 100644 --- a/include/asm-sparc64/percpu.h +++ b/include/asm-sparc64/percpu.h | |||
@@ -5,6 +5,16 @@ | |||
5 | 5 | ||
6 | #ifdef CONFIG_SMP | 6 | #ifdef CONFIG_SMP |
7 | 7 | ||
8 | #ifdef CONFIG_MODULES | ||
9 | # define PERCPU_MODULE_RESERVE 8192 | ||
10 | #else | ||
11 | # define PERCPU_MODULE_RESERVE 0 | ||
12 | #endif | ||
13 | |||
14 | #define PERCPU_ENOUGH_ROOM \ | ||
15 | (ALIGN(__per_cpu_end - __per_cpu_start, SMP_CACHE_BYTES) + \ | ||
16 | PERCPU_MODULE_RESERVE) | ||
17 | |||
8 | extern void setup_per_cpu_areas(void); | 18 | extern void setup_per_cpu_areas(void); |
9 | 19 | ||
10 | extern unsigned long __per_cpu_base; | 20 | extern unsigned long __per_cpu_base; |
diff --git a/include/asm-v850/cacheflush.h b/include/asm-v850/cacheflush.h index e1a87f82f1a4..9ece05a202ef 100644 --- a/include/asm-v850/cacheflush.h +++ b/include/asm-v850/cacheflush.h | |||
@@ -24,6 +24,7 @@ | |||
24 | systems with MMUs, so we don't need them. */ | 24 | systems with MMUs, so we don't need them. */ |
25 | #define flush_cache_all() ((void)0) | 25 | #define flush_cache_all() ((void)0) |
26 | #define flush_cache_mm(mm) ((void)0) | 26 | #define flush_cache_mm(mm) ((void)0) |
27 | #define flush_cache_dup_mm(mm) ((void)0) | ||
27 | #define flush_cache_range(vma, start, end) ((void)0) | 28 | #define flush_cache_range(vma, start, end) ((void)0) |
28 | #define flush_cache_page(vma, vmaddr, pfn) ((void)0) | 29 | #define flush_cache_page(vma, vmaddr, pfn) ((void)0) |
29 | #define flush_dcache_page(page) ((void)0) | 30 | #define flush_dcache_page(page) ((void)0) |
diff --git a/include/asm-x86_64/cacheflush.h b/include/asm-x86_64/cacheflush.h index d32f7f58752a..ab1cb5c7dc92 100644 --- a/include/asm-x86_64/cacheflush.h +++ b/include/asm-x86_64/cacheflush.h | |||
@@ -7,6 +7,7 @@ | |||
7 | /* Caches aren't brain-dead on the intel. */ | 7 | /* Caches aren't brain-dead on the intel. */ |
8 | #define flush_cache_all() do { } while (0) | 8 | #define flush_cache_all() do { } while (0) |
9 | #define flush_cache_mm(mm) do { } while (0) | 9 | #define flush_cache_mm(mm) do { } while (0) |
10 | #define flush_cache_dup_mm(mm) do { } while (0) | ||
10 | #define flush_cache_range(vma, start, end) do { } while (0) | 11 | #define flush_cache_range(vma, start, end) do { } while (0) |
11 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) | 12 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) |
12 | #define flush_dcache_page(page) do { } while (0) | 13 | #define flush_dcache_page(page) do { } while (0) |
diff --git a/include/asm-x86_64/thread_info.h b/include/asm-x86_64/thread_info.h index 787a08114b48..74a6c74397f7 100644 --- a/include/asm-x86_64/thread_info.h +++ b/include/asm-x86_64/thread_info.h | |||
@@ -122,6 +122,7 @@ static inline struct thread_info *stack_thread_info(void) | |||
122 | #define TIF_MEMDIE 20 | 122 | #define TIF_MEMDIE 20 |
123 | #define TIF_DEBUG 21 /* uses debug registers */ | 123 | #define TIF_DEBUG 21 /* uses debug registers */ |
124 | #define TIF_IO_BITMAP 22 /* uses I/O bitmap */ | 124 | #define TIF_IO_BITMAP 22 /* uses I/O bitmap */ |
125 | #define TIF_FREEZE 23 /* is freezing for suspend */ | ||
125 | 126 | ||
126 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) | 127 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) |
127 | #define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME) | 128 | #define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME) |
@@ -137,6 +138,7 @@ static inline struct thread_info *stack_thread_info(void) | |||
137 | #define _TIF_ABI_PENDING (1<<TIF_ABI_PENDING) | 138 | #define _TIF_ABI_PENDING (1<<TIF_ABI_PENDING) |
138 | #define _TIF_DEBUG (1<<TIF_DEBUG) | 139 | #define _TIF_DEBUG (1<<TIF_DEBUG) |
139 | #define _TIF_IO_BITMAP (1<<TIF_IO_BITMAP) | 140 | #define _TIF_IO_BITMAP (1<<TIF_IO_BITMAP) |
141 | #define _TIF_FREEZE (1<<TIF_FREEZE) | ||
140 | 142 | ||
141 | /* work to do on interrupt/exception return */ | 143 | /* work to do on interrupt/exception return */ |
142 | #define _TIF_WORK_MASK \ | 144 | #define _TIF_WORK_MASK \ |
diff --git a/include/asm-x86_64/unwind.h b/include/asm-x86_64/unwind.h index 2f6349e48717..02710f6a4560 100644 --- a/include/asm-x86_64/unwind.h +++ b/include/asm-x86_64/unwind.h | |||
@@ -1,100 +1,6 @@ | |||
1 | #ifndef _ASM_X86_64_UNWIND_H | 1 | #ifndef _ASM_X86_64_UNWIND_H |
2 | #define _ASM_X86_64_UNWIND_H | 2 | #define _ASM_X86_64_UNWIND_H |
3 | 3 | ||
4 | /* | ||
5 | * Copyright (C) 2002-2006 Novell, Inc. | ||
6 | * Jan Beulich <jbeulich@novell.com> | ||
7 | * This code is released under version 2 of the GNU GPL. | ||
8 | */ | ||
9 | |||
10 | #ifdef CONFIG_STACK_UNWIND | ||
11 | |||
12 | #include <linux/sched.h> | ||
13 | #include <asm/ptrace.h> | ||
14 | #include <asm/uaccess.h> | ||
15 | #include <asm/vsyscall.h> | ||
16 | |||
17 | struct unwind_frame_info | ||
18 | { | ||
19 | struct pt_regs regs; | ||
20 | struct task_struct *task; | ||
21 | unsigned call_frame:1; | ||
22 | }; | ||
23 | |||
24 | #define UNW_PC(frame) (frame)->regs.rip | ||
25 | #define UNW_SP(frame) (frame)->regs.rsp | ||
26 | #ifdef CONFIG_FRAME_POINTER | ||
27 | #define UNW_FP(frame) (frame)->regs.rbp | ||
28 | #define FRAME_RETADDR_OFFSET 8 | ||
29 | #define FRAME_LINK_OFFSET 0 | ||
30 | #define STACK_BOTTOM(tsk) (((tsk)->thread.rsp0 - 1) & ~(THREAD_SIZE - 1)) | ||
31 | #define STACK_TOP(tsk) ((tsk)->thread.rsp0) | ||
32 | #endif | ||
33 | /* Might need to account for the special exception and interrupt handling | ||
34 | stacks here, since normally | ||
35 | EXCEPTION_STACK_ORDER < THREAD_ORDER < IRQSTACK_ORDER, | ||
36 | but the construct is needed only for getting across the stack switch to | ||
37 | the interrupt stack - thus considering the IRQ stack itself is unnecessary, | ||
38 | and the overhead of comparing against all exception handling stacks seems | ||
39 | not desirable. */ | ||
40 | #define STACK_LIMIT(ptr) (((ptr) - 1) & ~(THREAD_SIZE - 1)) | ||
41 | |||
42 | #define UNW_REGISTER_INFO \ | ||
43 | PTREGS_INFO(rax), \ | ||
44 | PTREGS_INFO(rdx), \ | ||
45 | PTREGS_INFO(rcx), \ | ||
46 | PTREGS_INFO(rbx), \ | ||
47 | PTREGS_INFO(rsi), \ | ||
48 | PTREGS_INFO(rdi), \ | ||
49 | PTREGS_INFO(rbp), \ | ||
50 | PTREGS_INFO(rsp), \ | ||
51 | PTREGS_INFO(r8), \ | ||
52 | PTREGS_INFO(r9), \ | ||
53 | PTREGS_INFO(r10), \ | ||
54 | PTREGS_INFO(r11), \ | ||
55 | PTREGS_INFO(r12), \ | ||
56 | PTREGS_INFO(r13), \ | ||
57 | PTREGS_INFO(r14), \ | ||
58 | PTREGS_INFO(r15), \ | ||
59 | PTREGS_INFO(rip) | ||
60 | |||
61 | #define UNW_DEFAULT_RA(raItem, dataAlign) \ | ||
62 | ((raItem).where == Memory && \ | ||
63 | !((raItem).value * (dataAlign) + 8)) | ||
64 | |||
65 | static inline void arch_unw_init_frame_info(struct unwind_frame_info *info, | ||
66 | /*const*/ struct pt_regs *regs) | ||
67 | { | ||
68 | info->regs = *regs; | ||
69 | } | ||
70 | |||
71 | static inline void arch_unw_init_blocked(struct unwind_frame_info *info) | ||
72 | { | ||
73 | extern const char thread_return[]; | ||
74 | |||
75 | memset(&info->regs, 0, sizeof(info->regs)); | ||
76 | info->regs.rip = (unsigned long)thread_return; | ||
77 | info->regs.cs = __KERNEL_CS; | ||
78 | __get_user(info->regs.rbp, (unsigned long *)info->task->thread.rsp); | ||
79 | info->regs.rsp = info->task->thread.rsp; | ||
80 | info->regs.ss = __KERNEL_DS; | ||
81 | } | ||
82 | |||
83 | extern int arch_unwind_init_running(struct unwind_frame_info *, | ||
84 | int (*callback)(struct unwind_frame_info *, | ||
85 | void *arg), | ||
86 | void *arg); | ||
87 | |||
88 | static inline int arch_unw_user_mode(const struct unwind_frame_info *info) | ||
89 | { | ||
90 | return user_mode(&info->regs) | ||
91 | || (long)info->regs.rip >= 0 | ||
92 | || (info->regs.rip >= VSYSCALL_START && info->regs.rip < VSYSCALL_END) | ||
93 | || (long)info->regs.rsp >= 0; | ||
94 | } | ||
95 | |||
96 | #else | ||
97 | |||
98 | #define UNW_PC(frame) ((void)(frame), 0UL) | 4 | #define UNW_PC(frame) ((void)(frame), 0UL) |
99 | #define UNW_SP(frame) ((void)(frame), 0UL) | 5 | #define UNW_SP(frame) ((void)(frame), 0UL) |
100 | 6 | ||
@@ -103,6 +9,4 @@ static inline int arch_unw_user_mode(const void *info) | |||
103 | return 0; | 9 | return 0; |
104 | } | 10 | } |
105 | 11 | ||
106 | #endif | ||
107 | |||
108 | #endif /* _ASM_X86_64_UNWIND_H */ | 12 | #endif /* _ASM_X86_64_UNWIND_H */ |
diff --git a/include/asm-xtensa/cacheflush.h b/include/asm-xtensa/cacheflush.h index 337765b629de..22ef901b7845 100644 --- a/include/asm-xtensa/cacheflush.h +++ b/include/asm-xtensa/cacheflush.h | |||
@@ -75,6 +75,7 @@ extern void __flush_invalidate_dcache_range(unsigned long, unsigned long); | |||
75 | 75 | ||
76 | #define flush_cache_all() __flush_invalidate_cache_all(); | 76 | #define flush_cache_all() __flush_invalidate_cache_all(); |
77 | #define flush_cache_mm(mm) __flush_invalidate_cache_all(); | 77 | #define flush_cache_mm(mm) __flush_invalidate_cache_all(); |
78 | #define flush_cache_dup_mm(mm) __flush_invalidate_cache_all(); | ||
78 | 79 | ||
79 | #define flush_cache_vmap(start,end) __flush_invalidate_cache_all(); | 80 | #define flush_cache_vmap(start,end) __flush_invalidate_cache_all(); |
80 | #define flush_cache_vunmap(start,end) __flush_invalidate_cache_all(); | 81 | #define flush_cache_vunmap(start,end) __flush_invalidate_cache_all(); |
@@ -88,6 +89,7 @@ extern void flush_cache_page(struct vm_area_struct*, unsigned long, unsigned lon | |||
88 | 89 | ||
89 | #define flush_cache_all() do { } while (0) | 90 | #define flush_cache_all() do { } while (0) |
90 | #define flush_cache_mm(mm) do { } while (0) | 91 | #define flush_cache_mm(mm) do { } while (0) |
92 | #define flush_cache_dup_mm(mm) do { } while (0) | ||
91 | 93 | ||
92 | #define flush_cache_vmap(start,end) do { } while (0) | 94 | #define flush_cache_vmap(start,end) do { } while (0) |
93 | #define flush_cache_vunmap(start,end) do { } while (0) | 95 | #define flush_cache_vunmap(start,end) do { } while (0) |
diff --git a/include/asm-xtensa/termbits.h b/include/asm-xtensa/termbits.h index c780593ff5f9..057b9a3d8f83 100644 --- a/include/asm-xtensa/termbits.h +++ b/include/asm-xtensa/termbits.h | |||
@@ -30,6 +30,17 @@ struct termios { | |||
30 | cc_t c_cc[NCCS]; /* control characters */ | 30 | cc_t c_cc[NCCS]; /* control characters */ |
31 | }; | 31 | }; |
32 | 32 | ||
33 | struct ktermios { | ||
34 | tcflag_t c_iflag; /* input mode flags */ | ||
35 | tcflag_t c_oflag; /* output mode flags */ | ||
36 | tcflag_t c_cflag; /* control mode flags */ | ||
37 | tcflag_t c_lflag; /* local mode flags */ | ||
38 | cc_t c_line; /* line discipline */ | ||
39 | cc_t c_cc[NCCS]; /* control characters */ | ||
40 | speed_t c_ispeed; /* input speed */ | ||
41 | speed_t c_ospeed; /* output speed */ | ||
42 | }; | ||
43 | |||
33 | /* c_cc characters */ | 44 | /* c_cc characters */ |
34 | 45 | ||
35 | #define VINTR 0 | 46 | #define VINTR 0 |
diff --git a/include/asm-xtensa/uaccess.h b/include/asm-xtensa/uaccess.h index 88a64e1144d5..d6352da05b10 100644 --- a/include/asm-xtensa/uaccess.h +++ b/include/asm-xtensa/uaccess.h | |||
@@ -23,7 +23,6 @@ | |||
23 | 23 | ||
24 | #ifdef __ASSEMBLY__ | 24 | #ifdef __ASSEMBLY__ |
25 | 25 | ||
26 | #define _ASMLANGUAGE | ||
27 | #include <asm/current.h> | 26 | #include <asm/current.h> |
28 | #include <asm/asm-offsets.h> | 27 | #include <asm/asm-offsets.h> |
29 | #include <asm/processor.h> | 28 | #include <asm/processor.h> |
diff --git a/include/linux/aio.h b/include/linux/aio.h index 3372ec6bf53a..a30ef13c9e62 100644 --- a/include/linux/aio.h +++ b/include/linux/aio.h | |||
@@ -105,6 +105,7 @@ struct kiocb { | |||
105 | wait_queue_t ki_wait; | 105 | wait_queue_t ki_wait; |
106 | loff_t ki_pos; | 106 | loff_t ki_pos; |
107 | 107 | ||
108 | atomic_t ki_bio_count; /* num bio used for this iocb */ | ||
108 | void *private; | 109 | void *private; |
109 | /* State that we remember to be able to restart/retry */ | 110 | /* State that we remember to be able to restart/retry */ |
110 | unsigned short ki_opcode; | 111 | unsigned short ki_opcode; |
diff --git a/include/linux/bio.h b/include/linux/bio.h index 092dbd0e7658..08daf3272c02 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h | |||
@@ -309,6 +309,7 @@ extern struct bio *bio_map_kern(struct request_queue *, void *, unsigned int, | |||
309 | gfp_t); | 309 | gfp_t); |
310 | extern void bio_set_pages_dirty(struct bio *bio); | 310 | extern void bio_set_pages_dirty(struct bio *bio); |
311 | extern void bio_check_pages_dirty(struct bio *bio); | 311 | extern void bio_check_pages_dirty(struct bio *bio); |
312 | extern void bio_release_pages(struct bio *bio); | ||
312 | extern struct bio *bio_copy_user(struct request_queue *, unsigned long, unsigned int, int); | 313 | extern struct bio *bio_copy_user(struct request_queue *, unsigned long, unsigned int, int); |
313 | extern int bio_uncopy_user(struct bio *); | 314 | extern int bio_uncopy_user(struct bio *); |
314 | void zero_fill_bio(struct bio *bio); | 315 | void zero_fill_bio(struct bio *bio); |
diff --git a/include/linux/coda_linux.h b/include/linux/coda_linux.h index be512cc98791..4c2632a8d31b 100644 --- a/include/linux/coda_linux.h +++ b/include/linux/coda_linux.h | |||
@@ -64,7 +64,7 @@ void coda_sysctl_clean(void); | |||
64 | 64 | ||
65 | #define CODA_ALLOC(ptr, cast, size) do { \ | 65 | #define CODA_ALLOC(ptr, cast, size) do { \ |
66 | if (size < PAGE_SIZE) \ | 66 | if (size < PAGE_SIZE) \ |
67 | ptr = (cast)kmalloc((unsigned long) size, GFP_KERNEL); \ | 67 | ptr = kmalloc((unsigned long) size, GFP_KERNEL); \ |
68 | else \ | 68 | else \ |
69 | ptr = (cast)vmalloc((unsigned long) size); \ | 69 | ptr = (cast)vmalloc((unsigned long) size); \ |
70 | if (!ptr) \ | 70 | if (!ptr) \ |
diff --git a/include/linux/cpuset.h b/include/linux/cpuset.h index 8821e1f75b44..826b15e914e2 100644 --- a/include/linux/cpuset.h +++ b/include/linux/cpuset.h | |||
@@ -30,10 +30,19 @@ void cpuset_update_task_memory_state(void); | |||
30 | nodes_subset((nodes), current->mems_allowed) | 30 | nodes_subset((nodes), current->mems_allowed) |
31 | int cpuset_zonelist_valid_mems_allowed(struct zonelist *zl); | 31 | int cpuset_zonelist_valid_mems_allowed(struct zonelist *zl); |
32 | 32 | ||
33 | extern int __cpuset_zone_allowed(struct zone *z, gfp_t gfp_mask); | 33 | extern int __cpuset_zone_allowed_softwall(struct zone *z, gfp_t gfp_mask); |
34 | static int inline cpuset_zone_allowed(struct zone *z, gfp_t gfp_mask) | 34 | extern int __cpuset_zone_allowed_hardwall(struct zone *z, gfp_t gfp_mask); |
35 | |||
36 | static int inline cpuset_zone_allowed_softwall(struct zone *z, gfp_t gfp_mask) | ||
37 | { | ||
38 | return number_of_cpusets <= 1 || | ||
39 | __cpuset_zone_allowed_softwall(z, gfp_mask); | ||
40 | } | ||
41 | |||
42 | static int inline cpuset_zone_allowed_hardwall(struct zone *z, gfp_t gfp_mask) | ||
35 | { | 43 | { |
36 | return number_of_cpusets <= 1 || __cpuset_zone_allowed(z, gfp_mask); | 44 | return number_of_cpusets <= 1 || |
45 | __cpuset_zone_allowed_hardwall(z, gfp_mask); | ||
37 | } | 46 | } |
38 | 47 | ||
39 | extern int cpuset_excl_nodes_overlap(const struct task_struct *p); | 48 | extern int cpuset_excl_nodes_overlap(const struct task_struct *p); |
@@ -94,7 +103,12 @@ static inline int cpuset_zonelist_valid_mems_allowed(struct zonelist *zl) | |||
94 | return 1; | 103 | return 1; |
95 | } | 104 | } |
96 | 105 | ||
97 | static inline int cpuset_zone_allowed(struct zone *z, gfp_t gfp_mask) | 106 | static inline int cpuset_zone_allowed_softwall(struct zone *z, gfp_t gfp_mask) |
107 | { | ||
108 | return 1; | ||
109 | } | ||
110 | |||
111 | static inline int cpuset_zone_allowed_hardwall(struct zone *z, gfp_t gfp_mask) | ||
98 | { | 112 | { |
99 | return 1; | 113 | return 1; |
100 | } | 114 | } |
diff --git a/include/linux/fb.h b/include/linux/fb.h index 6fe56aaa6685..64177ec9a019 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h | |||
@@ -929,8 +929,6 @@ extern void fb_bl_default_curve(struct fb_info *fb_info, u8 off, u8 min, u8 max) | |||
929 | #define FB_MODE_IS_FIRST 16 | 929 | #define FB_MODE_IS_FIRST 16 |
930 | #define FB_MODE_IS_FROM_VAR 32 | 930 | #define FB_MODE_IS_FROM_VAR 32 |
931 | 931 | ||
932 | extern int fbmon_valid_timings(u_int pixclock, u_int htotal, u_int vtotal, | ||
933 | const struct fb_info *fb_info); | ||
934 | extern int fbmon_dpms(const struct fb_info *fb_info); | 932 | extern int fbmon_dpms(const struct fb_info *fb_info); |
935 | extern int fb_get_mode(int flags, u32 val, struct fb_var_screeninfo *var, | 933 | extern int fb_get_mode(int flags, u32 val, struct fb_var_screeninfo *var, |
936 | struct fb_info *info); | 934 | struct fb_info *info); |
diff --git a/include/linux/freezer.h b/include/linux/freezer.h index 393063096134..5e75e26d4787 100644 --- a/include/linux/freezer.h +++ b/include/linux/freezer.h | |||
@@ -16,16 +16,15 @@ static inline int frozen(struct task_struct *p) | |||
16 | */ | 16 | */ |
17 | static inline int freezing(struct task_struct *p) | 17 | static inline int freezing(struct task_struct *p) |
18 | { | 18 | { |
19 | return p->flags & PF_FREEZE; | 19 | return test_tsk_thread_flag(p, TIF_FREEZE); |
20 | } | 20 | } |
21 | 21 | ||
22 | /* | 22 | /* |
23 | * Request that a process be frozen | 23 | * Request that a process be frozen |
24 | * FIXME: SMP problem. We may not modify other process' flags! | ||
25 | */ | 24 | */ |
26 | static inline void freeze(struct task_struct *p) | 25 | static inline void freeze(struct task_struct *p) |
27 | { | 26 | { |
28 | p->flags |= PF_FREEZE; | 27 | set_tsk_thread_flag(p, TIF_FREEZE); |
29 | } | 28 | } |
30 | 29 | ||
31 | /* | 30 | /* |
@@ -33,7 +32,7 @@ static inline void freeze(struct task_struct *p) | |||
33 | */ | 32 | */ |
34 | static inline void do_not_freeze(struct task_struct *p) | 33 | static inline void do_not_freeze(struct task_struct *p) |
35 | { | 34 | { |
36 | p->flags &= ~PF_FREEZE; | 35 | clear_tsk_thread_flag(p, TIF_FREEZE); |
37 | } | 36 | } |
38 | 37 | ||
39 | /* | 38 | /* |
@@ -54,7 +53,9 @@ static inline int thaw_process(struct task_struct *p) | |||
54 | */ | 53 | */ |
55 | static inline void frozen_process(struct task_struct *p) | 54 | static inline void frozen_process(struct task_struct *p) |
56 | { | 55 | { |
57 | p->flags = (p->flags & ~PF_FREEZE) | PF_FROZEN; | 56 | p->flags |= PF_FROZEN; |
57 | wmb(); | ||
58 | clear_tsk_thread_flag(p, TIF_FREEZE); | ||
58 | } | 59 | } |
59 | 60 | ||
60 | extern void refrigerator(void); | 61 | extern void refrigerator(void); |
diff --git a/include/linux/fs.h b/include/linux/fs.h index adce6e1d70c2..186da813541e 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -120,6 +120,7 @@ extern int dir_notify_enable; | |||
120 | #define MS_PRIVATE (1<<18) /* change to private */ | 120 | #define MS_PRIVATE (1<<18) /* change to private */ |
121 | #define MS_SLAVE (1<<19) /* change to slave */ | 121 | #define MS_SLAVE (1<<19) /* change to slave */ |
122 | #define MS_SHARED (1<<20) /* change to shared */ | 122 | #define MS_SHARED (1<<20) /* change to shared */ |
123 | #define MS_RELATIME (1<<21) /* Update atime relative to mtime/ctime. */ | ||
123 | #define MS_ACTIVE (1<<30) | 124 | #define MS_ACTIVE (1<<30) |
124 | #define MS_NOUSER (1<<31) | 125 | #define MS_NOUSER (1<<31) |
125 | 126 | ||
diff --git a/include/linux/gameport.h b/include/linux/gameport.h index 2cdba0c23957..afad95272841 100644 --- a/include/linux/gameport.h +++ b/include/linux/gameport.h | |||
@@ -105,7 +105,7 @@ static inline void gameport_set_phys(struct gameport *gameport, | |||
105 | 105 | ||
106 | static inline struct gameport *gameport_allocate_port(void) | 106 | static inline struct gameport *gameport_allocate_port(void) |
107 | { | 107 | { |
108 | struct gameport *gameport = kcalloc(1, sizeof(struct gameport), GFP_KERNEL); | 108 | struct gameport *gameport = kzalloc(sizeof(struct gameport), GFP_KERNEL); |
109 | 109 | ||
110 | return gameport; | 110 | return gameport; |
111 | } | 111 | } |
diff --git a/include/linux/highmem.h b/include/linux/highmem.h index 3d8768b619e9..ca9a602cffd7 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h | |||
@@ -96,7 +96,10 @@ static inline void memclear_highpage_flush(struct page *page, unsigned int offse | |||
96 | kunmap_atomic(kaddr, KM_USER0); | 96 | kunmap_atomic(kaddr, KM_USER0); |
97 | } | 97 | } |
98 | 98 | ||
99 | static inline void copy_user_highpage(struct page *to, struct page *from, unsigned long vaddr) | 99 | #ifndef __HAVE_ARCH_COPY_USER_HIGHPAGE |
100 | |||
101 | static inline void copy_user_highpage(struct page *to, struct page *from, | ||
102 | unsigned long vaddr, struct vm_area_struct *vma) | ||
100 | { | 103 | { |
101 | char *vfrom, *vto; | 104 | char *vfrom, *vto; |
102 | 105 | ||
@@ -109,6 +112,8 @@ static inline void copy_user_highpage(struct page *to, struct page *from, unsign | |||
109 | smp_wmb(); | 112 | smp_wmb(); |
110 | } | 113 | } |
111 | 114 | ||
115 | #endif | ||
116 | |||
112 | static inline void copy_highpage(struct page *to, struct page *from) | 117 | static inline void copy_highpage(struct page *to, struct page *from) |
113 | { | 118 | { |
114 | char *vfrom, *vto; | 119 | char *vfrom, *vto; |
diff --git a/include/linux/i2c-id.h b/include/linux/i2c-id.h index 7ae3c3326643..d38778f2fbec 100644 --- a/include/linux/i2c-id.h +++ b/include/linux/i2c-id.h | |||
@@ -142,7 +142,6 @@ | |||
142 | #define I2C_DRIVERID_MTP008 1023 | 142 | #define I2C_DRIVERID_MTP008 1023 |
143 | #define I2C_DRIVERID_DS1621 1024 | 143 | #define I2C_DRIVERID_DS1621 1024 |
144 | #define I2C_DRIVERID_ADM1024 1025 | 144 | #define I2C_DRIVERID_ADM1024 1025 |
145 | #define I2C_DRIVERID_IT87 1026 | ||
146 | #define I2C_DRIVERID_CH700X 1027 /* single driver for CH7003-7009 digital pc to tv encoders */ | 145 | #define I2C_DRIVERID_CH700X 1027 /* single driver for CH7003-7009 digital pc to tv encoders */ |
147 | #define I2C_DRIVERID_FSCPOS 1028 | 146 | #define I2C_DRIVERID_FSCPOS 1028 |
148 | #define I2C_DRIVERID_FSCSCY 1029 | 147 | #define I2C_DRIVERID_FSCSCY 1029 |
diff --git a/include/linux/init_task.h b/include/linux/init_task.h index b5315150199e..6383d2d83bb0 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h | |||
@@ -75,7 +75,6 @@ extern struct nsproxy init_nsproxy; | |||
75 | .pid_ns = &init_pid_ns, \ | 75 | .pid_ns = &init_pid_ns, \ |
76 | .count = ATOMIC_INIT(1), \ | 76 | .count = ATOMIC_INIT(1), \ |
77 | .nslock = __SPIN_LOCK_UNLOCKED(nsproxy.nslock), \ | 77 | .nslock = __SPIN_LOCK_UNLOCKED(nsproxy.nslock), \ |
78 | .id = 0, \ | ||
79 | .uts_ns = &init_uts_ns, \ | 78 | .uts_ns = &init_uts_ns, \ |
80 | .mnt_ns = NULL, \ | 79 | .mnt_ns = NULL, \ |
81 | INIT_IPC_NS(ipc_ns) \ | 80 | INIT_IPC_NS(ipc_ns) \ |
diff --git a/include/linux/lockd/bind.h b/include/linux/lockd/bind.h index aa50d89eacd7..246de1d84a26 100644 --- a/include/linux/lockd/bind.h +++ b/include/linux/lockd/bind.h | |||
@@ -23,7 +23,7 @@ struct svc_rqst; | |||
23 | * This is the set of functions for lockd->nfsd communication | 23 | * This is the set of functions for lockd->nfsd communication |
24 | */ | 24 | */ |
25 | struct nlmsvc_binding { | 25 | struct nlmsvc_binding { |
26 | u32 (*fopen)(struct svc_rqst *, | 26 | __be32 (*fopen)(struct svc_rqst *, |
27 | struct nfs_fh *, | 27 | struct nfs_fh *, |
28 | struct file **); | 28 | struct file **); |
29 | void (*fclose)(struct file *); | 29 | void (*fclose)(struct file *); |
diff --git a/include/linux/lockd/lockd.h b/include/linux/lockd/lockd.h index 0c962b82a9de..ac25b5649c59 100644 --- a/include/linux/lockd/lockd.h +++ b/include/linux/lockd/lockd.h | |||
@@ -191,7 +191,7 @@ __be32 nlmsvc_cancel_blocked(struct nlm_file *, struct nlm_lock *); | |||
191 | unsigned long nlmsvc_retry_blocked(void); | 191 | unsigned long nlmsvc_retry_blocked(void); |
192 | void nlmsvc_traverse_blocks(struct nlm_host *, struct nlm_file *, | 192 | void nlmsvc_traverse_blocks(struct nlm_host *, struct nlm_file *, |
193 | nlm_host_match_fn_t match); | 193 | nlm_host_match_fn_t match); |
194 | void nlmsvc_grant_reply(struct nlm_cookie *, u32); | 194 | void nlmsvc_grant_reply(struct nlm_cookie *, __be32); |
195 | 195 | ||
196 | /* | 196 | /* |
197 | * File handling for the server personality | 197 | * File handling for the server personality |
diff --git a/include/linux/lockd/sm_inter.h b/include/linux/lockd/sm_inter.h index fc61d40964da..22a645828f26 100644 --- a/include/linux/lockd/sm_inter.h +++ b/include/linux/lockd/sm_inter.h | |||
@@ -24,7 +24,7 @@ | |||
24 | * Arguments for all calls to statd | 24 | * Arguments for all calls to statd |
25 | */ | 25 | */ |
26 | struct nsm_args { | 26 | struct nsm_args { |
27 | u32 addr; /* remote address */ | 27 | __be32 addr; /* remote address */ |
28 | u32 prog; /* RPC callback info */ | 28 | u32 prog; /* RPC callback info */ |
29 | u32 vers; | 29 | u32 vers; |
30 | u32 proc; | 30 | u32 proc; |
diff --git a/include/linux/lockd/xdr.h b/include/linux/lockd/xdr.h index 29e7d9fc9dad..83a1f9f6237b 100644 --- a/include/linux/lockd/xdr.h +++ b/include/linux/lockd/xdr.h | |||
@@ -69,7 +69,7 @@ typedef struct nlm_args nlm_args; | |||
69 | */ | 69 | */ |
70 | struct nlm_res { | 70 | struct nlm_res { |
71 | struct nlm_cookie cookie; | 71 | struct nlm_cookie cookie; |
72 | u32 status; | 72 | __be32 status; |
73 | struct nlm_lock lock; | 73 | struct nlm_lock lock; |
74 | }; | 74 | }; |
75 | 75 | ||
@@ -80,9 +80,9 @@ struct nlm_reboot { | |||
80 | char * mon; | 80 | char * mon; |
81 | int len; | 81 | int len; |
82 | u32 state; | 82 | u32 state; |
83 | u32 addr; | 83 | __be32 addr; |
84 | u32 vers; | 84 | __be32 vers; |
85 | u32 proto; | 85 | __be32 proto; |
86 | }; | 86 | }; |
87 | 87 | ||
88 | /* | 88 | /* |
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h index 498bfbd3b4e1..ea097dddc44f 100644 --- a/include/linux/lockdep.h +++ b/include/linux/lockdep.h | |||
@@ -281,15 +281,25 @@ struct lock_class_key { }; | |||
281 | #if defined(CONFIG_TRACE_IRQFLAGS) && defined(CONFIG_GENERIC_HARDIRQS) | 281 | #if defined(CONFIG_TRACE_IRQFLAGS) && defined(CONFIG_GENERIC_HARDIRQS) |
282 | extern void early_init_irq_lock_class(void); | 282 | extern void early_init_irq_lock_class(void); |
283 | #else | 283 | #else |
284 | # define early_init_irq_lock_class() do { } while (0) | 284 | static inline void early_init_irq_lock_class(void) |
285 | { | ||
286 | } | ||
285 | #endif | 287 | #endif |
286 | 288 | ||
287 | #ifdef CONFIG_TRACE_IRQFLAGS | 289 | #ifdef CONFIG_TRACE_IRQFLAGS |
288 | extern void early_boot_irqs_off(void); | 290 | extern void early_boot_irqs_off(void); |
289 | extern void early_boot_irqs_on(void); | 291 | extern void early_boot_irqs_on(void); |
292 | extern void print_irqtrace_events(struct task_struct *curr); | ||
290 | #else | 293 | #else |
291 | # define early_boot_irqs_off() do { } while (0) | 294 | static inline void early_boot_irqs_off(void) |
292 | # define early_boot_irqs_on() do { } while (0) | 295 | { |
296 | } | ||
297 | static inline void early_boot_irqs_on(void) | ||
298 | { | ||
299 | } | ||
300 | static inline void print_irqtrace_events(struct task_struct *curr) | ||
301 | { | ||
302 | } | ||
293 | #endif | 303 | #endif |
294 | 304 | ||
295 | /* | 305 | /* |
diff --git a/include/linux/mount.h b/include/linux/mount.h index e357dc86a4de..1b7e178b0d84 100644 --- a/include/linux/mount.h +++ b/include/linux/mount.h | |||
@@ -27,6 +27,7 @@ struct mnt_namespace; | |||
27 | #define MNT_NOEXEC 0x04 | 27 | #define MNT_NOEXEC 0x04 |
28 | #define MNT_NOATIME 0x08 | 28 | #define MNT_NOATIME 0x08 |
29 | #define MNT_NODIRATIME 0x10 | 29 | #define MNT_NODIRATIME 0x10 |
30 | #define MNT_RELATIME 0x20 | ||
30 | 31 | ||
31 | #define MNT_SHRINKABLE 0x100 | 32 | #define MNT_SHRINKABLE 0x100 |
32 | 33 | ||
diff --git a/include/linux/n_r3964.h b/include/linux/n_r3964.h index db4f3776978a..de24af79ebd3 100644 --- a/include/linux/n_r3964.h +++ b/include/linux/n_r3964.h | |||
@@ -116,7 +116,7 @@ struct r3964_message; | |||
116 | 116 | ||
117 | struct r3964_client_info { | 117 | struct r3964_client_info { |
118 | spinlock_t lock; | 118 | spinlock_t lock; |
119 | pid_t pid; | 119 | struct pid *pid; |
120 | unsigned int sig_flags; | 120 | unsigned int sig_flags; |
121 | 121 | ||
122 | struct r3964_client_info *next; | 122 | struct r3964_client_info *next; |
diff --git a/include/linux/ncp_mount.h b/include/linux/ncp_mount.h index f46bddcdbd3b..a2b549eb1eca 100644 --- a/include/linux/ncp_mount.h +++ b/include/linux/ncp_mount.h | |||
@@ -75,7 +75,7 @@ struct ncp_mount_data_kernel { | |||
75 | unsigned int int_flags; /* internal flags */ | 75 | unsigned int int_flags; /* internal flags */ |
76 | #define NCP_IMOUNT_LOGGEDIN_POSSIBLE 0x0001 | 76 | #define NCP_IMOUNT_LOGGEDIN_POSSIBLE 0x0001 |
77 | __kernel_uid32_t mounted_uid; /* Who may umount() this filesystem? */ | 77 | __kernel_uid32_t mounted_uid; /* Who may umount() this filesystem? */ |
78 | __kernel_pid_t wdog_pid; /* Who cares for our watchdog packets? */ | 78 | struct pid *wdog_pid; /* Who cares for our watchdog packets? */ |
79 | unsigned int ncp_fd; /* The socket to the ncp port */ | 79 | unsigned int ncp_fd; /* The socket to the ncp port */ |
80 | unsigned int time_out; /* How long should I wait after | 80 | unsigned int time_out; /* How long should I wait after |
81 | sending a NCP request? */ | 81 | sending a NCP request? */ |
diff --git a/include/linux/netfilter_bridge.h b/include/linux/netfilter_bridge.h index 6c4613f8ad75..55689f39f77a 100644 --- a/include/linux/netfilter_bridge.h +++ b/include/linux/netfilter_bridge.h | |||
@@ -68,7 +68,6 @@ struct bridge_skb_cb { | |||
68 | } daddr; | 68 | } daddr; |
69 | }; | 69 | }; |
70 | 70 | ||
71 | extern int brnf_deferred_hooks; | ||
72 | #else | 71 | #else |
73 | #define nf_bridge_maybe_copy_header(skb) (0) | 72 | #define nf_bridge_maybe_copy_header(skb) (0) |
74 | #define nf_bridge_pad(skb) (0) | 73 | #define nf_bridge_pad(skb) (0) |
diff --git a/include/linux/netfilter_ipv4.h b/include/linux/netfilter_ipv4.h index 5821eb5a0a3e..ceae87a4c891 100644 --- a/include/linux/netfilter_ipv4.h +++ b/include/linux/netfilter_ipv4.h | |||
@@ -57,10 +57,8 @@ enum nf_ip_hook_priorities { | |||
57 | NF_IP_PRI_RAW = -300, | 57 | NF_IP_PRI_RAW = -300, |
58 | NF_IP_PRI_SELINUX_FIRST = -225, | 58 | NF_IP_PRI_SELINUX_FIRST = -225, |
59 | NF_IP_PRI_CONNTRACK = -200, | 59 | NF_IP_PRI_CONNTRACK = -200, |
60 | NF_IP_PRI_BRIDGE_SABOTAGE_FORWARD = -175, | ||
61 | NF_IP_PRI_MANGLE = -150, | 60 | NF_IP_PRI_MANGLE = -150, |
62 | NF_IP_PRI_NAT_DST = -100, | 61 | NF_IP_PRI_NAT_DST = -100, |
63 | NF_IP_PRI_BRIDGE_SABOTAGE_LOCAL_OUT = -50, | ||
64 | NF_IP_PRI_FILTER = 0, | 62 | NF_IP_PRI_FILTER = 0, |
65 | NF_IP_PRI_NAT_SRC = 100, | 63 | NF_IP_PRI_NAT_SRC = 100, |
66 | NF_IP_PRI_SELINUX_LAST = 225, | 64 | NF_IP_PRI_SELINUX_LAST = 225, |
diff --git a/include/linux/netfilter_ipv6.h b/include/linux/netfilter_ipv6.h index ab81a6dc94ea..66ca8e3100dc 100644 --- a/include/linux/netfilter_ipv6.h +++ b/include/linux/netfilter_ipv6.h | |||
@@ -62,10 +62,8 @@ enum nf_ip6_hook_priorities { | |||
62 | NF_IP6_PRI_CONNTRACK_DEFRAG = -400, | 62 | NF_IP6_PRI_CONNTRACK_DEFRAG = -400, |
63 | NF_IP6_PRI_SELINUX_FIRST = -225, | 63 | NF_IP6_PRI_SELINUX_FIRST = -225, |
64 | NF_IP6_PRI_CONNTRACK = -200, | 64 | NF_IP6_PRI_CONNTRACK = -200, |
65 | NF_IP6_PRI_BRIDGE_SABOTAGE_FORWARD = -175, | ||
66 | NF_IP6_PRI_MANGLE = -150, | 65 | NF_IP6_PRI_MANGLE = -150, |
67 | NF_IP6_PRI_NAT_DST = -100, | 66 | NF_IP6_PRI_NAT_DST = -100, |
68 | NF_IP6_PRI_BRIDGE_SABOTAGE_LOCAL_OUT = -50, | ||
69 | NF_IP6_PRI_FILTER = 0, | 67 | NF_IP6_PRI_FILTER = 0, |
70 | NF_IP6_PRI_NAT_SRC = 100, | 68 | NF_IP6_PRI_NAT_SRC = 100, |
71 | NF_IP6_PRI_SELINUX_LAST = 225, | 69 | NF_IP6_PRI_SELINUX_LAST = 225, |
diff --git a/include/linux/nfsd/nfsd.h b/include/linux/nfsd/nfsd.h index edb54c3171b3..0727774772ba 100644 --- a/include/linux/nfsd/nfsd.h +++ b/include/linux/nfsd/nfsd.h | |||
@@ -275,12 +275,12 @@ static inline int is_fsid(struct svc_fh *fh, struct knfsd_fh *reffh) | |||
275 | * we might process an operation with side effects, and be unable to | 275 | * we might process an operation with side effects, and be unable to |
276 | * tell the client that the operation succeeded. | 276 | * tell the client that the operation succeeded. |
277 | * | 277 | * |
278 | * COMPOUND_SLACK_SPACE - this is the minimum amount of buffer space | 278 | * COMPOUND_SLACK_SPACE - this is the minimum bytes of buffer space |
279 | * needed to encode an "ordinary" _successful_ operation. (GETATTR, | 279 | * needed to encode an "ordinary" _successful_ operation. (GETATTR, |
280 | * READ, READDIR, and READLINK have their own buffer checks.) if we | 280 | * READ, READDIR, and READLINK have their own buffer checks.) if we |
281 | * fall below this level, we fail the next operation with NFS4ERR_RESOURCE. | 281 | * fall below this level, we fail the next operation with NFS4ERR_RESOURCE. |
282 | * | 282 | * |
283 | * COMPOUND_ERR_SLACK_SPACE - this is the minimum amount of buffer space | 283 | * COMPOUND_ERR_SLACK_SPACE - this is the minimum bytes of buffer space |
284 | * needed to encode an operation which has failed with NFS4ERR_RESOURCE. | 284 | * needed to encode an operation which has failed with NFS4ERR_RESOURCE. |
285 | * care is taken to ensure that we never fall below this level for any | 285 | * care is taken to ensure that we never fall below this level for any |
286 | * reason. | 286 | * reason. |
diff --git a/include/linux/nfsd/state.h b/include/linux/nfsd/state.h index c3673f487e84..ab5c236bd9a7 100644 --- a/include/linux/nfsd/state.h +++ b/include/linux/nfsd/state.h | |||
@@ -273,7 +273,6 @@ struct nfs4_stateid { | |||
273 | ((err) != nfserr_stale_stateid) && \ | 273 | ((err) != nfserr_stale_stateid) && \ |
274 | ((err) != nfserr_bad_stateid)) | 274 | ((err) != nfserr_bad_stateid)) |
275 | 275 | ||
276 | extern __be32 nfsd4_renew(clientid_t *clid); | ||
277 | extern __be32 nfs4_preprocess_stateid_op(struct svc_fh *current_fh, | 276 | extern __be32 nfs4_preprocess_stateid_op(struct svc_fh *current_fh, |
278 | stateid_t *stateid, int flags, struct file **filp); | 277 | stateid_t *stateid, int flags, struct file **filp); |
279 | extern void nfs4_lock_state(void); | 278 | extern void nfs4_lock_state(void); |
diff --git a/include/linux/nfsd/xdr4.h b/include/linux/nfsd/xdr4.h index 45ca01b5f844..09799bcee0ac 100644 --- a/include/linux/nfsd/xdr4.h +++ b/include/linux/nfsd/xdr4.h | |||
@@ -44,6 +44,12 @@ | |||
44 | #define NFSD4_MAX_TAGLEN 128 | 44 | #define NFSD4_MAX_TAGLEN 128 |
45 | #define XDR_LEN(n) (((n) + 3) & ~3) | 45 | #define XDR_LEN(n) (((n) + 3) & ~3) |
46 | 46 | ||
47 | struct nfsd4_compound_state { | ||
48 | struct svc_fh current_fh; | ||
49 | struct svc_fh save_fh; | ||
50 | struct nfs4_stateowner *replay_owner; | ||
51 | }; | ||
52 | |||
47 | struct nfsd4_change_info { | 53 | struct nfsd4_change_info { |
48 | u32 atomic; | 54 | u32 atomic; |
49 | u32 before_ctime_sec; | 55 | u32 before_ctime_sec; |
@@ -430,35 +436,39 @@ __be32 nfsd4_encode_fattr(struct svc_fh *fhp, struct svc_export *exp, | |||
430 | struct dentry *dentry, __be32 *buffer, int *countp, | 436 | struct dentry *dentry, __be32 *buffer, int *countp, |
431 | u32 *bmval, struct svc_rqst *); | 437 | u32 *bmval, struct svc_rqst *); |
432 | extern __be32 nfsd4_setclientid(struct svc_rqst *rqstp, | 438 | extern __be32 nfsd4_setclientid(struct svc_rqst *rqstp, |
439 | struct nfsd4_compound_state *, | ||
433 | struct nfsd4_setclientid *setclid); | 440 | struct nfsd4_setclientid *setclid); |
434 | extern __be32 nfsd4_setclientid_confirm(struct svc_rqst *rqstp, | 441 | extern __be32 nfsd4_setclientid_confirm(struct svc_rqst *rqstp, |
442 | struct nfsd4_compound_state *, | ||
435 | struct nfsd4_setclientid_confirm *setclientid_confirm); | 443 | struct nfsd4_setclientid_confirm *setclientid_confirm); |
436 | extern __be32 nfsd4_process_open1(struct nfsd4_open *open); | 444 | extern __be32 nfsd4_process_open1(struct nfsd4_open *open); |
437 | extern __be32 nfsd4_process_open2(struct svc_rqst *rqstp, | 445 | extern __be32 nfsd4_process_open2(struct svc_rqst *rqstp, |
438 | struct svc_fh *current_fh, struct nfsd4_open *open); | 446 | struct svc_fh *current_fh, struct nfsd4_open *open); |
439 | extern __be32 nfsd4_open_confirm(struct svc_rqst *rqstp, | 447 | extern __be32 nfsd4_open_confirm(struct svc_rqst *rqstp, |
440 | struct svc_fh *current_fh, struct nfsd4_open_confirm *oc, | 448 | struct nfsd4_compound_state *, struct nfsd4_open_confirm *oc); |
441 | struct nfs4_stateowner **); | 449 | extern __be32 nfsd4_close(struct svc_rqst *rqstp, |
442 | extern __be32 nfsd4_close(struct svc_rqst *rqstp, struct svc_fh *current_fh, | 450 | struct nfsd4_compound_state *, |
443 | struct nfsd4_close *close, | 451 | struct nfsd4_close *close); |
444 | struct nfs4_stateowner **replay_owner); | ||
445 | extern __be32 nfsd4_open_downgrade(struct svc_rqst *rqstp, | 452 | extern __be32 nfsd4_open_downgrade(struct svc_rqst *rqstp, |
446 | struct svc_fh *current_fh, struct nfsd4_open_downgrade *od, | 453 | struct nfsd4_compound_state *, |
447 | struct nfs4_stateowner **replay_owner); | 454 | struct nfsd4_open_downgrade *od); |
448 | extern __be32 nfsd4_lock(struct svc_rqst *rqstp, struct svc_fh *current_fh, | 455 | extern __be32 nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *, |
449 | struct nfsd4_lock *lock, | 456 | struct nfsd4_lock *lock); |
450 | struct nfs4_stateowner **replay_owner); | 457 | extern __be32 nfsd4_lockt(struct svc_rqst *rqstp, |
451 | extern __be32 nfsd4_lockt(struct svc_rqst *rqstp, struct svc_fh *current_fh, | 458 | struct nfsd4_compound_state *, |
452 | struct nfsd4_lockt *lockt); | 459 | struct nfsd4_lockt *lockt); |
453 | extern __be32 nfsd4_locku(struct svc_rqst *rqstp, struct svc_fh *current_fh, | 460 | extern __be32 nfsd4_locku(struct svc_rqst *rqstp, |
454 | struct nfsd4_locku *locku, | 461 | struct nfsd4_compound_state *, |
455 | struct nfs4_stateowner **replay_owner); | 462 | struct nfsd4_locku *locku); |
456 | extern __be32 | 463 | extern __be32 |
457 | nfsd4_release_lockowner(struct svc_rqst *rqstp, | 464 | nfsd4_release_lockowner(struct svc_rqst *rqstp, |
465 | struct nfsd4_compound_state *, | ||
458 | struct nfsd4_release_lockowner *rlockowner); | 466 | struct nfsd4_release_lockowner *rlockowner); |
459 | extern void nfsd4_release_compoundargs(struct nfsd4_compoundargs *); | 467 | extern void nfsd4_release_compoundargs(struct nfsd4_compoundargs *); |
460 | extern __be32 nfsd4_delegreturn(struct svc_rqst *rqstp, | 468 | extern __be32 nfsd4_delegreturn(struct svc_rqst *rqstp, |
461 | struct svc_fh *current_fh, struct nfsd4_delegreturn *dr); | 469 | struct nfsd4_compound_state *, struct nfsd4_delegreturn *dr); |
470 | extern __be32 nfsd4_renew(struct svc_rqst *rqstp, | ||
471 | struct nfsd4_compound_state *, clientid_t *clid); | ||
462 | #endif | 472 | #endif |
463 | 473 | ||
464 | /* | 474 | /* |
diff --git a/include/linux/nsproxy.h b/include/linux/nsproxy.h index fdfb0e44912f..0b9f0dc30d61 100644 --- a/include/linux/nsproxy.h +++ b/include/linux/nsproxy.h | |||
@@ -24,7 +24,6 @@ struct pid_namespace; | |||
24 | struct nsproxy { | 24 | struct nsproxy { |
25 | atomic_t count; | 25 | atomic_t count; |
26 | spinlock_t nslock; | 26 | spinlock_t nslock; |
27 | unsigned long id; | ||
28 | struct uts_namespace *uts_ns; | 27 | struct uts_namespace *uts_ns; |
29 | struct ipc_namespace *ipc_ns; | 28 | struct ipc_namespace *ipc_ns; |
30 | struct mnt_namespace *mnt_ns; | 29 | struct mnt_namespace *mnt_ns; |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 51180dba9a98..95c1e74afebc 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -2067,6 +2067,10 @@ | |||
2067 | #define PCI_DEVICE_ID_JMICRON_JMB366 0x2366 | 2067 | #define PCI_DEVICE_ID_JMICRON_JMB366 0x2366 |
2068 | #define PCI_DEVICE_ID_JMICRON_JMB368 0x2368 | 2068 | #define PCI_DEVICE_ID_JMICRON_JMB368 0x2368 |
2069 | 2069 | ||
2070 | #define PCI_VENDOR_ID_KORENIX 0x1982 | ||
2071 | #define PCI_DEVICE_ID_KORENIX_JETCARDF0 0x1600 | ||
2072 | #define PCI_DEVICE_ID_KORENIX_JETCARDF1 0x16ff | ||
2073 | |||
2070 | #define PCI_VENDOR_ID_TEKRAM 0x1de1 | 2074 | #define PCI_VENDOR_ID_TEKRAM 0x1de1 |
2071 | #define PCI_DEVICE_ID_TEKRAM_DC290 0xdc29 | 2075 | #define PCI_DEVICE_ID_TEKRAM_DC290 0xdc29 |
2072 | 2076 | ||
diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h index ea4f7cd7bfd8..2e19478e9e84 100644 --- a/include/linux/pipe_fs_i.h +++ b/include/linux/pipe_fs_i.h | |||
@@ -12,7 +12,7 @@ | |||
12 | struct pipe_buffer { | 12 | struct pipe_buffer { |
13 | struct page *page; | 13 | struct page *page; |
14 | unsigned int offset, len; | 14 | unsigned int offset, len; |
15 | struct pipe_buf_operations *ops; | 15 | const struct pipe_buf_operations *ops; |
16 | unsigned int flags; | 16 | unsigned int flags; |
17 | }; | 17 | }; |
18 | 18 | ||
@@ -41,9 +41,7 @@ struct pipe_buf_operations { | |||
41 | struct pipe_inode_info { | 41 | struct pipe_inode_info { |
42 | wait_queue_head_t wait; | 42 | wait_queue_head_t wait; |
43 | unsigned int nrbufs, curbuf; | 43 | unsigned int nrbufs, curbuf; |
44 | struct pipe_buffer bufs[PIPE_BUFFERS]; | ||
45 | struct page *tmp_page; | 44 | struct page *tmp_page; |
46 | unsigned int start; | ||
47 | unsigned int readers; | 45 | unsigned int readers; |
48 | unsigned int writers; | 46 | unsigned int writers; |
49 | unsigned int waiting_writers; | 47 | unsigned int waiting_writers; |
@@ -52,6 +50,7 @@ struct pipe_inode_info { | |||
52 | struct fasync_struct *fasync_readers; | 50 | struct fasync_struct *fasync_readers; |
53 | struct fasync_struct *fasync_writers; | 51 | struct fasync_struct *fasync_writers; |
54 | struct inode *inode; | 52 | struct inode *inode; |
53 | struct pipe_buffer bufs[PIPE_BUFFERS]; | ||
55 | }; | 54 | }; |
56 | 55 | ||
57 | /* Differs from PIPE_BUF in that PIPE_SIZE is the length of the actual | 56 | /* Differs from PIPE_BUF in that PIPE_SIZE is the length of the actual |
diff --git a/include/linux/platform_device.h b/include/linux/platform_device.h index 20f47b81d3fa..8bbd459eafdc 100644 --- a/include/linux/platform_device.h +++ b/include/linux/platform_device.h | |||
@@ -39,7 +39,7 @@ extern struct platform_device *platform_device_register_simple(char *, unsigned | |||
39 | 39 | ||
40 | extern struct platform_device *platform_device_alloc(const char *name, unsigned int id); | 40 | extern struct platform_device *platform_device_alloc(const char *name, unsigned int id); |
41 | extern int platform_device_add_resources(struct platform_device *pdev, struct resource *res, unsigned int num); | 41 | extern int platform_device_add_resources(struct platform_device *pdev, struct resource *res, unsigned int num); |
42 | extern int platform_device_add_data(struct platform_device *pdev, void *data, size_t size); | 42 | extern int platform_device_add_data(struct platform_device *pdev, const void *data, size_t size); |
43 | extern int platform_device_add(struct platform_device *pdev); | 43 | extern int platform_device_add(struct platform_device *pdev); |
44 | extern void platform_device_del(struct platform_device *pdev); | 44 | extern void platform_device_del(struct platform_device *pdev); |
45 | extern void platform_device_put(struct platform_device *pdev); | 45 | extern void platform_device_put(struct platform_device *pdev); |
diff --git a/include/linux/reciprocal_div.h b/include/linux/reciprocal_div.h new file mode 100644 index 000000000000..f9c90b33285b --- /dev/null +++ b/include/linux/reciprocal_div.h | |||
@@ -0,0 +1,32 @@ | |||
1 | #ifndef _LINUX_RECIPROCAL_DIV_H | ||
2 | #define _LINUX_RECIPROCAL_DIV_H | ||
3 | |||
4 | #include <linux/types.h> | ||
5 | |||
6 | /* | ||
7 | * This file describes reciprocical division. | ||
8 | * | ||
9 | * This optimizes the (A/B) problem, when A and B are two u32 | ||
10 | * and B is a known value (but not known at compile time) | ||
11 | * | ||
12 | * The math principle used is : | ||
13 | * Let RECIPROCAL_VALUE(B) be (((1LL << 32) + (B - 1))/ B) | ||
14 | * Then A / B = (u32)(((u64)(A) * (R)) >> 32) | ||
15 | * | ||
16 | * This replaces a divide by a multiply (and a shift), and | ||
17 | * is generally less expensive in CPU cycles. | ||
18 | */ | ||
19 | |||
20 | /* | ||
21 | * Computes the reciprocal value (R) for the value B of the divisor. | ||
22 | * Should not be called before each reciprocal_divide(), | ||
23 | * or else the performance is slower than a normal divide. | ||
24 | */ | ||
25 | extern u32 reciprocal_value(u32 B); | ||
26 | |||
27 | |||
28 | static inline u32 reciprocal_divide(u32 A, u32 R) | ||
29 | { | ||
30 | return (u32)(((u64)A * R) >> 32); | ||
31 | } | ||
32 | #endif | ||
diff --git a/include/linux/sched.h b/include/linux/sched.h index ea92e5c89089..446373535190 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -1144,7 +1144,6 @@ static inline void put_task_struct(struct task_struct *t) | |||
1144 | #define PF_MEMALLOC 0x00000800 /* Allocating memory */ | 1144 | #define PF_MEMALLOC 0x00000800 /* Allocating memory */ |
1145 | #define PF_FLUSHER 0x00001000 /* responsible for disk writeback */ | 1145 | #define PF_FLUSHER 0x00001000 /* responsible for disk writeback */ |
1146 | #define PF_USED_MATH 0x00002000 /* if unset the fpu must be initialized before use */ | 1146 | #define PF_USED_MATH 0x00002000 /* if unset the fpu must be initialized before use */ |
1147 | #define PF_FREEZE 0x00004000 /* this task is being frozen for suspend now */ | ||
1148 | #define PF_NOFREEZE 0x00008000 /* this thread should not be frozen */ | 1147 | #define PF_NOFREEZE 0x00008000 /* this thread should not be frozen */ |
1149 | #define PF_FROZEN 0x00010000 /* frozen for system suspend */ | 1148 | #define PF_FROZEN 0x00010000 /* frozen for system suspend */ |
1150 | #define PF_FSTRANS 0x00020000 /* inside a filesystem transaction */ | 1149 | #define PF_FSTRANS 0x00020000 /* inside a filesystem transaction */ |
diff --git a/include/linux/slab.h b/include/linux/slab.h index 2271886744f8..1ef822e31c77 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h | |||
@@ -1,7 +1,9 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/linux/slab.h | 2 | * Written by Mark Hemment, 1996 (markhe@nextd.demon.co.uk). |
3 | * Written by Mark Hemment, 1996. | 3 | * |
4 | * (markhe@nextd.demon.co.uk) | 4 | * (C) SGI 2006, Christoph Lameter <clameter@sgi.com> |
5 | * Cleaned up and restructured to ease the addition of alternative | ||
6 | * implementations of SLAB allocators. | ||
5 | */ | 7 | */ |
6 | 8 | ||
7 | #ifndef _LINUX_SLAB_H | 9 | #ifndef _LINUX_SLAB_H |
@@ -10,64 +12,95 @@ | |||
10 | #ifdef __KERNEL__ | 12 | #ifdef __KERNEL__ |
11 | 13 | ||
12 | #include <linux/gfp.h> | 14 | #include <linux/gfp.h> |
13 | #include <linux/init.h> | ||
14 | #include <linux/types.h> | 15 | #include <linux/types.h> |
15 | #include <asm/page.h> /* kmalloc_sizes.h needs PAGE_SIZE */ | ||
16 | #include <asm/cache.h> /* kmalloc_sizes.h needs L1_CACHE_BYTES */ | ||
17 | #include <linux/compiler.h> | ||
18 | 16 | ||
19 | /* kmem_cache_t exists for legacy reasons and is not used by code in mm */ | ||
20 | typedef struct kmem_cache kmem_cache_t __deprecated; | 17 | typedef struct kmem_cache kmem_cache_t __deprecated; |
21 | 18 | ||
22 | /* flags to pass to kmem_cache_create(). | 19 | /* |
23 | * The first 3 are only valid when the allocator as been build | 20 | * Flags to pass to kmem_cache_create(). |
24 | * SLAB_DEBUG_SUPPORT. | 21 | * The ones marked DEBUG are only valid if CONFIG_SLAB_DEBUG is set. |
25 | */ | 22 | */ |
26 | #define SLAB_DEBUG_FREE 0x00000100UL /* Peform (expensive) checks on free */ | 23 | #define SLAB_DEBUG_FREE 0x00000100UL /* DEBUG: Perform (expensive) checks on free */ |
27 | #define SLAB_DEBUG_INITIAL 0x00000200UL /* Call constructor (as verifier) */ | 24 | #define SLAB_DEBUG_INITIAL 0x00000200UL /* DEBUG: Call constructor (as verifier) */ |
28 | #define SLAB_RED_ZONE 0x00000400UL /* Red zone objs in a cache */ | 25 | #define SLAB_RED_ZONE 0x00000400UL /* DEBUG: Red zone objs in a cache */ |
29 | #define SLAB_POISON 0x00000800UL /* Poison objects */ | 26 | #define SLAB_POISON 0x00000800UL /* DEBUG: Poison objects */ |
30 | #define SLAB_HWCACHE_ALIGN 0x00002000UL /* align objs on a h/w cache lines */ | 27 | #define SLAB_HWCACHE_ALIGN 0x00002000UL /* Align objs on cache lines */ |
31 | #define SLAB_CACHE_DMA 0x00004000UL /* use GFP_DMA memory */ | 28 | #define SLAB_CACHE_DMA 0x00004000UL /* Use GFP_DMA memory */ |
32 | #define SLAB_MUST_HWCACHE_ALIGN 0x00008000UL /* force alignment */ | 29 | #define SLAB_MUST_HWCACHE_ALIGN 0x00008000UL /* Force alignment even if debuggin is active */ |
33 | #define SLAB_STORE_USER 0x00010000UL /* store the last owner for bug hunting */ | 30 | #define SLAB_STORE_USER 0x00010000UL /* DEBUG: Store the last owner for bug hunting */ |
34 | #define SLAB_RECLAIM_ACCOUNT 0x00020000UL /* track pages allocated to indicate | 31 | #define SLAB_RECLAIM_ACCOUNT 0x00020000UL /* Objects are reclaimable */ |
35 | what is reclaimable later*/ | 32 | #define SLAB_PANIC 0x00040000UL /* Panic if kmem_cache_create() fails */ |
36 | #define SLAB_PANIC 0x00040000UL /* panic if kmem_cache_create() fails */ | 33 | #define SLAB_DESTROY_BY_RCU 0x00080000UL /* Defer freeing slabs to RCU */ |
37 | #define SLAB_DESTROY_BY_RCU 0x00080000UL /* defer freeing pages to RCU */ | ||
38 | #define SLAB_MEM_SPREAD 0x00100000UL /* Spread some memory over cpuset */ | 34 | #define SLAB_MEM_SPREAD 0x00100000UL /* Spread some memory over cpuset */ |
39 | 35 | ||
40 | /* flags passed to a constructor func */ | 36 | /* Flags passed to a constructor functions */ |
41 | #define SLAB_CTOR_CONSTRUCTOR 0x001UL /* if not set, then deconstructor */ | 37 | #define SLAB_CTOR_CONSTRUCTOR 0x001UL /* If not set, then deconstructor */ |
42 | #define SLAB_CTOR_ATOMIC 0x002UL /* tell constructor it can't sleep */ | 38 | #define SLAB_CTOR_ATOMIC 0x002UL /* Tell constructor it can't sleep */ |
43 | #define SLAB_CTOR_VERIFY 0x004UL /* tell constructor it's a verify call */ | 39 | #define SLAB_CTOR_VERIFY 0x004UL /* Tell constructor it's a verify call */ |
44 | 40 | ||
45 | #ifndef CONFIG_SLOB | 41 | /* |
46 | 42 | * struct kmem_cache related prototypes | |
47 | /* prototypes */ | 43 | */ |
48 | extern void __init kmem_cache_init(void); | 44 | void __init kmem_cache_init(void); |
45 | extern int slab_is_available(void); | ||
49 | 46 | ||
50 | extern struct kmem_cache *kmem_cache_create(const char *, size_t, size_t, | 47 | struct kmem_cache *kmem_cache_create(const char *, size_t, size_t, |
51 | unsigned long, | 48 | unsigned long, |
52 | void (*)(void *, struct kmem_cache *, unsigned long), | 49 | void (*)(void *, struct kmem_cache *, unsigned long), |
53 | void (*)(void *, struct kmem_cache *, unsigned long)); | 50 | void (*)(void *, struct kmem_cache *, unsigned long)); |
54 | extern void kmem_cache_destroy(struct kmem_cache *); | 51 | void kmem_cache_destroy(struct kmem_cache *); |
55 | extern int kmem_cache_shrink(struct kmem_cache *); | 52 | int kmem_cache_shrink(struct kmem_cache *); |
56 | extern void *kmem_cache_alloc(struct kmem_cache *, gfp_t); | 53 | void *kmem_cache_alloc(struct kmem_cache *, gfp_t); |
57 | extern void *kmem_cache_zalloc(struct kmem_cache *, gfp_t); | 54 | void *kmem_cache_zalloc(struct kmem_cache *, gfp_t); |
58 | extern void kmem_cache_free(struct kmem_cache *, void *); | 55 | void kmem_cache_free(struct kmem_cache *, void *); |
59 | extern unsigned int kmem_cache_size(struct kmem_cache *); | 56 | unsigned int kmem_cache_size(struct kmem_cache *); |
60 | extern const char *kmem_cache_name(struct kmem_cache *); | 57 | const char *kmem_cache_name(struct kmem_cache *); |
58 | int kmem_ptr_validate(struct kmem_cache *cachep, const void *ptr); | ||
59 | |||
60 | #ifdef CONFIG_NUMA | ||
61 | extern void *kmem_cache_alloc_node(struct kmem_cache *, gfp_t flags, int node); | ||
62 | #else | ||
63 | static inline void *kmem_cache_alloc_node(struct kmem_cache *cachep, | ||
64 | gfp_t flags, int node) | ||
65 | { | ||
66 | return kmem_cache_alloc(cachep, flags); | ||
67 | } | ||
68 | #endif | ||
69 | |||
70 | /* | ||
71 | * Common kmalloc functions provided by all allocators | ||
72 | */ | ||
73 | void *__kmalloc(size_t, gfp_t); | ||
74 | void *__kzalloc(size_t, gfp_t); | ||
75 | void kfree(const void *); | ||
76 | unsigned int ksize(const void *); | ||
77 | |||
78 | /** | ||
79 | * kcalloc - allocate memory for an array. The memory is set to zero. | ||
80 | * @n: number of elements. | ||
81 | * @size: element size. | ||
82 | * @flags: the type of memory to allocate. | ||
83 | */ | ||
84 | static inline void *kcalloc(size_t n, size_t size, gfp_t flags) | ||
85 | { | ||
86 | if (n != 0 && size > ULONG_MAX / n) | ||
87 | return NULL; | ||
88 | return __kzalloc(n * size, flags); | ||
89 | } | ||
61 | 90 | ||
62 | /* Size description struct for general caches. */ | 91 | /* |
63 | struct cache_sizes { | 92 | * Allocator specific definitions. These are mainly used to establish optimized |
64 | size_t cs_size; | 93 | * ways to convert kmalloc() calls to kmem_cache_alloc() invocations by selecting |
65 | struct kmem_cache *cs_cachep; | 94 | * the appropriate general cache at compile time. |
66 | struct kmem_cache *cs_dmacachep; | 95 | */ |
67 | }; | ||
68 | extern struct cache_sizes malloc_sizes[]; | ||
69 | 96 | ||
70 | extern void *__kmalloc(size_t, gfp_t); | 97 | #ifdef CONFIG_SLAB |
98 | #include <linux/slab_def.h> | ||
99 | #else | ||
100 | /* | ||
101 | * Fallback definitions for an allocator not wanting to provide | ||
102 | * its own optimized kmalloc definitions (like SLOB). | ||
103 | */ | ||
71 | 104 | ||
72 | /** | 105 | /** |
73 | * kmalloc - allocate memory | 106 | * kmalloc - allocate memory |
@@ -116,46 +149,9 @@ extern void *__kmalloc(size_t, gfp_t); | |||
116 | */ | 149 | */ |
117 | static inline void *kmalloc(size_t size, gfp_t flags) | 150 | static inline void *kmalloc(size_t size, gfp_t flags) |
118 | { | 151 | { |
119 | if (__builtin_constant_p(size)) { | ||
120 | int i = 0; | ||
121 | #define CACHE(x) \ | ||
122 | if (size <= x) \ | ||
123 | goto found; \ | ||
124 | else \ | ||
125 | i++; | ||
126 | #include "kmalloc_sizes.h" | ||
127 | #undef CACHE | ||
128 | { | ||
129 | extern void __you_cannot_kmalloc_that_much(void); | ||
130 | __you_cannot_kmalloc_that_much(); | ||
131 | } | ||
132 | found: | ||
133 | return kmem_cache_alloc((flags & GFP_DMA) ? | ||
134 | malloc_sizes[i].cs_dmacachep : | ||
135 | malloc_sizes[i].cs_cachep, flags); | ||
136 | } | ||
137 | return __kmalloc(size, flags); | 152 | return __kmalloc(size, flags); |
138 | } | 153 | } |
139 | 154 | ||
140 | /* | ||
141 | * kmalloc_track_caller is a special version of kmalloc that records the | ||
142 | * calling function of the routine calling it for slab leak tracking instead | ||
143 | * of just the calling function (confusing, eh?). | ||
144 | * It's useful when the call to kmalloc comes from a widely-used standard | ||
145 | * allocator where we care about the real place the memory allocation | ||
146 | * request comes from. | ||
147 | */ | ||
148 | #ifndef CONFIG_DEBUG_SLAB | ||
149 | #define kmalloc_track_caller(size, flags) \ | ||
150 | __kmalloc(size, flags) | ||
151 | #else | ||
152 | extern void *__kmalloc_track_caller(size_t, gfp_t, void*); | ||
153 | #define kmalloc_track_caller(size, flags) \ | ||
154 | __kmalloc_track_caller(size, flags, __builtin_return_address(0)) | ||
155 | #endif | ||
156 | |||
157 | extern void *__kzalloc(size_t, gfp_t); | ||
158 | |||
159 | /** | 155 | /** |
160 | * kzalloc - allocate memory. The memory is set to zero. | 156 | * kzalloc - allocate memory. The memory is set to zero. |
161 | * @size: how many bytes of memory are required. | 157 | * @size: how many bytes of memory are required. |
@@ -163,72 +159,41 @@ extern void *__kzalloc(size_t, gfp_t); | |||
163 | */ | 159 | */ |
164 | static inline void *kzalloc(size_t size, gfp_t flags) | 160 | static inline void *kzalloc(size_t size, gfp_t flags) |
165 | { | 161 | { |
166 | if (__builtin_constant_p(size)) { | ||
167 | int i = 0; | ||
168 | #define CACHE(x) \ | ||
169 | if (size <= x) \ | ||
170 | goto found; \ | ||
171 | else \ | ||
172 | i++; | ||
173 | #include "kmalloc_sizes.h" | ||
174 | #undef CACHE | ||
175 | { | ||
176 | extern void __you_cannot_kzalloc_that_much(void); | ||
177 | __you_cannot_kzalloc_that_much(); | ||
178 | } | ||
179 | found: | ||
180 | return kmem_cache_zalloc((flags & GFP_DMA) ? | ||
181 | malloc_sizes[i].cs_dmacachep : | ||
182 | malloc_sizes[i].cs_cachep, flags); | ||
183 | } | ||
184 | return __kzalloc(size, flags); | 162 | return __kzalloc(size, flags); |
185 | } | 163 | } |
164 | #endif | ||
186 | 165 | ||
187 | /** | 166 | #ifndef CONFIG_NUMA |
188 | * kcalloc - allocate memory for an array. The memory is set to zero. | 167 | static inline void *kmalloc_node(size_t size, gfp_t flags, int node) |
189 | * @n: number of elements. | ||
190 | * @size: element size. | ||
191 | * @flags: the type of memory to allocate. | ||
192 | */ | ||
193 | static inline void *kcalloc(size_t n, size_t size, gfp_t flags) | ||
194 | { | 168 | { |
195 | if (n != 0 && size > ULONG_MAX / n) | 169 | return kmalloc(size, flags); |
196 | return NULL; | ||
197 | return kzalloc(n * size, flags); | ||
198 | } | 170 | } |
199 | 171 | ||
200 | extern void kfree(const void *); | 172 | static inline void *__kmalloc_node(size_t size, gfp_t flags, int node) |
201 | extern unsigned int ksize(const void *); | ||
202 | extern int slab_is_available(void); | ||
203 | |||
204 | #ifdef CONFIG_NUMA | ||
205 | extern void *kmem_cache_alloc_node(struct kmem_cache *, gfp_t flags, int node); | ||
206 | extern void *__kmalloc_node(size_t size, gfp_t flags, int node); | ||
207 | |||
208 | static inline void *kmalloc_node(size_t size, gfp_t flags, int node) | ||
209 | { | 173 | { |
210 | if (__builtin_constant_p(size)) { | 174 | return __kmalloc(size, flags); |
211 | int i = 0; | ||
212 | #define CACHE(x) \ | ||
213 | if (size <= x) \ | ||
214 | goto found; \ | ||
215 | else \ | ||
216 | i++; | ||
217 | #include "kmalloc_sizes.h" | ||
218 | #undef CACHE | ||
219 | { | ||
220 | extern void __you_cannot_kmalloc_that_much(void); | ||
221 | __you_cannot_kmalloc_that_much(); | ||
222 | } | ||
223 | found: | ||
224 | return kmem_cache_alloc_node((flags & GFP_DMA) ? | ||
225 | malloc_sizes[i].cs_dmacachep : | ||
226 | malloc_sizes[i].cs_cachep, flags, node); | ||
227 | } | ||
228 | return __kmalloc_node(size, flags, node); | ||
229 | } | 175 | } |
176 | #endif /* !CONFIG_NUMA */ | ||
230 | 177 | ||
231 | /* | 178 | /* |
179 | * kmalloc_track_caller is a special version of kmalloc that records the | ||
180 | * calling function of the routine calling it for slab leak tracking instead | ||
181 | * of just the calling function (confusing, eh?). | ||
182 | * It's useful when the call to kmalloc comes from a widely-used standard | ||
183 | * allocator where we care about the real place the memory allocation | ||
184 | * request comes from. | ||
185 | */ | ||
186 | #ifdef CONFIG_DEBUG_SLAB | ||
187 | extern void *__kmalloc_track_caller(size_t, gfp_t, void*); | ||
188 | #define kmalloc_track_caller(size, flags) \ | ||
189 | __kmalloc_track_caller(size, flags, __builtin_return_address(0)) | ||
190 | #else | ||
191 | #define kmalloc_track_caller(size, flags) \ | ||
192 | __kmalloc(size, flags) | ||
193 | #endif /* DEBUG_SLAB */ | ||
194 | |||
195 | #ifdef CONFIG_NUMA | ||
196 | /* | ||
232 | * kmalloc_node_track_caller is a special version of kmalloc_node that | 197 | * kmalloc_node_track_caller is a special version of kmalloc_node that |
233 | * records the calling function of the routine calling it for slab leak | 198 | * records the calling function of the routine calling it for slab leak |
234 | * tracking instead of just the calling function (confusing, eh?). | 199 | * tracking instead of just the calling function (confusing, eh?). |
@@ -236,70 +201,23 @@ found: | |||
236 | * standard allocator where we care about the real place the memory | 201 | * standard allocator where we care about the real place the memory |
237 | * allocation request comes from. | 202 | * allocation request comes from. |
238 | */ | 203 | */ |
239 | #ifndef CONFIG_DEBUG_SLAB | 204 | #ifdef CONFIG_DEBUG_SLAB |
240 | #define kmalloc_node_track_caller(size, flags, node) \ | ||
241 | __kmalloc_node(size, flags, node) | ||
242 | #else | ||
243 | extern void *__kmalloc_node_track_caller(size_t, gfp_t, int, void *); | 205 | extern void *__kmalloc_node_track_caller(size_t, gfp_t, int, void *); |
244 | #define kmalloc_node_track_caller(size, flags, node) \ | 206 | #define kmalloc_node_track_caller(size, flags, node) \ |
245 | __kmalloc_node_track_caller(size, flags, node, \ | 207 | __kmalloc_node_track_caller(size, flags, node, \ |
246 | __builtin_return_address(0)) | 208 | __builtin_return_address(0)) |
209 | #else | ||
210 | #define kmalloc_node_track_caller(size, flags, node) \ | ||
211 | __kmalloc_node(size, flags, node) | ||
247 | #endif | 212 | #endif |
213 | |||
248 | #else /* CONFIG_NUMA */ | 214 | #else /* CONFIG_NUMA */ |
249 | static inline void *kmem_cache_alloc_node(struct kmem_cache *cachep, | ||
250 | gfp_t flags, int node) | ||
251 | { | ||
252 | return kmem_cache_alloc(cachep, flags); | ||
253 | } | ||
254 | static inline void *kmalloc_node(size_t size, gfp_t flags, int node) | ||
255 | { | ||
256 | return kmalloc(size, flags); | ||
257 | } | ||
258 | 215 | ||
259 | #define kmalloc_node_track_caller(size, flags, node) \ | 216 | #define kmalloc_node_track_caller(size, flags, node) \ |
260 | kmalloc_track_caller(size, flags) | 217 | kmalloc_track_caller(size, flags) |
261 | #endif | ||
262 | 218 | ||
263 | extern int FASTCALL(kmem_cache_reap(int)); | 219 | #endif /* DEBUG_SLAB */ |
264 | extern int FASTCALL(kmem_ptr_validate(struct kmem_cache *cachep, void *ptr)); | ||
265 | |||
266 | #else /* CONFIG_SLOB */ | ||
267 | |||
268 | /* SLOB allocator routines */ | ||
269 | |||
270 | void kmem_cache_init(void); | ||
271 | struct kmem_cache *kmem_cache_create(const char *c, size_t, size_t, | ||
272 | unsigned long, | ||
273 | void (*)(void *, struct kmem_cache *, unsigned long), | ||
274 | void (*)(void *, struct kmem_cache *, unsigned long)); | ||
275 | void kmem_cache_destroy(struct kmem_cache *c); | ||
276 | void *kmem_cache_alloc(struct kmem_cache *c, gfp_t flags); | ||
277 | void *kmem_cache_zalloc(struct kmem_cache *, gfp_t); | ||
278 | void kmem_cache_free(struct kmem_cache *c, void *b); | ||
279 | const char *kmem_cache_name(struct kmem_cache *); | ||
280 | void *kmalloc(size_t size, gfp_t flags); | ||
281 | void *__kzalloc(size_t size, gfp_t flags); | ||
282 | void kfree(const void *m); | ||
283 | unsigned int ksize(const void *m); | ||
284 | unsigned int kmem_cache_size(struct kmem_cache *c); | ||
285 | |||
286 | static inline void *kcalloc(size_t n, size_t size, gfp_t flags) | ||
287 | { | ||
288 | return __kzalloc(n * size, flags); | ||
289 | } | ||
290 | |||
291 | #define kmem_cache_shrink(d) (0) | ||
292 | #define kmem_cache_reap(a) | ||
293 | #define kmem_ptr_validate(a, b) (0) | ||
294 | #define kmem_cache_alloc_node(c, f, n) kmem_cache_alloc(c, f) | ||
295 | #define kmalloc_node(s, f, n) kmalloc(s, f) | ||
296 | #define kzalloc(s, f) __kzalloc(s, f) | ||
297 | #define kmalloc_track_caller kmalloc | ||
298 | |||
299 | #define kmalloc_node_track_caller kmalloc_node | ||
300 | |||
301 | #endif /* CONFIG_SLOB */ | ||
302 | 220 | ||
303 | #endif /* __KERNEL__ */ | 221 | #endif /* __KERNEL__ */ |
304 | |||
305 | #endif /* _LINUX_SLAB_H */ | 222 | #endif /* _LINUX_SLAB_H */ |
223 | |||
diff --git a/include/linux/slab_def.h b/include/linux/slab_def.h new file mode 100644 index 000000000000..4b463e66ddea --- /dev/null +++ b/include/linux/slab_def.h | |||
@@ -0,0 +1,100 @@ | |||
1 | #ifndef _LINUX_SLAB_DEF_H | ||
2 | #define _LINUX_SLAB_DEF_H | ||
3 | |||
4 | /* | ||
5 | * Definitions unique to the original Linux SLAB allocator. | ||
6 | * | ||
7 | * What we provide here is a way to optimize the frequent kmalloc | ||
8 | * calls in the kernel by selecting the appropriate general cache | ||
9 | * if kmalloc was called with a size that can be established at | ||
10 | * compile time. | ||
11 | */ | ||
12 | |||
13 | #include <linux/init.h> | ||
14 | #include <asm/page.h> /* kmalloc_sizes.h needs PAGE_SIZE */ | ||
15 | #include <asm/cache.h> /* kmalloc_sizes.h needs L1_CACHE_BYTES */ | ||
16 | #include <linux/compiler.h> | ||
17 | |||
18 | /* Size description struct for general caches. */ | ||
19 | struct cache_sizes { | ||
20 | size_t cs_size; | ||
21 | struct kmem_cache *cs_cachep; | ||
22 | struct kmem_cache *cs_dmacachep; | ||
23 | }; | ||
24 | extern struct cache_sizes malloc_sizes[]; | ||
25 | |||
26 | static inline void *kmalloc(size_t size, gfp_t flags) | ||
27 | { | ||
28 | if (__builtin_constant_p(size)) { | ||
29 | int i = 0; | ||
30 | #define CACHE(x) \ | ||
31 | if (size <= x) \ | ||
32 | goto found; \ | ||
33 | else \ | ||
34 | i++; | ||
35 | #include "kmalloc_sizes.h" | ||
36 | #undef CACHE | ||
37 | { | ||
38 | extern void __you_cannot_kmalloc_that_much(void); | ||
39 | __you_cannot_kmalloc_that_much(); | ||
40 | } | ||
41 | found: | ||
42 | return kmem_cache_alloc((flags & GFP_DMA) ? | ||
43 | malloc_sizes[i].cs_dmacachep : | ||
44 | malloc_sizes[i].cs_cachep, flags); | ||
45 | } | ||
46 | return __kmalloc(size, flags); | ||
47 | } | ||
48 | |||
49 | static inline void *kzalloc(size_t size, gfp_t flags) | ||
50 | { | ||
51 | if (__builtin_constant_p(size)) { | ||
52 | int i = 0; | ||
53 | #define CACHE(x) \ | ||
54 | if (size <= x) \ | ||
55 | goto found; \ | ||
56 | else \ | ||
57 | i++; | ||
58 | #include "kmalloc_sizes.h" | ||
59 | #undef CACHE | ||
60 | { | ||
61 | extern void __you_cannot_kzalloc_that_much(void); | ||
62 | __you_cannot_kzalloc_that_much(); | ||
63 | } | ||
64 | found: | ||
65 | return kmem_cache_zalloc((flags & GFP_DMA) ? | ||
66 | malloc_sizes[i].cs_dmacachep : | ||
67 | malloc_sizes[i].cs_cachep, flags); | ||
68 | } | ||
69 | return __kzalloc(size, flags); | ||
70 | } | ||
71 | |||
72 | #ifdef CONFIG_NUMA | ||
73 | extern void *__kmalloc_node(size_t size, gfp_t flags, int node); | ||
74 | |||
75 | static inline void *kmalloc_node(size_t size, gfp_t flags, int node) | ||
76 | { | ||
77 | if (__builtin_constant_p(size)) { | ||
78 | int i = 0; | ||
79 | #define CACHE(x) \ | ||
80 | if (size <= x) \ | ||
81 | goto found; \ | ||
82 | else \ | ||
83 | i++; | ||
84 | #include "kmalloc_sizes.h" | ||
85 | #undef CACHE | ||
86 | { | ||
87 | extern void __you_cannot_kmalloc_that_much(void); | ||
88 | __you_cannot_kmalloc_that_much(); | ||
89 | } | ||
90 | found: | ||
91 | return kmem_cache_alloc_node((flags & GFP_DMA) ? | ||
92 | malloc_sizes[i].cs_dmacachep : | ||
93 | malloc_sizes[i].cs_cachep, flags, node); | ||
94 | } | ||
95 | return __kmalloc_node(size, flags, node); | ||
96 | } | ||
97 | |||
98 | #endif /* CONFIG_NUMA */ | ||
99 | |||
100 | #endif /* _LINUX_SLAB_DEF_H */ | ||
diff --git a/include/linux/smb_fs_sb.h b/include/linux/smb_fs_sb.h index 5b4ae2cc445c..3aa97aa4277f 100644 --- a/include/linux/smb_fs_sb.h +++ b/include/linux/smb_fs_sb.h | |||
@@ -55,7 +55,7 @@ struct smb_sb_info { | |||
55 | * generation is incremented. | 55 | * generation is incremented. |
56 | */ | 56 | */ |
57 | unsigned int generation; | 57 | unsigned int generation; |
58 | pid_t conn_pid; | 58 | struct pid *conn_pid; |
59 | struct smb_conn_opt opt; | 59 | struct smb_conn_opt opt; |
60 | wait_queue_head_t conn_wq; | 60 | wait_queue_head_t conn_wq; |
61 | int conn_complete; | 61 | int conn_complete; |
diff --git a/include/linux/sysrq.h b/include/linux/sysrq.h index 9df8833670cb..98a1d8cfb73d 100644 --- a/include/linux/sysrq.h +++ b/include/linux/sysrq.h | |||
@@ -37,23 +37,37 @@ struct sysrq_key_op { | |||
37 | 37 | ||
38 | #ifdef CONFIG_MAGIC_SYSRQ | 38 | #ifdef CONFIG_MAGIC_SYSRQ |
39 | 39 | ||
40 | extern int sysrq_on(void); | ||
41 | |||
42 | /* | ||
43 | * Do not use this one directly: | ||
44 | */ | ||
45 | extern int __sysrq_enabled; | ||
46 | |||
40 | /* Generic SysRq interface -- you may call it from any device driver, supplying | 47 | /* Generic SysRq interface -- you may call it from any device driver, supplying |
41 | * ASCII code of the key, pointer to registers and kbd/tty structs (if they | 48 | * ASCII code of the key, pointer to registers and kbd/tty structs (if they |
42 | * are available -- else NULL's). | 49 | * are available -- else NULL's). |
43 | */ | 50 | */ |
44 | 51 | ||
45 | void handle_sysrq(int, struct tty_struct *); | 52 | void handle_sysrq(int key, struct tty_struct *tty); |
46 | void __handle_sysrq(int, struct tty_struct *, int check_mask); | 53 | void __handle_sysrq(int key, struct tty_struct *tty, int check_mask); |
47 | int register_sysrq_key(int, struct sysrq_key_op *); | 54 | int register_sysrq_key(int key, struct sysrq_key_op *op); |
48 | int unregister_sysrq_key(int, struct sysrq_key_op *); | 55 | int unregister_sysrq_key(int key, struct sysrq_key_op *op); |
49 | struct sysrq_key_op *__sysrq_get_key_op(int key); | 56 | struct sysrq_key_op *__sysrq_get_key_op(int key); |
50 | 57 | ||
51 | #else | 58 | #else |
52 | 59 | ||
60 | static inline int sysrq_on(void) | ||
61 | { | ||
62 | return 0; | ||
63 | } | ||
53 | static inline int __reterr(void) | 64 | static inline int __reterr(void) |
54 | { | 65 | { |
55 | return -EINVAL; | 66 | return -EINVAL; |
56 | } | 67 | } |
68 | static inline void handle_sysrq(int key, struct tty_struct *tty) | ||
69 | { | ||
70 | } | ||
57 | 71 | ||
58 | #define register_sysrq_key(ig,nore) __reterr() | 72 | #define register_sysrq_key(ig,nore) __reterr() |
59 | #define unregister_sysrq_key(ig,nore) __reterr() | 73 | #define unregister_sysrq_key(ig,nore) __reterr() |
diff --git a/include/linux/unwind.h b/include/linux/unwind.h index 749928c161fb..7760860fa170 100644 --- a/include/linux/unwind.h +++ b/include/linux/unwind.h | |||
@@ -14,63 +14,6 @@ | |||
14 | 14 | ||
15 | struct module; | 15 | struct module; |
16 | 16 | ||
17 | #ifdef CONFIG_STACK_UNWIND | ||
18 | |||
19 | #include <asm/unwind.h> | ||
20 | |||
21 | #ifndef ARCH_UNWIND_SECTION_NAME | ||
22 | #define ARCH_UNWIND_SECTION_NAME ".eh_frame" | ||
23 | #endif | ||
24 | |||
25 | /* | ||
26 | * Initialize unwind support. | ||
27 | */ | ||
28 | extern void unwind_init(void); | ||
29 | extern void unwind_setup(void); | ||
30 | |||
31 | #ifdef CONFIG_MODULES | ||
32 | |||
33 | extern void *unwind_add_table(struct module *, | ||
34 | const void *table_start, | ||
35 | unsigned long table_size); | ||
36 | |||
37 | extern void unwind_remove_table(void *handle, int init_only); | ||
38 | |||
39 | #endif | ||
40 | |||
41 | extern int unwind_init_frame_info(struct unwind_frame_info *, | ||
42 | struct task_struct *, | ||
43 | /*const*/ struct pt_regs *); | ||
44 | |||
45 | /* | ||
46 | * Prepare to unwind a blocked task. | ||
47 | */ | ||
48 | extern int unwind_init_blocked(struct unwind_frame_info *, | ||
49 | struct task_struct *); | ||
50 | |||
51 | /* | ||
52 | * Prepare to unwind the currently running thread. | ||
53 | */ | ||
54 | extern int unwind_init_running(struct unwind_frame_info *, | ||
55 | asmlinkage int (*callback)(struct unwind_frame_info *, | ||
56 | void *arg), | ||
57 | void *arg); | ||
58 | |||
59 | /* | ||
60 | * Unwind to previous to frame. Returns 0 if successful, negative | ||
61 | * number in case of an error. | ||
62 | */ | ||
63 | extern int unwind(struct unwind_frame_info *); | ||
64 | |||
65 | /* | ||
66 | * Unwind until the return pointer is in user-land (or until an error | ||
67 | * occurs). Returns 0 if successful, negative number in case of | ||
68 | * error. | ||
69 | */ | ||
70 | extern int unwind_to_user(struct unwind_frame_info *); | ||
71 | |||
72 | #else | ||
73 | |||
74 | struct unwind_frame_info {}; | 17 | struct unwind_frame_info {}; |
75 | 18 | ||
76 | static inline void unwind_init(void) {} | 19 | static inline void unwind_init(void) {} |
@@ -85,12 +28,12 @@ static inline void *unwind_add_table(struct module *mod, | |||
85 | return NULL; | 28 | return NULL; |
86 | } | 29 | } |
87 | 30 | ||
88 | #endif | ||
89 | |||
90 | static inline void unwind_remove_table(void *handle, int init_only) | 31 | static inline void unwind_remove_table(void *handle, int init_only) |
91 | { | 32 | { |
92 | } | 33 | } |
93 | 34 | ||
35 | #endif | ||
36 | |||
94 | static inline int unwind_init_frame_info(struct unwind_frame_info *info, | 37 | static inline int unwind_init_frame_info(struct unwind_frame_info *info, |
95 | struct task_struct *tsk, | 38 | struct task_struct *tsk, |
96 | const struct pt_regs *regs) | 39 | const struct pt_regs *regs) |
@@ -122,6 +65,4 @@ static inline int unwind_to_user(struct unwind_frame_info *info) | |||
122 | return -ENOSYS; | 65 | return -ENOSYS; |
123 | } | 66 | } |
124 | 67 | ||
125 | #endif | ||
126 | |||
127 | #endif /* _LINUX_UNWIND_H */ | 68 | #endif /* _LINUX_UNWIND_H */ |
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h index edef8d50b26b..2a7b38d87018 100644 --- a/include/linux/workqueue.h +++ b/include/linux/workqueue.h | |||
@@ -8,16 +8,21 @@ | |||
8 | #include <linux/timer.h> | 8 | #include <linux/timer.h> |
9 | #include <linux/linkage.h> | 9 | #include <linux/linkage.h> |
10 | #include <linux/bitops.h> | 10 | #include <linux/bitops.h> |
11 | #include <asm/atomic.h> | ||
11 | 12 | ||
12 | struct workqueue_struct; | 13 | struct workqueue_struct; |
13 | 14 | ||
14 | struct work_struct; | 15 | struct work_struct; |
15 | typedef void (*work_func_t)(struct work_struct *work); | 16 | typedef void (*work_func_t)(struct work_struct *work); |
16 | 17 | ||
18 | /* | ||
19 | * The first word is the work queue pointer and the flags rolled into | ||
20 | * one | ||
21 | */ | ||
22 | #define work_data_bits(work) ((unsigned long *)(&(work)->data)) | ||
23 | |||
17 | struct work_struct { | 24 | struct work_struct { |
18 | /* the first word is the work queue pointer and the flags rolled into | 25 | atomic_long_t data; |
19 | * one */ | ||
20 | unsigned long management; | ||
21 | #define WORK_STRUCT_PENDING 0 /* T if work item pending execution */ | 26 | #define WORK_STRUCT_PENDING 0 /* T if work item pending execution */ |
22 | #define WORK_STRUCT_NOAUTOREL 1 /* F if work item automatically released on exec */ | 27 | #define WORK_STRUCT_NOAUTOREL 1 /* F if work item automatically released on exec */ |
23 | #define WORK_STRUCT_FLAG_MASK (3UL) | 28 | #define WORK_STRUCT_FLAG_MASK (3UL) |
@@ -26,6 +31,9 @@ struct work_struct { | |||
26 | work_func_t func; | 31 | work_func_t func; |
27 | }; | 32 | }; |
28 | 33 | ||
34 | #define WORK_DATA_INIT(autorelease) \ | ||
35 | ATOMIC_LONG_INIT((autorelease) << WORK_STRUCT_NOAUTOREL) | ||
36 | |||
29 | struct delayed_work { | 37 | struct delayed_work { |
30 | struct work_struct work; | 38 | struct work_struct work; |
31 | struct timer_list timer; | 39 | struct timer_list timer; |
@@ -36,13 +44,13 @@ struct execute_work { | |||
36 | }; | 44 | }; |
37 | 45 | ||
38 | #define __WORK_INITIALIZER(n, f) { \ | 46 | #define __WORK_INITIALIZER(n, f) { \ |
39 | .management = 0, \ | 47 | .data = WORK_DATA_INIT(0), \ |
40 | .entry = { &(n).entry, &(n).entry }, \ | 48 | .entry = { &(n).entry, &(n).entry }, \ |
41 | .func = (f), \ | 49 | .func = (f), \ |
42 | } | 50 | } |
43 | 51 | ||
44 | #define __WORK_INITIALIZER_NAR(n, f) { \ | 52 | #define __WORK_INITIALIZER_NAR(n, f) { \ |
45 | .management = (1 << WORK_STRUCT_NOAUTOREL), \ | 53 | .data = WORK_DATA_INIT(1), \ |
46 | .entry = { &(n).entry, &(n).entry }, \ | 54 | .entry = { &(n).entry, &(n).entry }, \ |
47 | .func = (f), \ | 55 | .func = (f), \ |
48 | } | 56 | } |
@@ -82,17 +90,21 @@ struct execute_work { | |||
82 | 90 | ||
83 | /* | 91 | /* |
84 | * initialize all of a work item in one go | 92 | * initialize all of a work item in one go |
93 | * | ||
94 | * NOTE! No point in using "atomic_long_set()": useing a direct | ||
95 | * assignment of the work data initializer allows the compiler | ||
96 | * to generate better code. | ||
85 | */ | 97 | */ |
86 | #define INIT_WORK(_work, _func) \ | 98 | #define INIT_WORK(_work, _func) \ |
87 | do { \ | 99 | do { \ |
88 | (_work)->management = 0; \ | 100 | (_work)->data = (atomic_long_t) WORK_DATA_INIT(0); \ |
89 | INIT_LIST_HEAD(&(_work)->entry); \ | 101 | INIT_LIST_HEAD(&(_work)->entry); \ |
90 | PREPARE_WORK((_work), (_func)); \ | 102 | PREPARE_WORK((_work), (_func)); \ |
91 | } while (0) | 103 | } while (0) |
92 | 104 | ||
93 | #define INIT_WORK_NAR(_work, _func) \ | 105 | #define INIT_WORK_NAR(_work, _func) \ |
94 | do { \ | 106 | do { \ |
95 | (_work)->management = (1 << WORK_STRUCT_NOAUTOREL); \ | 107 | (_work)->data = (atomic_long_t) WORK_DATA_INIT(1); \ |
96 | INIT_LIST_HEAD(&(_work)->entry); \ | 108 | INIT_LIST_HEAD(&(_work)->entry); \ |
97 | PREPARE_WORK((_work), (_func)); \ | 109 | PREPARE_WORK((_work), (_func)); \ |
98 | } while (0) | 110 | } while (0) |
@@ -114,15 +126,15 @@ struct execute_work { | |||
114 | * @work: The work item in question | 126 | * @work: The work item in question |
115 | */ | 127 | */ |
116 | #define work_pending(work) \ | 128 | #define work_pending(work) \ |
117 | test_bit(WORK_STRUCT_PENDING, &(work)->management) | 129 | test_bit(WORK_STRUCT_PENDING, work_data_bits(work)) |
118 | 130 | ||
119 | /** | 131 | /** |
120 | * delayed_work_pending - Find out whether a delayable work item is currently | 132 | * delayed_work_pending - Find out whether a delayable work item is currently |
121 | * pending | 133 | * pending |
122 | * @work: The work item in question | 134 | * @work: The work item in question |
123 | */ | 135 | */ |
124 | #define delayed_work_pending(work) \ | 136 | #define delayed_work_pending(w) \ |
125 | test_bit(WORK_STRUCT_PENDING, &(work)->work.management) | 137 | work_pending(&(w)->work) |
126 | 138 | ||
127 | /** | 139 | /** |
128 | * work_release - Release a work item under execution | 140 | * work_release - Release a work item under execution |
@@ -143,7 +155,7 @@ struct execute_work { | |||
143 | * This should also be used to release a delayed work item. | 155 | * This should also be used to release a delayed work item. |
144 | */ | 156 | */ |
145 | #define work_release(work) \ | 157 | #define work_release(work) \ |
146 | clear_bit(WORK_STRUCT_PENDING, &(work)->management) | 158 | clear_bit(WORK_STRUCT_PENDING, work_data_bits(work)) |
147 | 159 | ||
148 | 160 | ||
149 | extern struct workqueue_struct *__create_workqueue(const char *name, | 161 | extern struct workqueue_struct *__create_workqueue(const char *name, |
@@ -188,7 +200,7 @@ static inline int cancel_delayed_work(struct delayed_work *work) | |||
188 | 200 | ||
189 | ret = del_timer_sync(&work->timer); | 201 | ret = del_timer_sync(&work->timer); |
190 | if (ret) | 202 | if (ret) |
191 | clear_bit(WORK_STRUCT_PENDING, &work->work.management); | 203 | work_release(&work->work); |
192 | return ret; | 204 | return ret; |
193 | } | 205 | } |
194 | 206 | ||
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h index 10a3eec191fd..41456c148842 100644 --- a/include/net/bluetooth/hci.h +++ b/include/net/bluetooth/hci.h | |||
@@ -739,13 +739,13 @@ struct sockaddr_hci { | |||
739 | struct hci_filter { | 739 | struct hci_filter { |
740 | unsigned long type_mask; | 740 | unsigned long type_mask; |
741 | unsigned long event_mask[2]; | 741 | unsigned long event_mask[2]; |
742 | __u16 opcode; | 742 | __le16 opcode; |
743 | }; | 743 | }; |
744 | 744 | ||
745 | struct hci_ufilter { | 745 | struct hci_ufilter { |
746 | __u32 type_mask; | 746 | __u32 type_mask; |
747 | __u32 event_mask[2]; | 747 | __u32 event_mask[2]; |
748 | __u16 opcode; | 748 | __le16 opcode; |
749 | }; | 749 | }; |
750 | 750 | ||
751 | #define HCI_FLT_TYPE_BITS 31 | 751 | #define HCI_FLT_TYPE_BITS 31 |
diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h index f9cde44f93b4..7be4f4e3a0f2 100644 --- a/include/net/ip6_fib.h +++ b/include/net/ip6_fib.h | |||
@@ -50,9 +50,9 @@ struct fib6_node | |||
50 | struct fib6_node *parent; | 50 | struct fib6_node *parent; |
51 | struct fib6_node *left; | 51 | struct fib6_node *left; |
52 | struct fib6_node *right; | 52 | struct fib6_node *right; |
53 | 53 | #ifdef CONFIG_IPV6_SUBTREES | |
54 | struct fib6_node *subtree; | 54 | struct fib6_node *subtree; |
55 | 55 | #endif | |
56 | struct rt6_info *leaf; | 56 | struct rt6_info *leaf; |
57 | 57 | ||
58 | __u16 fn_bit; /* bit key */ | 58 | __u16 fn_bit; /* bit key */ |
diff --git a/include/net/netfilter/nf_conntrack_compat.h b/include/net/netfilter/nf_conntrack_compat.h index f1b1482d7200..b9ce5c80d9d5 100644 --- a/include/net/netfilter/nf_conntrack_compat.h +++ b/include/net/netfilter/nf_conntrack_compat.h | |||
@@ -64,6 +64,16 @@ static inline int nf_ct_get_ctinfo(const struct sk_buff *skb, | |||
64 | return (ct != NULL); | 64 | return (ct != NULL); |
65 | } | 65 | } |
66 | 66 | ||
67 | static inline int nf_ct_l3proto_try_module_get(unsigned short l3proto) | ||
68 | { | ||
69 | need_conntrack(); | ||
70 | return l3proto == PF_INET ? 0 : -1; | ||
71 | } | ||
72 | |||
73 | static inline void nf_ct_l3proto_module_put(unsigned short l3proto) | ||
74 | { | ||
75 | } | ||
76 | |||
67 | #else /* CONFIG_IP_NF_CONNTRACK */ | 77 | #else /* CONFIG_IP_NF_CONNTRACK */ |
68 | 78 | ||
69 | #include <net/netfilter/ipv4/nf_conntrack_ipv4.h> | 79 | #include <net/netfilter/ipv4/nf_conntrack_ipv4.h> |
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index c089f93ba591..8d7f26d684e5 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h | |||
@@ -201,13 +201,12 @@ extern struct sctp_globals { | |||
201 | struct sctp_bind_hashbucket *port_hashtable; | 201 | struct sctp_bind_hashbucket *port_hashtable; |
202 | 202 | ||
203 | /* This is the global local address list. | 203 | /* This is the global local address list. |
204 | * We actively maintain this complete list of interfaces on | 204 | * We actively maintain this complete list of addresses on |
205 | * the system by catching routing events. | 205 | * the system by catching address add/delete events. |
206 | * | 206 | * |
207 | * It is a list of sctp_sockaddr_entry. | 207 | * It is a list of sctp_sockaddr_entry. |
208 | */ | 208 | */ |
209 | struct list_head local_addr_list; | 209 | struct list_head local_addr_list; |
210 | spinlock_t local_addr_lock; | ||
211 | 210 | ||
212 | /* Flag to indicate if addip is enabled. */ | 211 | /* Flag to indicate if addip is enabled. */ |
213 | int addip_enable; | 212 | int addip_enable; |
@@ -243,7 +242,6 @@ extern struct sctp_globals { | |||
243 | #define sctp_port_alloc_lock (sctp_globals.port_alloc_lock) | 242 | #define sctp_port_alloc_lock (sctp_globals.port_alloc_lock) |
244 | #define sctp_port_hashtable (sctp_globals.port_hashtable) | 243 | #define sctp_port_hashtable (sctp_globals.port_hashtable) |
245 | #define sctp_local_addr_list (sctp_globals.local_addr_list) | 244 | #define sctp_local_addr_list (sctp_globals.local_addr_list) |
246 | #define sctp_local_addr_lock (sctp_globals.local_addr_lock) | ||
247 | #define sctp_addip_enable (sctp_globals.addip_enable) | 245 | #define sctp_addip_enable (sctp_globals.addip_enable) |
248 | #define sctp_prsctp_enable (sctp_globals.prsctp_enable) | 246 | #define sctp_prsctp_enable (sctp_globals.prsctp_enable) |
249 | 247 | ||
@@ -277,6 +275,7 @@ struct sctp_sock { | |||
277 | __u16 default_flags; | 275 | __u16 default_flags; |
278 | __u32 default_context; | 276 | __u32 default_context; |
279 | __u32 default_timetolive; | 277 | __u32 default_timetolive; |
278 | __u32 default_rcv_context; | ||
280 | 279 | ||
281 | /* Heartbeat interval: The endpoint sends out a Heartbeat chunk to | 280 | /* Heartbeat interval: The endpoint sends out a Heartbeat chunk to |
282 | * the destination address every heartbeat interval. This value | 281 | * the destination address every heartbeat interval. This value |
@@ -1659,6 +1658,9 @@ struct sctp_association { | |||
1659 | __u32 default_context; | 1658 | __u32 default_context; |
1660 | __u32 default_timetolive; | 1659 | __u32 default_timetolive; |
1661 | 1660 | ||
1661 | /* Default receive parameters */ | ||
1662 | __u32 default_rcv_context; | ||
1663 | |||
1662 | /* This tracks outbound ssn for a given stream. */ | 1664 | /* This tracks outbound ssn for a given stream. */ |
1663 | struct sctp_ssnmap *ssnmap; | 1665 | struct sctp_ssnmap *ssnmap; |
1664 | 1666 | ||
diff --git a/include/net/sctp/user.h b/include/net/sctp/user.h index 1b7aae6cdd82..9e4a39fd129d 100644 --- a/include/net/sctp/user.h +++ b/include/net/sctp/user.h | |||
@@ -95,6 +95,8 @@ enum sctp_optname { | |||
95 | #define SCTP_GET_PEER_ADDR_INFO SCTP_GET_PEER_ADDR_INFO | 95 | #define SCTP_GET_PEER_ADDR_INFO SCTP_GET_PEER_ADDR_INFO |
96 | SCTP_DELAYED_ACK_TIME, | 96 | SCTP_DELAYED_ACK_TIME, |
97 | #define SCTP_DELAYED_ACK_TIME SCTP_DELAYED_ACK_TIME | 97 | #define SCTP_DELAYED_ACK_TIME SCTP_DELAYED_ACK_TIME |
98 | SCTP_CONTEXT, /* Receive Context */ | ||
99 | #define SCTP_CONTEXT SCTP_CONTEXT | ||
98 | 100 | ||
99 | /* Internal Socket Options. Some of the sctp library functions are | 101 | /* Internal Socket Options. Some of the sctp library functions are |
100 | * implemented using these socket options. | 102 | * implemented using these socket options. |
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index fd2353fa7e12..0bfa3328d686 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h | |||
@@ -1456,9 +1456,9 @@ struct ib_mr *ib_get_dma_mr(struct ib_pd *pd, int mr_access_flags); | |||
1456 | */ | 1456 | */ |
1457 | static inline int ib_dma_mapping_error(struct ib_device *dev, u64 dma_addr) | 1457 | static inline int ib_dma_mapping_error(struct ib_device *dev, u64 dma_addr) |
1458 | { | 1458 | { |
1459 | return dev->dma_ops ? | 1459 | if (dev->dma_ops) |
1460 | dev->dma_ops->mapping_error(dev, dma_addr) : | 1460 | return dev->dma_ops->mapping_error(dev, dma_addr); |
1461 | dma_mapping_error(dma_addr); | 1461 | return dma_mapping_error(dma_addr); |
1462 | } | 1462 | } |
1463 | 1463 | ||
1464 | /** | 1464 | /** |
@@ -1472,9 +1472,9 @@ static inline u64 ib_dma_map_single(struct ib_device *dev, | |||
1472 | void *cpu_addr, size_t size, | 1472 | void *cpu_addr, size_t size, |
1473 | enum dma_data_direction direction) | 1473 | enum dma_data_direction direction) |
1474 | { | 1474 | { |
1475 | return dev->dma_ops ? | 1475 | if (dev->dma_ops) |
1476 | dev->dma_ops->map_single(dev, cpu_addr, size, direction) : | 1476 | return dev->dma_ops->map_single(dev, cpu_addr, size, direction); |
1477 | dma_map_single(dev->dma_device, cpu_addr, size, direction); | 1477 | return dma_map_single(dev->dma_device, cpu_addr, size, direction); |
1478 | } | 1478 | } |
1479 | 1479 | ||
1480 | /** | 1480 | /** |
@@ -1488,8 +1488,9 @@ static inline void ib_dma_unmap_single(struct ib_device *dev, | |||
1488 | u64 addr, size_t size, | 1488 | u64 addr, size_t size, |
1489 | enum dma_data_direction direction) | 1489 | enum dma_data_direction direction) |
1490 | { | 1490 | { |
1491 | dev->dma_ops ? | 1491 | if (dev->dma_ops) |
1492 | dev->dma_ops->unmap_single(dev, addr, size, direction) : | 1492 | dev->dma_ops->unmap_single(dev, addr, size, direction); |
1493 | else | ||
1493 | dma_unmap_single(dev->dma_device, addr, size, direction); | 1494 | dma_unmap_single(dev->dma_device, addr, size, direction); |
1494 | } | 1495 | } |
1495 | 1496 | ||
@@ -1507,9 +1508,9 @@ static inline u64 ib_dma_map_page(struct ib_device *dev, | |||
1507 | size_t size, | 1508 | size_t size, |
1508 | enum dma_data_direction direction) | 1509 | enum dma_data_direction direction) |
1509 | { | 1510 | { |
1510 | return dev->dma_ops ? | 1511 | if (dev->dma_ops) |
1511 | dev->dma_ops->map_page(dev, page, offset, size, direction) : | 1512 | return dev->dma_ops->map_page(dev, page, offset, size, direction); |
1512 | dma_map_page(dev->dma_device, page, offset, size, direction); | 1513 | return dma_map_page(dev->dma_device, page, offset, size, direction); |
1513 | } | 1514 | } |
1514 | 1515 | ||
1515 | /** | 1516 | /** |
@@ -1523,8 +1524,9 @@ static inline void ib_dma_unmap_page(struct ib_device *dev, | |||
1523 | u64 addr, size_t size, | 1524 | u64 addr, size_t size, |
1524 | enum dma_data_direction direction) | 1525 | enum dma_data_direction direction) |
1525 | { | 1526 | { |
1526 | dev->dma_ops ? | 1527 | if (dev->dma_ops) |
1527 | dev->dma_ops->unmap_page(dev, addr, size, direction) : | 1528 | dev->dma_ops->unmap_page(dev, addr, size, direction); |
1529 | else | ||
1528 | dma_unmap_page(dev->dma_device, addr, size, direction); | 1530 | dma_unmap_page(dev->dma_device, addr, size, direction); |
1529 | } | 1531 | } |
1530 | 1532 | ||
@@ -1539,9 +1541,9 @@ static inline int ib_dma_map_sg(struct ib_device *dev, | |||
1539 | struct scatterlist *sg, int nents, | 1541 | struct scatterlist *sg, int nents, |
1540 | enum dma_data_direction direction) | 1542 | enum dma_data_direction direction) |
1541 | { | 1543 | { |
1542 | return dev->dma_ops ? | 1544 | if (dev->dma_ops) |
1543 | dev->dma_ops->map_sg(dev, sg, nents, direction) : | 1545 | return dev->dma_ops->map_sg(dev, sg, nents, direction); |
1544 | dma_map_sg(dev->dma_device, sg, nents, direction); | 1546 | return dma_map_sg(dev->dma_device, sg, nents, direction); |
1545 | } | 1547 | } |
1546 | 1548 | ||
1547 | /** | 1549 | /** |
@@ -1555,8 +1557,9 @@ static inline void ib_dma_unmap_sg(struct ib_device *dev, | |||
1555 | struct scatterlist *sg, int nents, | 1557 | struct scatterlist *sg, int nents, |
1556 | enum dma_data_direction direction) | 1558 | enum dma_data_direction direction) |
1557 | { | 1559 | { |
1558 | dev->dma_ops ? | 1560 | if (dev->dma_ops) |
1559 | dev->dma_ops->unmap_sg(dev, sg, nents, direction) : | 1561 | dev->dma_ops->unmap_sg(dev, sg, nents, direction); |
1562 | else | ||
1560 | dma_unmap_sg(dev->dma_device, sg, nents, direction); | 1563 | dma_unmap_sg(dev->dma_device, sg, nents, direction); |
1561 | } | 1564 | } |
1562 | 1565 | ||
@@ -1568,8 +1571,9 @@ static inline void ib_dma_unmap_sg(struct ib_device *dev, | |||
1568 | static inline u64 ib_sg_dma_address(struct ib_device *dev, | 1571 | static inline u64 ib_sg_dma_address(struct ib_device *dev, |
1569 | struct scatterlist *sg) | 1572 | struct scatterlist *sg) |
1570 | { | 1573 | { |
1571 | return dev->dma_ops ? | 1574 | if (dev->dma_ops) |
1572 | dev->dma_ops->dma_address(dev, sg) : sg_dma_address(sg); | 1575 | return dev->dma_ops->dma_address(dev, sg); |
1576 | return sg_dma_address(sg); | ||
1573 | } | 1577 | } |
1574 | 1578 | ||
1575 | /** | 1579 | /** |
@@ -1580,8 +1584,9 @@ static inline u64 ib_sg_dma_address(struct ib_device *dev, | |||
1580 | static inline unsigned int ib_sg_dma_len(struct ib_device *dev, | 1584 | static inline unsigned int ib_sg_dma_len(struct ib_device *dev, |
1581 | struct scatterlist *sg) | 1585 | struct scatterlist *sg) |
1582 | { | 1586 | { |
1583 | return dev->dma_ops ? | 1587 | if (dev->dma_ops) |
1584 | dev->dma_ops->dma_len(dev, sg) : sg_dma_len(sg); | 1588 | return dev->dma_ops->dma_len(dev, sg); |
1589 | return sg_dma_len(sg); | ||
1585 | } | 1590 | } |
1586 | 1591 | ||
1587 | /** | 1592 | /** |
@@ -1596,8 +1601,9 @@ static inline void ib_dma_sync_single_for_cpu(struct ib_device *dev, | |||
1596 | size_t size, | 1601 | size_t size, |
1597 | enum dma_data_direction dir) | 1602 | enum dma_data_direction dir) |
1598 | { | 1603 | { |
1599 | dev->dma_ops ? | 1604 | if (dev->dma_ops) |
1600 | dev->dma_ops->sync_single_for_cpu(dev, addr, size, dir) : | 1605 | dev->dma_ops->sync_single_for_cpu(dev, addr, size, dir); |
1606 | else | ||
1601 | dma_sync_single_for_cpu(dev->dma_device, addr, size, dir); | 1607 | dma_sync_single_for_cpu(dev->dma_device, addr, size, dir); |
1602 | } | 1608 | } |
1603 | 1609 | ||
@@ -1613,8 +1619,9 @@ static inline void ib_dma_sync_single_for_device(struct ib_device *dev, | |||
1613 | size_t size, | 1619 | size_t size, |
1614 | enum dma_data_direction dir) | 1620 | enum dma_data_direction dir) |
1615 | { | 1621 | { |
1616 | dev->dma_ops ? | 1622 | if (dev->dma_ops) |
1617 | dev->dma_ops->sync_single_for_device(dev, addr, size, dir) : | 1623 | dev->dma_ops->sync_single_for_device(dev, addr, size, dir); |
1624 | else | ||
1618 | dma_sync_single_for_device(dev->dma_device, addr, size, dir); | 1625 | dma_sync_single_for_device(dev->dma_device, addr, size, dir); |
1619 | } | 1626 | } |
1620 | 1627 | ||
@@ -1630,9 +1637,16 @@ static inline void *ib_dma_alloc_coherent(struct ib_device *dev, | |||
1630 | u64 *dma_handle, | 1637 | u64 *dma_handle, |
1631 | gfp_t flag) | 1638 | gfp_t flag) |
1632 | { | 1639 | { |
1633 | return dev->dma_ops ? | 1640 | if (dev->dma_ops) |
1634 | dev->dma_ops->alloc_coherent(dev, size, dma_handle, flag) : | 1641 | return dev->dma_ops->alloc_coherent(dev, size, dma_handle, flag); |
1635 | dma_alloc_coherent(dev->dma_device, size, dma_handle, flag); | 1642 | else { |
1643 | dma_addr_t handle; | ||
1644 | void *ret; | ||
1645 | |||
1646 | ret = dma_alloc_coherent(dev->dma_device, size, &handle, flag); | ||
1647 | *dma_handle = handle; | ||
1648 | return ret; | ||
1649 | } | ||
1636 | } | 1650 | } |
1637 | 1651 | ||
1638 | /** | 1652 | /** |
@@ -1646,8 +1660,9 @@ static inline void ib_dma_free_coherent(struct ib_device *dev, | |||
1646 | size_t size, void *cpu_addr, | 1660 | size_t size, void *cpu_addr, |
1647 | u64 dma_handle) | 1661 | u64 dma_handle) |
1648 | { | 1662 | { |
1649 | dev->dma_ops ? | 1663 | if (dev->dma_ops) |
1650 | dev->dma_ops->free_coherent(dev, size, cpu_addr, dma_handle) : | 1664 | dev->dma_ops->free_coherent(dev, size, cpu_addr, dma_handle); |
1665 | else | ||
1651 | dma_free_coherent(dev->dma_device, size, cpu_addr, dma_handle); | 1666 | dma_free_coherent(dev->dma_device, size, cpu_addr, dma_handle); |
1652 | } | 1667 | } |
1653 | 1668 | ||
diff --git a/include/video/sstfb.h b/include/video/sstfb.h index 5dbf5e7e50a8..baa163f770ab 100644 --- a/include/video/sstfb.h +++ b/include/video/sstfb.h | |||
@@ -119,7 +119,7 @@ | |||
119 | #define BACKPORCH 0x0208 | 119 | #define BACKPORCH 0x0208 |
120 | #define VIDEODIMENSIONS 0x020c | 120 | #define VIDEODIMENSIONS 0x020c |
121 | #define FBIINIT0 0x0210 /* misc+fifo controls */ | 121 | #define FBIINIT0 0x0210 /* misc+fifo controls */ |
122 | # define EN_VGA_PASSTHROUGH BIT(0) | 122 | # define DIS_VGA_PASSTHROUGH BIT(0) |
123 | # define FBI_RESET BIT(1) | 123 | # define FBI_RESET BIT(1) |
124 | # define FIFO_RESET BIT(2) | 124 | # define FIFO_RESET BIT(2) |
125 | #define FBIINIT1 0x0214 /* PCI + video controls */ | 125 | #define FBIINIT1 0x0214 /* PCI + video controls */ |
@@ -251,7 +251,7 @@ | |||
251 | # define DACREG_ICS_CLK1_A 0 /* bit4 */ | 251 | # define DACREG_ICS_CLK1_A 0 /* bit4 */ |
252 | 252 | ||
253 | /* sst default init registers */ | 253 | /* sst default init registers */ |
254 | #define FBIINIT0_DEFAULT EN_VGA_PASSTHROUGH | 254 | #define FBIINIT0_DEFAULT DIS_VGA_PASSTHROUGH |
255 | 255 | ||
256 | #define FBIINIT1_DEFAULT \ | 256 | #define FBIINIT1_DEFAULT \ |
257 | ( \ | 257 | ( \ |
@@ -296,6 +296,11 @@ | |||
296 | * | 296 | * |
297 | */ | 297 | */ |
298 | 298 | ||
299 | /* ioctl to enable/disable VGA passthrough */ | ||
300 | #define SSTFB_SET_VGAPASS _IOW('F', 0xdd, __u32) | ||
301 | #define SSTFB_GET_VGAPASS _IOR('F', 0xdd, __u32) | ||
302 | |||
303 | |||
299 | /* used to know witch clock to set */ | 304 | /* used to know witch clock to set */ |
300 | enum { | 305 | enum { |
301 | VID_CLOCK=0, | 306 | VID_CLOCK=0, |
@@ -317,7 +322,7 @@ struct pll_timing { | |||
317 | }; | 322 | }; |
318 | 323 | ||
319 | struct dac_switch { | 324 | struct dac_switch { |
320 | char * name; | 325 | const char *name; |
321 | int (*detect) (struct fb_info *info); | 326 | int (*detect) (struct fb_info *info); |
322 | int (*set_pll) (struct fb_info *info, const struct pll_timing *t, const int clock); | 327 | int (*set_pll) (struct fb_info *info, const struct pll_timing *t, const int clock); |
323 | void (*set_vidmod) (struct fb_info *info, const int bpp); | 328 | void (*set_vidmod) (struct fb_info *info, const int bpp); |
@@ -345,7 +350,7 @@ struct sstfb_par { | |||
345 | struct pci_dev *dev; | 350 | struct pci_dev *dev; |
346 | int type; | 351 | int type; |
347 | u8 revision; | 352 | u8 revision; |
348 | int gfx_clock; /* status */ | 353 | u8 vgapass; /* VGA pass through: 1=enabled, 0=disabled */ |
349 | }; | 354 | }; |
350 | 355 | ||
351 | #endif /* _SSTFB_H_ */ | 356 | #endif /* _SSTFB_H_ */ |