diff options
Diffstat (limited to 'arch')
30 files changed, 159 insertions, 328 deletions
diff --git a/arch/Kconfig b/arch/Kconfig index 78a35e9dc104..99193b160232 100644 --- a/arch/Kconfig +++ b/arch/Kconfig | |||
@@ -112,3 +112,5 @@ config HAVE_DMA_API_DEBUG | |||
112 | 112 | ||
113 | config HAVE_DEFAULT_NO_SPIN_MUTEXES | 113 | config HAVE_DEFAULT_NO_SPIN_MUTEXES |
114 | bool | 114 | bool |
115 | |||
116 | source "kernel/gcov/Kconfig" | ||
diff --git a/arch/avr32/kernel/process.c b/arch/avr32/kernel/process.c index 1bbe1da54869..93c0342530a0 100644 --- a/arch/avr32/kernel/process.c +++ b/arch/avr32/kernel/process.c | |||
@@ -394,8 +394,6 @@ asmlinkage int sys_execve(char __user *ufilename, char __user *__user *uargv, | |||
394 | goto out; | 394 | goto out; |
395 | 395 | ||
396 | error = do_execve(filename, uargv, uenvp, regs); | 396 | error = do_execve(filename, uargv, uenvp, regs); |
397 | if (error == 0) | ||
398 | current->ptrace &= ~PT_DTRACE; | ||
399 | putname(filename); | 397 | putname(filename); |
400 | 398 | ||
401 | out: | 399 | out: |
diff --git a/arch/h8300/kernel/asm-offsets.c b/arch/h8300/kernel/asm-offsets.c index 2042552e0871..fd961e0bd741 100644 --- a/arch/h8300/kernel/asm-offsets.c +++ b/arch/h8300/kernel/asm-offsets.c | |||
@@ -55,7 +55,6 @@ int main(void) | |||
55 | DEFINE(LRET, offsetof(struct pt_regs, pc) - sizeof(long)); | 55 | DEFINE(LRET, offsetof(struct pt_regs, pc) - sizeof(long)); |
56 | 56 | ||
57 | DEFINE(PT_PTRACED, PT_PTRACED); | 57 | DEFINE(PT_PTRACED, PT_PTRACED); |
58 | DEFINE(PT_DTRACE, PT_DTRACE); | ||
59 | 58 | ||
60 | return 0; | 59 | return 0; |
61 | } | 60 | } |
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 294a3b13ecac..170042b420d4 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig | |||
@@ -28,6 +28,7 @@ config IA64 | |||
28 | select HAVE_DMA_ATTRS | 28 | select HAVE_DMA_ATTRS |
29 | select HAVE_KVM | 29 | select HAVE_KVM |
30 | select HAVE_ARCH_TRACEHOOK | 30 | select HAVE_ARCH_TRACEHOOK |
31 | select HAVE_DMA_API_DEBUG | ||
31 | default y | 32 | default y |
32 | help | 33 | help |
33 | The Itanium Processor Family is Intel's 64-bit successor to | 34 | The Itanium Processor Family is Intel's 64-bit successor to |
diff --git a/arch/ia64/include/asm/dma-mapping.h b/arch/ia64/include/asm/dma-mapping.h index 36c0009dbece..5a61b5c2e18f 100644 --- a/arch/ia64/include/asm/dma-mapping.h +++ b/arch/ia64/include/asm/dma-mapping.h | |||
@@ -8,6 +8,7 @@ | |||
8 | #include <asm/machvec.h> | 8 | #include <asm/machvec.h> |
9 | #include <linux/scatterlist.h> | 9 | #include <linux/scatterlist.h> |
10 | #include <asm/swiotlb.h> | 10 | #include <asm/swiotlb.h> |
11 | #include <linux/dma-debug.h> | ||
11 | 12 | ||
12 | #define ARCH_HAS_DMA_GET_REQUIRED_MASK | 13 | #define ARCH_HAS_DMA_GET_REQUIRED_MASK |
13 | 14 | ||
@@ -24,95 +25,28 @@ static inline void *dma_alloc_coherent(struct device *dev, size_t size, | |||
24 | dma_addr_t *daddr, gfp_t gfp) | 25 | dma_addr_t *daddr, gfp_t gfp) |
25 | { | 26 | { |
26 | struct dma_map_ops *ops = platform_dma_get_ops(dev); | 27 | struct dma_map_ops *ops = platform_dma_get_ops(dev); |
27 | return ops->alloc_coherent(dev, size, daddr, gfp); | 28 | void *caddr; |
29 | |||
30 | caddr = ops->alloc_coherent(dev, size, daddr, gfp); | ||
31 | debug_dma_alloc_coherent(dev, size, *daddr, caddr); | ||
32 | return caddr; | ||
28 | } | 33 | } |
29 | 34 | ||
30 | static inline void dma_free_coherent(struct device *dev, size_t size, | 35 | static inline void dma_free_coherent(struct device *dev, size_t size, |
31 | void *caddr, dma_addr_t daddr) | 36 | void *caddr, dma_addr_t daddr) |
32 | { | 37 | { |
33 | struct dma_map_ops *ops = platform_dma_get_ops(dev); | 38 | struct dma_map_ops *ops = platform_dma_get_ops(dev); |
39 | debug_dma_free_coherent(dev, size, caddr, daddr); | ||
34 | ops->free_coherent(dev, size, caddr, daddr); | 40 | ops->free_coherent(dev, size, caddr, daddr); |
35 | } | 41 | } |
36 | 42 | ||
37 | #define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) | 43 | #define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) |
38 | #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) | 44 | #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) |
39 | 45 | ||
40 | static inline dma_addr_t dma_map_single_attrs(struct device *dev, | 46 | #define get_dma_ops(dev) platform_dma_get_ops(dev) |
41 | void *caddr, size_t size, | 47 | #define flush_write_buffers() |
42 | enum dma_data_direction dir, | ||
43 | struct dma_attrs *attrs) | ||
44 | { | ||
45 | struct dma_map_ops *ops = platform_dma_get_ops(dev); | ||
46 | return ops->map_page(dev, virt_to_page(caddr), | ||
47 | (unsigned long)caddr & ~PAGE_MASK, size, | ||
48 | dir, attrs); | ||
49 | } | ||
50 | |||
51 | static inline void dma_unmap_single_attrs(struct device *dev, dma_addr_t daddr, | ||
52 | size_t size, | ||
53 | enum dma_data_direction dir, | ||
54 | struct dma_attrs *attrs) | ||
55 | { | ||
56 | struct dma_map_ops *ops = platform_dma_get_ops(dev); | ||
57 | ops->unmap_page(dev, daddr, size, dir, attrs); | ||
58 | } | ||
59 | |||
60 | #define dma_map_single(d, a, s, r) dma_map_single_attrs(d, a, s, r, NULL) | ||
61 | #define dma_unmap_single(d, a, s, r) dma_unmap_single_attrs(d, a, s, r, NULL) | ||
62 | |||
63 | static inline int dma_map_sg_attrs(struct device *dev, struct scatterlist *sgl, | ||
64 | int nents, enum dma_data_direction dir, | ||
65 | struct dma_attrs *attrs) | ||
66 | { | ||
67 | struct dma_map_ops *ops = platform_dma_get_ops(dev); | ||
68 | return ops->map_sg(dev, sgl, nents, dir, attrs); | ||
69 | } | ||
70 | |||
71 | static inline void dma_unmap_sg_attrs(struct device *dev, | ||
72 | struct scatterlist *sgl, int nents, | ||
73 | enum dma_data_direction dir, | ||
74 | struct dma_attrs *attrs) | ||
75 | { | ||
76 | struct dma_map_ops *ops = platform_dma_get_ops(dev); | ||
77 | ops->unmap_sg(dev, sgl, nents, dir, attrs); | ||
78 | } | ||
79 | |||
80 | #define dma_map_sg(d, s, n, r) dma_map_sg_attrs(d, s, n, r, NULL) | ||
81 | #define dma_unmap_sg(d, s, n, r) dma_unmap_sg_attrs(d, s, n, r, NULL) | ||
82 | |||
83 | static inline void dma_sync_single_for_cpu(struct device *dev, dma_addr_t daddr, | ||
84 | size_t size, | ||
85 | enum dma_data_direction dir) | ||
86 | { | ||
87 | struct dma_map_ops *ops = platform_dma_get_ops(dev); | ||
88 | ops->sync_single_for_cpu(dev, daddr, size, dir); | ||
89 | } | ||
90 | |||
91 | static inline void dma_sync_sg_for_cpu(struct device *dev, | ||
92 | struct scatterlist *sgl, | ||
93 | int nents, enum dma_data_direction dir) | ||
94 | { | ||
95 | struct dma_map_ops *ops = platform_dma_get_ops(dev); | ||
96 | ops->sync_sg_for_cpu(dev, sgl, nents, dir); | ||
97 | } | ||
98 | 48 | ||
99 | static inline void dma_sync_single_for_device(struct device *dev, | 49 | #include <asm-generic/dma-mapping-common.h> |
100 | dma_addr_t daddr, | ||
101 | size_t size, | ||
102 | enum dma_data_direction dir) | ||
103 | { | ||
104 | struct dma_map_ops *ops = platform_dma_get_ops(dev); | ||
105 | ops->sync_single_for_device(dev, daddr, size, dir); | ||
106 | } | ||
107 | |||
108 | static inline void dma_sync_sg_for_device(struct device *dev, | ||
109 | struct scatterlist *sgl, | ||
110 | int nents, | ||
111 | enum dma_data_direction dir) | ||
112 | { | ||
113 | struct dma_map_ops *ops = platform_dma_get_ops(dev); | ||
114 | ops->sync_sg_for_device(dev, sgl, nents, dir); | ||
115 | } | ||
116 | 50 | ||
117 | static inline int dma_mapping_error(struct device *dev, dma_addr_t daddr) | 51 | static inline int dma_mapping_error(struct device *dev, dma_addr_t daddr) |
118 | { | 52 | { |
@@ -120,30 +54,6 @@ static inline int dma_mapping_error(struct device *dev, dma_addr_t daddr) | |||
120 | return ops->mapping_error(dev, daddr); | 54 | return ops->mapping_error(dev, daddr); |
121 | } | 55 | } |
122 | 56 | ||
123 | static inline dma_addr_t dma_map_page(struct device *dev, struct page *page, | ||
124 | size_t offset, size_t size, | ||
125 | enum dma_data_direction dir) | ||
126 | { | ||
127 | struct dma_map_ops *ops = platform_dma_get_ops(dev); | ||
128 | return ops->map_page(dev, page, offset, size, dir, NULL); | ||
129 | } | ||
130 | |||
131 | static inline void dma_unmap_page(struct device *dev, dma_addr_t addr, | ||
132 | size_t size, enum dma_data_direction dir) | ||
133 | { | ||
134 | dma_unmap_single(dev, addr, size, dir); | ||
135 | } | ||
136 | |||
137 | /* | ||
138 | * Rest of this file is part of the "Advanced DMA API". Use at your own risk. | ||
139 | * See Documentation/DMA-API.txt for details. | ||
140 | */ | ||
141 | |||
142 | #define dma_sync_single_range_for_cpu(dev, dma_handle, offset, size, dir) \ | ||
143 | dma_sync_single_for_cpu(dev, dma_handle, size, dir) | ||
144 | #define dma_sync_single_range_for_device(dev, dma_handle, offset, size, dir) \ | ||
145 | dma_sync_single_for_device(dev, dma_handle, size, dir) | ||
146 | |||
147 | static inline int dma_supported(struct device *dev, u64 mask) | 57 | static inline int dma_supported(struct device *dev, u64 mask) |
148 | { | 58 | { |
149 | struct dma_map_ops *ops = platform_dma_get_ops(dev); | 59 | struct dma_map_ops *ops = platform_dma_get_ops(dev); |
diff --git a/arch/m32r/kernel/process.c b/arch/m32r/kernel/process.c index 3e876f0baebc..67a01e1e4283 100644 --- a/arch/m32r/kernel/process.c +++ b/arch/m32r/kernel/process.c | |||
@@ -302,11 +302,6 @@ asmlinkage int sys_execve(char __user *ufilename, char __user * __user *uargv, | |||
302 | goto out; | 302 | goto out; |
303 | 303 | ||
304 | error = do_execve(filename, uargv, uenvp, ®s); | 304 | error = do_execve(filename, uargv, uenvp, ®s); |
305 | if (error == 0) { | ||
306 | task_lock(current); | ||
307 | current->ptrace &= ~PT_DTRACE; | ||
308 | task_unlock(current); | ||
309 | } | ||
310 | putname(filename); | 305 | putname(filename); |
311 | out: | 306 | out: |
312 | return error; | 307 | return error; |
diff --git a/arch/m32r/kernel/ptrace.c b/arch/m32r/kernel/ptrace.c index 9aa615d3a5b2..bf0abe9e1f73 100644 --- a/arch/m32r/kernel/ptrace.c +++ b/arch/m32r/kernel/ptrace.c | |||
@@ -676,10 +676,6 @@ arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
676 | if (!valid_signal(data)) | 676 | if (!valid_signal(data)) |
677 | break; | 677 | break; |
678 | clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); | 678 | clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); |
679 | if ((child->ptrace & PT_DTRACE) == 0) { | ||
680 | /* Spurious delayed TF traps may occur */ | ||
681 | child->ptrace |= PT_DTRACE; | ||
682 | } | ||
683 | 679 | ||
684 | /* Compute next pc. */ | 680 | /* Compute next pc. */ |
685 | pc = get_stack_long(child, PT_BPC); | 681 | pc = get_stack_long(child, PT_BPC); |
diff --git a/arch/m68k/kernel/traps.c b/arch/m68k/kernel/traps.c index 184acc90808d..aacd6d17b833 100644 --- a/arch/m68k/kernel/traps.c +++ b/arch/m68k/kernel/traps.c | |||
@@ -1057,7 +1057,6 @@ asmlinkage void trap_c(struct frame *fp) | |||
1057 | if (fp->ptregs.sr & PS_S) { | 1057 | if (fp->ptregs.sr & PS_S) { |
1058 | if ((fp->ptregs.vector >> 2) == VEC_TRACE) { | 1058 | if ((fp->ptregs.vector >> 2) == VEC_TRACE) { |
1059 | /* traced a trapping instruction */ | 1059 | /* traced a trapping instruction */ |
1060 | current->ptrace |= PT_DTRACE; | ||
1061 | } else | 1060 | } else |
1062 | bad_super_trap(fp); | 1061 | bad_super_trap(fp); |
1063 | return; | 1062 | return; |
diff --git a/arch/m68knommu/kernel/asm-offsets.c b/arch/m68knommu/kernel/asm-offsets.c index f500dd6935d6..594ee0e657fe 100644 --- a/arch/m68knommu/kernel/asm-offsets.c +++ b/arch/m68knommu/kernel/asm-offsets.c | |||
@@ -73,7 +73,6 @@ int main(void) | |||
73 | DEFINE(TRAP_TRACE, TRAP_TRACE); | 73 | DEFINE(TRAP_TRACE, TRAP_TRACE); |
74 | 74 | ||
75 | DEFINE(PT_PTRACED, PT_PTRACED); | 75 | DEFINE(PT_PTRACED, PT_PTRACED); |
76 | DEFINE(PT_DTRACE, PT_DTRACE); | ||
77 | 76 | ||
78 | DEFINE(THREAD_SIZE, THREAD_SIZE); | 77 | DEFINE(THREAD_SIZE, THREAD_SIZE); |
79 | 78 | ||
diff --git a/arch/m68knommu/kernel/traps.c b/arch/m68knommu/kernel/traps.c index 5d5d56bcd0ef..51d325343ab5 100644 --- a/arch/m68knommu/kernel/traps.c +++ b/arch/m68knommu/kernel/traps.c | |||
@@ -200,7 +200,6 @@ asmlinkage void trap_c(struct frame *fp) | |||
200 | if (fp->ptregs.sr & PS_S) { | 200 | if (fp->ptregs.sr & PS_S) { |
201 | if ((fp->ptregs.vector >> 2) == VEC_TRACE) { | 201 | if ((fp->ptregs.vector >> 2) == VEC_TRACE) { |
202 | /* traced a trapping instruction */ | 202 | /* traced a trapping instruction */ |
203 | current->ptrace |= PT_DTRACE; | ||
204 | } else | 203 | } else |
205 | bad_super_trap(fp); | 204 | bad_super_trap(fp); |
206 | return; | 205 | return; |
diff --git a/arch/mn10300/include/asm/elf.h b/arch/mn10300/include/asm/elf.h index 49105462e6fc..75a70aa9fd6f 100644 --- a/arch/mn10300/include/asm/elf.h +++ b/arch/mn10300/include/asm/elf.h | |||
@@ -28,6 +28,8 @@ | |||
28 | #define R_MN10300_PCREL8 6 /* PC-relative 8-bit signed. */ | 28 | #define R_MN10300_PCREL8 6 /* PC-relative 8-bit signed. */ |
29 | #define R_MN10300_24 9 /* Direct 24 bit. */ | 29 | #define R_MN10300_24 9 /* Direct 24 bit. */ |
30 | #define R_MN10300_RELATIVE 23 /* Adjust by program base. */ | 30 | #define R_MN10300_RELATIVE 23 /* Adjust by program base. */ |
31 | #define R_MN10300_SYM_DIFF 33 /* Adjustment when relaxing. */ | ||
32 | #define R_MN10300_ALIGN 34 /* Alignment requirement. */ | ||
31 | 33 | ||
32 | /* | 34 | /* |
33 | * ELF register definitions.. | 35 | * ELF register definitions.. |
diff --git a/arch/mn10300/kernel/module.c b/arch/mn10300/kernel/module.c index 4fa0e3648d8e..6aea7fd76993 100644 --- a/arch/mn10300/kernel/module.c +++ b/arch/mn10300/kernel/module.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* MN10300 Kernel module helper routines | 1 | /* MN10300 Kernel module helper routines |
2 | * | 2 | * |
3 | * Copyright (C) 2007, 2008 Red Hat, Inc. All Rights Reserved. | 3 | * Copyright (C) 2007, 2008, 2009 Red Hat, Inc. All Rights Reserved. |
4 | * Written by Mark Salter (msalter@redhat.com) | 4 | * Written by Mark Salter (msalter@redhat.com) |
5 | * - Derived from arch/i386/kernel/module.c | 5 | * - Derived from arch/i386/kernel/module.c |
6 | * | 6 | * |
@@ -103,10 +103,10 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, | |||
103 | unsigned int relsec, | 103 | unsigned int relsec, |
104 | struct module *me) | 104 | struct module *me) |
105 | { | 105 | { |
106 | unsigned int i; | 106 | unsigned int i, sym_diff_seen = 0; |
107 | Elf32_Rela *rel = (void *)sechdrs[relsec].sh_addr; | 107 | Elf32_Rela *rel = (void *)sechdrs[relsec].sh_addr; |
108 | Elf32_Sym *sym; | 108 | Elf32_Sym *sym; |
109 | Elf32_Addr relocation; | 109 | Elf32_Addr relocation, sym_diff_val = 0; |
110 | uint8_t *location; | 110 | uint8_t *location; |
111 | uint32_t value; | 111 | uint32_t value; |
112 | 112 | ||
@@ -126,6 +126,22 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, | |||
126 | /* this is the adjustment to be made */ | 126 | /* this is the adjustment to be made */ |
127 | relocation = sym->st_value + rel[i].r_addend; | 127 | relocation = sym->st_value + rel[i].r_addend; |
128 | 128 | ||
129 | if (sym_diff_seen) { | ||
130 | switch (ELF32_R_TYPE(rel[i].r_info)) { | ||
131 | case R_MN10300_32: | ||
132 | case R_MN10300_24: | ||
133 | case R_MN10300_16: | ||
134 | case R_MN10300_8: | ||
135 | relocation -= sym_diff_val; | ||
136 | sym_diff_seen = 0; | ||
137 | break; | ||
138 | default: | ||
139 | printk(KERN_ERR "module %s: Unexpected SYM_DIFF relocation: %u\n", | ||
140 | me->name, ELF32_R_TYPE(rel[i].r_info)); | ||
141 | return -ENOEXEC; | ||
142 | } | ||
143 | } | ||
144 | |||
129 | switch (ELF32_R_TYPE(rel[i].r_info)) { | 145 | switch (ELF32_R_TYPE(rel[i].r_info)) { |
130 | /* for the first four relocation types, we simply | 146 | /* for the first four relocation types, we simply |
131 | * store the adjustment at the location given */ | 147 | * store the adjustment at the location given */ |
@@ -157,12 +173,29 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, | |||
157 | *location = relocation - (uint32_t) location; | 173 | *location = relocation - (uint32_t) location; |
158 | break; | 174 | break; |
159 | 175 | ||
176 | case R_MN10300_SYM_DIFF: | ||
177 | /* This is used to adjust the next reloc as required | ||
178 | * by relaxation. */ | ||
179 | sym_diff_seen = 1; | ||
180 | sym_diff_val = sym->st_value; | ||
181 | break; | ||
182 | |||
183 | case R_MN10300_ALIGN: | ||
184 | /* Just ignore the ALIGN relocs. | ||
185 | * Only interesting if kernel performed relaxation. */ | ||
186 | continue; | ||
187 | |||
160 | default: | 188 | default: |
161 | printk(KERN_ERR "module %s: Unknown relocation: %u\n", | 189 | printk(KERN_ERR "module %s: Unknown relocation: %u\n", |
162 | me->name, ELF32_R_TYPE(rel[i].r_info)); | 190 | me->name, ELF32_R_TYPE(rel[i].r_info)); |
163 | return -ENOEXEC; | 191 | return -ENOEXEC; |
164 | } | 192 | } |
165 | } | 193 | } |
194 | if (sym_diff_seen) { | ||
195 | printk(KERN_ERR "module %s: Nothing follows SYM_DIFF relocation: %u\n", | ||
196 | me->name, ELF32_R_TYPE(rel[i].r_info)); | ||
197 | return -ENOEXEC; | ||
198 | } | ||
166 | return 0; | 199 | return 0; |
167 | } | 200 | } |
168 | 201 | ||
diff --git a/arch/mn10300/kernel/process.c b/arch/mn10300/kernel/process.c index 234cf344cdce..892cce82867e 100644 --- a/arch/mn10300/kernel/process.c +++ b/arch/mn10300/kernel/process.c | |||
@@ -281,9 +281,6 @@ asmlinkage long sys_execve(char __user *name, | |||
281 | error = PTR_ERR(filename); | 281 | error = PTR_ERR(filename); |
282 | if (!IS_ERR(filename)) { | 282 | if (!IS_ERR(filename)) { |
283 | error = do_execve(filename, argv, envp, __frame); | 283 | error = do_execve(filename, argv, envp, __frame); |
284 | if (error == 0) | ||
285 | current->ptrace &= ~PT_DTRACE; | ||
286 | |||
287 | putname(filename); | 284 | putname(filename); |
288 | } | 285 | } |
289 | 286 | ||
diff --git a/arch/parisc/hpux/fs.c b/arch/parisc/hpux/fs.c index 5cbe9f9e5d9e..54075360a8fd 100644 --- a/arch/parisc/hpux/fs.c +++ b/arch/parisc/hpux/fs.c | |||
@@ -44,11 +44,6 @@ int hpux_execve(struct pt_regs *regs) | |||
44 | error = do_execve(filename, (char __user * __user *) regs->gr[25], | 44 | error = do_execve(filename, (char __user * __user *) regs->gr[25], |
45 | (char __user * __user *) regs->gr[24], regs); | 45 | (char __user * __user *) regs->gr[24], regs); |
46 | 46 | ||
47 | if (error == 0) { | ||
48 | task_lock(current); | ||
49 | current->ptrace &= ~PT_DTRACE; | ||
50 | task_unlock(current); | ||
51 | } | ||
52 | putname(filename); | 47 | putname(filename); |
53 | 48 | ||
54 | out: | 49 | out: |
diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c index 6f69101f90bb..61c07078c072 100644 --- a/arch/parisc/kernel/process.c +++ b/arch/parisc/kernel/process.c | |||
@@ -349,11 +349,6 @@ asmlinkage int sys_execve(struct pt_regs *regs) | |||
349 | goto out; | 349 | goto out; |
350 | error = do_execve(filename, (char __user * __user *) regs->gr[25], | 350 | error = do_execve(filename, (char __user * __user *) regs->gr[25], |
351 | (char __user * __user *) regs->gr[24], regs); | 351 | (char __user * __user *) regs->gr[24], regs); |
352 | if (error == 0) { | ||
353 | task_lock(current); | ||
354 | current->ptrace &= ~PT_DTRACE; | ||
355 | task_unlock(current); | ||
356 | } | ||
357 | putname(filename); | 352 | putname(filename); |
358 | out: | 353 | out: |
359 | 354 | ||
diff --git a/arch/parisc/kernel/sys_parisc32.c b/arch/parisc/kernel/sys_parisc32.c index 0838155b7a88..1adb40c81669 100644 --- a/arch/parisc/kernel/sys_parisc32.c +++ b/arch/parisc/kernel/sys_parisc32.c | |||
@@ -77,11 +77,6 @@ asmlinkage int sys32_execve(struct pt_regs *regs) | |||
77 | goto out; | 77 | goto out; |
78 | error = compat_do_execve(filename, compat_ptr(regs->gr[25]), | 78 | error = compat_do_execve(filename, compat_ptr(regs->gr[25]), |
79 | compat_ptr(regs->gr[24]), regs); | 79 | compat_ptr(regs->gr[24]), regs); |
80 | if (error == 0) { | ||
81 | task_lock(current); | ||
82 | current->ptrace &= ~PT_DTRACE; | ||
83 | task_unlock(current); | ||
84 | } | ||
85 | putname(filename); | 80 | putname(filename); |
86 | out: | 81 | out: |
87 | 82 | ||
diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c index ef6f64950e9b..a538824616fd 100644 --- a/arch/powerpc/kernel/prom_init.c +++ b/arch/powerpc/kernel/prom_init.c | |||
@@ -1947,8 +1947,47 @@ static void __init fixup_device_tree_maple(void) | |||
1947 | prom_setprop(isa, name, "ranges", | 1947 | prom_setprop(isa, name, "ranges", |
1948 | isa_ranges, sizeof(isa_ranges)); | 1948 | isa_ranges, sizeof(isa_ranges)); |
1949 | } | 1949 | } |
1950 | |||
1951 | #define CPC925_MC_START 0xf8000000 | ||
1952 | #define CPC925_MC_LENGTH 0x1000000 | ||
1953 | /* The values for memory-controller don't have right number of cells */ | ||
1954 | static void __init fixup_device_tree_maple_memory_controller(void) | ||
1955 | { | ||
1956 | phandle mc; | ||
1957 | u32 mc_reg[4]; | ||
1958 | char *name = "/hostbridge@f8000000"; | ||
1959 | struct prom_t *_prom = &RELOC(prom); | ||
1960 | u32 ac, sc; | ||
1961 | |||
1962 | mc = call_prom("finddevice", 1, 1, ADDR(name)); | ||
1963 | if (!PHANDLE_VALID(mc)) | ||
1964 | return; | ||
1965 | |||
1966 | if (prom_getproplen(mc, "reg") != 8) | ||
1967 | return; | ||
1968 | |||
1969 | prom_getprop(_prom->root, "#address-cells", &ac, sizeof(ac)); | ||
1970 | prom_getprop(_prom->root, "#size-cells", &sc, sizeof(sc)); | ||
1971 | if ((ac != 2) || (sc != 2)) | ||
1972 | return; | ||
1973 | |||
1974 | if (prom_getprop(mc, "reg", mc_reg, sizeof(mc_reg)) == PROM_ERROR) | ||
1975 | return; | ||
1976 | |||
1977 | if (mc_reg[0] != CPC925_MC_START || mc_reg[1] != CPC925_MC_LENGTH) | ||
1978 | return; | ||
1979 | |||
1980 | prom_printf("Fixing up bogus hostbridge on Maple...\n"); | ||
1981 | |||
1982 | mc_reg[0] = 0x0; | ||
1983 | mc_reg[1] = CPC925_MC_START; | ||
1984 | mc_reg[2] = 0x0; | ||
1985 | mc_reg[3] = CPC925_MC_LENGTH; | ||
1986 | prom_setprop(mc, name, "reg", mc_reg, sizeof(mc_reg)); | ||
1987 | } | ||
1950 | #else | 1988 | #else |
1951 | #define fixup_device_tree_maple() | 1989 | #define fixup_device_tree_maple() |
1990 | #define fixup_device_tree_maple_memory_controller() | ||
1952 | #endif | 1991 | #endif |
1953 | 1992 | ||
1954 | #ifdef CONFIG_PPC_CHRP | 1993 | #ifdef CONFIG_PPC_CHRP |
@@ -2189,6 +2228,7 @@ static void __init fixup_device_tree_efika(void) | |||
2189 | static void __init fixup_device_tree(void) | 2228 | static void __init fixup_device_tree(void) |
2190 | { | 2229 | { |
2191 | fixup_device_tree_maple(); | 2230 | fixup_device_tree_maple(); |
2231 | fixup_device_tree_maple_memory_controller(); | ||
2192 | fixup_device_tree_chrp(); | 2232 | fixup_device_tree_chrp(); |
2193 | fixup_device_tree_pmac(); | 2233 | fixup_device_tree_pmac(); |
2194 | fixup_device_tree_efika(); | 2234 | fixup_device_tree_efika(); |
diff --git a/arch/powerpc/platforms/maple/setup.c b/arch/powerpc/platforms/maple/setup.c index bfd60e4accee..0636a3df6978 100644 --- a/arch/powerpc/platforms/maple/setup.c +++ b/arch/powerpc/platforms/maple/setup.c | |||
@@ -335,3 +335,62 @@ define_machine(maple) { | |||
335 | .progress = maple_progress, | 335 | .progress = maple_progress, |
336 | .power_save = power4_idle, | 336 | .power_save = power4_idle, |
337 | }; | 337 | }; |
338 | |||
339 | #ifdef CONFIG_EDAC | ||
340 | /* | ||
341 | * Register a platform device for CPC925 memory controller on | ||
342 | * Motorola ATCA-6101 blade. | ||
343 | */ | ||
344 | #define MAPLE_CPC925_MODEL "Motorola,ATCA-6101" | ||
345 | static int __init maple_cpc925_edac_setup(void) | ||
346 | { | ||
347 | struct platform_device *pdev; | ||
348 | struct device_node *np = NULL; | ||
349 | struct resource r; | ||
350 | const unsigned char *model; | ||
351 | int ret; | ||
352 | |||
353 | np = of_find_node_by_path("/"); | ||
354 | if (!np) { | ||
355 | printk(KERN_ERR "%s: Unable to get root node\n", __func__); | ||
356 | return -ENODEV; | ||
357 | } | ||
358 | |||
359 | model = (const unsigned char *)of_get_property(np, "model", NULL); | ||
360 | if (!model) { | ||
361 | printk(KERN_ERR "%s: Unabel to get model info\n", __func__); | ||
362 | return -ENODEV; | ||
363 | } | ||
364 | |||
365 | ret = strcmp(model, MAPLE_CPC925_MODEL); | ||
366 | of_node_put(np); | ||
367 | |||
368 | if (ret != 0) | ||
369 | return 0; | ||
370 | |||
371 | np = of_find_node_by_type(NULL, "memory-controller"); | ||
372 | if (!np) { | ||
373 | printk(KERN_ERR "%s: Unable to find memory-controller node\n", | ||
374 | __func__); | ||
375 | return -ENODEV; | ||
376 | } | ||
377 | |||
378 | ret = of_address_to_resource(np, 0, &r); | ||
379 | of_node_put(np); | ||
380 | |||
381 | if (ret < 0) { | ||
382 | printk(KERN_ERR "%s: Unable to get memory-controller reg\n", | ||
383 | __func__); | ||
384 | return -ENODEV; | ||
385 | } | ||
386 | |||
387 | pdev = platform_device_register_simple("cpc925_edac", 0, &r, 1); | ||
388 | if (IS_ERR(pdev)) | ||
389 | return PTR_ERR(pdev); | ||
390 | |||
391 | printk(KERN_INFO "%s: CPC925 platform device created\n", __func__); | ||
392 | |||
393 | return 0; | ||
394 | } | ||
395 | machine_device_initcall(maple, maple_cpc925_edac_setup); | ||
396 | #endif | ||
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c index 002c70d3cb75..9ab188d67a3d 100644 --- a/arch/s390/kernel/compat_linux.c +++ b/arch/s390/kernel/compat_linux.c | |||
@@ -461,9 +461,6 @@ asmlinkage long sys32_execve(void) | |||
461 | result = rc; | 461 | result = rc; |
462 | goto out_putname; | 462 | goto out_putname; |
463 | } | 463 | } |
464 | task_lock(current); | ||
465 | current->ptrace &= ~PT_DTRACE; | ||
466 | task_unlock(current); | ||
467 | current->thread.fp_regs.fpc=0; | 464 | current->thread.fp_regs.fpc=0; |
468 | asm volatile("sfpc %0,0" : : "d" (0)); | 465 | asm volatile("sfpc %0,0" : : "d" (0)); |
469 | result = regs->gprs[2]; | 466 | result = regs->gprs[2]; |
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c index 355f7a30c3f1..5a43f27eec13 100644 --- a/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c | |||
@@ -266,9 +266,6 @@ SYSCALL_DEFINE0(vfork) | |||
266 | 266 | ||
267 | asmlinkage void execve_tail(void) | 267 | asmlinkage void execve_tail(void) |
268 | { | 268 | { |
269 | task_lock(current); | ||
270 | current->ptrace &= ~PT_DTRACE; | ||
271 | task_unlock(current); | ||
272 | current->thread.fp_regs.fpc = 0; | 269 | current->thread.fp_regs.fpc = 0; |
273 | if (MACHINE_HAS_IEEE) | 270 | if (MACHINE_HAS_IEEE) |
274 | asm volatile("sfpc %0,%0" : : "d" (0)); | 271 | asm volatile("sfpc %0,%0" : : "d" (0)); |
diff --git a/arch/sh/kernel/process_32.c b/arch/sh/kernel/process_32.c index 9289ede29c7b..601bbc0ec74e 100644 --- a/arch/sh/kernel/process_32.c +++ b/arch/sh/kernel/process_32.c | |||
@@ -367,11 +367,6 @@ asmlinkage int sys_execve(char __user *ufilename, char __user * __user *uargv, | |||
367 | goto out; | 367 | goto out; |
368 | 368 | ||
369 | error = do_execve(filename, uargv, uenvp, regs); | 369 | error = do_execve(filename, uargv, uenvp, regs); |
370 | if (error == 0) { | ||
371 | task_lock(current); | ||
372 | current->ptrace &= ~PT_DTRACE; | ||
373 | task_unlock(current); | ||
374 | } | ||
375 | putname(filename); | 370 | putname(filename); |
376 | out: | 371 | out: |
377 | return error; | 372 | return error; |
diff --git a/arch/sh/kernel/process_64.c b/arch/sh/kernel/process_64.c index 96be839040f8..3826773496d8 100644 --- a/arch/sh/kernel/process_64.c +++ b/arch/sh/kernel/process_64.c | |||
@@ -529,11 +529,6 @@ asmlinkage int sys_execve(char *ufilename, char **uargv, | |||
529 | (char __user * __user *)uargv, | 529 | (char __user * __user *)uargv, |
530 | (char __user * __user *)uenvp, | 530 | (char __user * __user *)uenvp, |
531 | pregs); | 531 | pregs); |
532 | if (error == 0) { | ||
533 | task_lock(current); | ||
534 | current->ptrace &= ~PT_DTRACE; | ||
535 | task_unlock(current); | ||
536 | } | ||
537 | putname(filename); | 532 | putname(filename); |
538 | out: | 533 | out: |
539 | return error; | 534 | return error; |
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index cf42fc305419..73c0bda73fcd 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -28,6 +28,7 @@ config X86 | |||
28 | select HAVE_KPROBES | 28 | select HAVE_KPROBES |
29 | select ARCH_WANT_OPTIONAL_GPIOLIB | 29 | select ARCH_WANT_OPTIONAL_GPIOLIB |
30 | select ARCH_WANT_FRAME_POINTERS | 30 | select ARCH_WANT_FRAME_POINTERS |
31 | select HAVE_DMA_ATTRS | ||
31 | select HAVE_KRETPROBES | 32 | select HAVE_KRETPROBES |
32 | select HAVE_FTRACE_MCOUNT_RECORD | 33 | select HAVE_FTRACE_MCOUNT_RECORD |
33 | select HAVE_DYNAMIC_FTRACE | 34 | select HAVE_DYNAMIC_FTRACE |
diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile index 8d16ada25048..ec749c2bfdd7 100644 --- a/arch/x86/boot/Makefile +++ b/arch/x86/boot/Makefile | |||
@@ -70,6 +70,7 @@ KBUILD_CFLAGS := $(LINUXINCLUDE) -g -Os -D_SETUP -D__KERNEL__ \ | |||
70 | $(call cc-option, -mpreferred-stack-boundary=2) | 70 | $(call cc-option, -mpreferred-stack-boundary=2) |
71 | KBUILD_CFLAGS += $(call cc-option, -m32) | 71 | KBUILD_CFLAGS += $(call cc-option, -m32) |
72 | KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ | 72 | KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ |
73 | GCOV_PROFILE := n | ||
73 | 74 | ||
74 | $(obj)/bzImage: asflags-y := $(SVGA_MODE) | 75 | $(obj)/bzImage: asflags-y := $(SVGA_MODE) |
75 | 76 | ||
diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile index 49c8a4c37d7c..e2ff504b4ddc 100644 --- a/arch/x86/boot/compressed/Makefile +++ b/arch/x86/boot/compressed/Makefile | |||
@@ -15,6 +15,7 @@ KBUILD_CFLAGS += $(call cc-option,-ffreestanding) | |||
15 | KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector) | 15 | KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector) |
16 | 16 | ||
17 | KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ | 17 | KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ |
18 | GCOV_PROFILE := n | ||
18 | 19 | ||
19 | LDFLAGS := -m elf_$(UTS_MACHINE) | 20 | LDFLAGS := -m elf_$(UTS_MACHINE) |
20 | LDFLAGS_vmlinux := -T | 21 | LDFLAGS_vmlinux := -T |
diff --git a/arch/x86/include/asm/dma-mapping.h b/arch/x86/include/asm/dma-mapping.h index b93405b228b4..1c3f9435f1c9 100644 --- a/arch/x86/include/asm/dma-mapping.h +++ b/arch/x86/include/asm/dma-mapping.h | |||
@@ -33,6 +33,8 @@ static inline struct dma_map_ops *get_dma_ops(struct device *dev) | |||
33 | #endif | 33 | #endif |
34 | } | 34 | } |
35 | 35 | ||
36 | #include <asm-generic/dma-mapping-common.h> | ||
37 | |||
36 | /* Make sure we keep the same behaviour */ | 38 | /* Make sure we keep the same behaviour */ |
37 | static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) | 39 | static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) |
38 | { | 40 | { |
@@ -53,177 +55,6 @@ extern int dma_set_mask(struct device *dev, u64 mask); | |||
53 | extern void *dma_generic_alloc_coherent(struct device *dev, size_t size, | 55 | extern void *dma_generic_alloc_coherent(struct device *dev, size_t size, |
54 | dma_addr_t *dma_addr, gfp_t flag); | 56 | dma_addr_t *dma_addr, gfp_t flag); |
55 | 57 | ||
56 | static inline dma_addr_t | ||
57 | dma_map_single(struct device *hwdev, void *ptr, size_t size, | ||
58 | enum dma_data_direction dir) | ||
59 | { | ||
60 | struct dma_map_ops *ops = get_dma_ops(hwdev); | ||
61 | dma_addr_t addr; | ||
62 | |||
63 | BUG_ON(!valid_dma_direction(dir)); | ||
64 | kmemcheck_mark_initialized(ptr, size); | ||
65 | addr = ops->map_page(hwdev, virt_to_page(ptr), | ||
66 | (unsigned long)ptr & ~PAGE_MASK, size, | ||
67 | dir, NULL); | ||
68 | debug_dma_map_page(hwdev, virt_to_page(ptr), | ||
69 | (unsigned long)ptr & ~PAGE_MASK, size, | ||
70 | dir, addr, true); | ||
71 | return addr; | ||
72 | } | ||
73 | |||
74 | static inline void | ||
75 | dma_unmap_single(struct device *dev, dma_addr_t addr, size_t size, | ||
76 | enum dma_data_direction dir) | ||
77 | { | ||
78 | struct dma_map_ops *ops = get_dma_ops(dev); | ||
79 | |||
80 | BUG_ON(!valid_dma_direction(dir)); | ||
81 | if (ops->unmap_page) | ||
82 | ops->unmap_page(dev, addr, size, dir, NULL); | ||
83 | debug_dma_unmap_page(dev, addr, size, dir, true); | ||
84 | } | ||
85 | |||
86 | static inline int | ||
87 | dma_map_sg(struct device *hwdev, struct scatterlist *sg, | ||
88 | int nents, enum dma_data_direction dir) | ||
89 | { | ||
90 | struct dma_map_ops *ops = get_dma_ops(hwdev); | ||
91 | int ents; | ||
92 | struct scatterlist *s; | ||
93 | int i; | ||
94 | |||
95 | BUG_ON(!valid_dma_direction(dir)); | ||
96 | for_each_sg(sg, s, nents, i) | ||
97 | kmemcheck_mark_initialized(sg_virt(s), s->length); | ||
98 | ents = ops->map_sg(hwdev, sg, nents, dir, NULL); | ||
99 | debug_dma_map_sg(hwdev, sg, nents, ents, dir); | ||
100 | |||
101 | return ents; | ||
102 | } | ||
103 | |||
104 | static inline void | ||
105 | dma_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nents, | ||
106 | enum dma_data_direction dir) | ||
107 | { | ||
108 | struct dma_map_ops *ops = get_dma_ops(hwdev); | ||
109 | |||
110 | BUG_ON(!valid_dma_direction(dir)); | ||
111 | debug_dma_unmap_sg(hwdev, sg, nents, dir); | ||
112 | if (ops->unmap_sg) | ||
113 | ops->unmap_sg(hwdev, sg, nents, dir, NULL); | ||
114 | } | ||
115 | |||
116 | static inline void | ||
117 | dma_sync_single_for_cpu(struct device *hwdev, dma_addr_t dma_handle, | ||
118 | size_t size, enum dma_data_direction dir) | ||
119 | { | ||
120 | struct dma_map_ops *ops = get_dma_ops(hwdev); | ||
121 | |||
122 | BUG_ON(!valid_dma_direction(dir)); | ||
123 | if (ops->sync_single_for_cpu) | ||
124 | ops->sync_single_for_cpu(hwdev, dma_handle, size, dir); | ||
125 | debug_dma_sync_single_for_cpu(hwdev, dma_handle, size, dir); | ||
126 | flush_write_buffers(); | ||
127 | } | ||
128 | |||
129 | static inline void | ||
130 | dma_sync_single_for_device(struct device *hwdev, dma_addr_t dma_handle, | ||
131 | size_t size, enum dma_data_direction dir) | ||
132 | { | ||
133 | struct dma_map_ops *ops = get_dma_ops(hwdev); | ||
134 | |||
135 | BUG_ON(!valid_dma_direction(dir)); | ||
136 | if (ops->sync_single_for_device) | ||
137 | ops->sync_single_for_device(hwdev, dma_handle, size, dir); | ||
138 | debug_dma_sync_single_for_device(hwdev, dma_handle, size, dir); | ||
139 | flush_write_buffers(); | ||
140 | } | ||
141 | |||
142 | static inline void | ||
143 | dma_sync_single_range_for_cpu(struct device *hwdev, dma_addr_t dma_handle, | ||
144 | unsigned long offset, size_t size, | ||
145 | enum dma_data_direction dir) | ||
146 | { | ||
147 | struct dma_map_ops *ops = get_dma_ops(hwdev); | ||
148 | |||
149 | BUG_ON(!valid_dma_direction(dir)); | ||
150 | if (ops->sync_single_range_for_cpu) | ||
151 | ops->sync_single_range_for_cpu(hwdev, dma_handle, offset, | ||
152 | size, dir); | ||
153 | debug_dma_sync_single_range_for_cpu(hwdev, dma_handle, | ||
154 | offset, size, dir); | ||
155 | flush_write_buffers(); | ||
156 | } | ||
157 | |||
158 | static inline void | ||
159 | dma_sync_single_range_for_device(struct device *hwdev, dma_addr_t dma_handle, | ||
160 | unsigned long offset, size_t size, | ||
161 | enum dma_data_direction dir) | ||
162 | { | ||
163 | struct dma_map_ops *ops = get_dma_ops(hwdev); | ||
164 | |||
165 | BUG_ON(!valid_dma_direction(dir)); | ||
166 | if (ops->sync_single_range_for_device) | ||
167 | ops->sync_single_range_for_device(hwdev, dma_handle, | ||
168 | offset, size, dir); | ||
169 | debug_dma_sync_single_range_for_device(hwdev, dma_handle, | ||
170 | offset, size, dir); | ||
171 | flush_write_buffers(); | ||
172 | } | ||
173 | |||
174 | static inline void | ||
175 | dma_sync_sg_for_cpu(struct device *hwdev, struct scatterlist *sg, | ||
176 | int nelems, enum dma_data_direction dir) | ||
177 | { | ||
178 | struct dma_map_ops *ops = get_dma_ops(hwdev); | ||
179 | |||
180 | BUG_ON(!valid_dma_direction(dir)); | ||
181 | if (ops->sync_sg_for_cpu) | ||
182 | ops->sync_sg_for_cpu(hwdev, sg, nelems, dir); | ||
183 | debug_dma_sync_sg_for_cpu(hwdev, sg, nelems, dir); | ||
184 | flush_write_buffers(); | ||
185 | } | ||
186 | |||
187 | static inline void | ||
188 | dma_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg, | ||
189 | int nelems, enum dma_data_direction dir) | ||
190 | { | ||
191 | struct dma_map_ops *ops = get_dma_ops(hwdev); | ||
192 | |||
193 | BUG_ON(!valid_dma_direction(dir)); | ||
194 | if (ops->sync_sg_for_device) | ||
195 | ops->sync_sg_for_device(hwdev, sg, nelems, dir); | ||
196 | debug_dma_sync_sg_for_device(hwdev, sg, nelems, dir); | ||
197 | |||
198 | flush_write_buffers(); | ||
199 | } | ||
200 | |||
201 | static inline dma_addr_t dma_map_page(struct device *dev, struct page *page, | ||
202 | size_t offset, size_t size, | ||
203 | enum dma_data_direction dir) | ||
204 | { | ||
205 | struct dma_map_ops *ops = get_dma_ops(dev); | ||
206 | dma_addr_t addr; | ||
207 | |||
208 | BUG_ON(!valid_dma_direction(dir)); | ||
209 | kmemcheck_mark_initialized(page_address(page) + offset, size); | ||
210 | addr = ops->map_page(dev, page, offset, size, dir, NULL); | ||
211 | debug_dma_map_page(dev, page, offset, size, dir, addr, false); | ||
212 | |||
213 | return addr; | ||
214 | } | ||
215 | |||
216 | static inline void dma_unmap_page(struct device *dev, dma_addr_t addr, | ||
217 | size_t size, enum dma_data_direction dir) | ||
218 | { | ||
219 | struct dma_map_ops *ops = get_dma_ops(dev); | ||
220 | |||
221 | BUG_ON(!valid_dma_direction(dir)); | ||
222 | if (ops->unmap_page) | ||
223 | ops->unmap_page(dev, addr, size, dir, NULL); | ||
224 | debug_dma_unmap_page(dev, addr, size, dir, false); | ||
225 | } | ||
226 | |||
227 | static inline void | 58 | static inline void |
228 | dma_cache_sync(struct device *dev, void *vaddr, size_t size, | 59 | dma_cache_sync(struct device *dev, void *vaddr, size_t size, |
229 | enum dma_data_direction dir) | 60 | enum dma_data_direction dir) |
diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile index f3477bb84566..6c327b852e23 100644 --- a/arch/x86/kernel/Makefile +++ b/arch/x86/kernel/Makefile | |||
@@ -24,6 +24,8 @@ CFLAGS_vsyscall_64.o := $(PROFILING) -g0 $(nostackp) | |||
24 | CFLAGS_hpet.o := $(nostackp) | 24 | CFLAGS_hpet.o := $(nostackp) |
25 | CFLAGS_tsc.o := $(nostackp) | 25 | CFLAGS_tsc.o := $(nostackp) |
26 | CFLAGS_paravirt.o := $(nostackp) | 26 | CFLAGS_paravirt.o := $(nostackp) |
27 | GCOV_PROFILE_vsyscall_64.o := n | ||
28 | GCOV_PROFILE_hpet.o := n | ||
27 | 29 | ||
28 | obj-y := process_$(BITS).o signal.o entry_$(BITS).o | 30 | obj-y := process_$(BITS).o signal.o entry_$(BITS).o |
29 | obj-y += traps.o irq.o irq_$(BITS).o dumpstack_$(BITS).o | 31 | obj-y += traps.o irq.o irq_$(BITS).o dumpstack_$(BITS).o |
diff --git a/arch/x86/kernel/acpi/realmode/Makefile b/arch/x86/kernel/acpi/realmode/Makefile index 167bc16ce0e5..6a564ac67ef5 100644 --- a/arch/x86/kernel/acpi/realmode/Makefile +++ b/arch/x86/kernel/acpi/realmode/Makefile | |||
@@ -42,6 +42,7 @@ KBUILD_CFLAGS := $(LINUXINCLUDE) -g -Os -D_SETUP -D_WAKEUP -D__KERNEL__ \ | |||
42 | $(call cc-option, -mpreferred-stack-boundary=2) | 42 | $(call cc-option, -mpreferred-stack-boundary=2) |
43 | KBUILD_CFLAGS += $(call cc-option, -m32) | 43 | KBUILD_CFLAGS += $(call cc-option, -m32) |
44 | KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ | 44 | KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ |
45 | GCOV_PROFILE := n | ||
45 | 46 | ||
46 | WAKEUP_OBJS = $(addprefix $(obj)/,$(wakeup-y)) | 47 | WAKEUP_OBJS = $(addprefix $(obj)/,$(wakeup-y)) |
47 | 48 | ||
diff --git a/arch/x86/vdso/Makefile b/arch/x86/vdso/Makefile index 16a9020c8f11..88112b49f02c 100644 --- a/arch/x86/vdso/Makefile +++ b/arch/x86/vdso/Makefile | |||
@@ -123,6 +123,7 @@ quiet_cmd_vdso = VDSO $@ | |||
123 | -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^) | 123 | -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^) |
124 | 124 | ||
125 | VDSO_LDFLAGS = -fPIC -shared $(call ld-option, -Wl$(comma)--hash-style=sysv) | 125 | VDSO_LDFLAGS = -fPIC -shared $(call ld-option, -Wl$(comma)--hash-style=sysv) |
126 | GCOV_PROFILE := n | ||
126 | 127 | ||
127 | # | 128 | # |
128 | # Install the unstripped copy of vdso*.so listed in $(vdso-install-y). | 129 | # Install the unstripped copy of vdso*.so listed in $(vdso-install-y). |
diff --git a/arch/xtensa/kernel/process.c b/arch/xtensa/kernel/process.c index 031f36685710..e1a04a346e75 100644 --- a/arch/xtensa/kernel/process.c +++ b/arch/xtensa/kernel/process.c | |||
@@ -331,11 +331,6 @@ long xtensa_execve(char __user *name, char __user * __user *argv, | |||
331 | if (IS_ERR(filename)) | 331 | if (IS_ERR(filename)) |
332 | goto out; | 332 | goto out; |
333 | error = do_execve(filename, argv, envp, regs); | 333 | error = do_execve(filename, argv, envp, regs); |
334 | if (error == 0) { | ||
335 | task_lock(current); | ||
336 | current->ptrace &= ~PT_DTRACE; | ||
337 | task_unlock(current); | ||
338 | } | ||
339 | putname(filename); | 334 | putname(filename); |
340 | out: | 335 | out: |
341 | return error; | 336 | return error; |