diff options
Diffstat (limited to 'arch')
52 files changed, 360 insertions, 98 deletions
diff --git a/arch/alpha/include/asm/thread_info.h b/arch/alpha/include/asm/thread_info.h index 815680b585e..b3e888638bb 100644 --- a/arch/alpha/include/asm/thread_info.h +++ b/arch/alpha/include/asm/thread_info.h | |||
@@ -61,21 +61,24 @@ register struct thread_info *__current_thread_info __asm__("$8"); | |||
61 | /* | 61 | /* |
62 | * Thread information flags: | 62 | * Thread information flags: |
63 | * - these are process state flags and used from assembly | 63 | * - these are process state flags and used from assembly |
64 | * - pending work-to-be-done flags come first to fit in and immediate operand. | 64 | * - pending work-to-be-done flags come first and must be assigned to be |
65 | * within bits 0 to 7 to fit in and immediate operand. | ||
66 | * - ALPHA_UAC_SHIFT below must be kept consistent with the unaligned | ||
67 | * control flags. | ||
65 | * | 68 | * |
66 | * TIF_SYSCALL_TRACE is known to be 0 via blbs. | 69 | * TIF_SYSCALL_TRACE is known to be 0 via blbs. |
67 | */ | 70 | */ |
68 | #define TIF_SYSCALL_TRACE 0 /* syscall trace active */ | 71 | #define TIF_SYSCALL_TRACE 0 /* syscall trace active */ |
69 | #define TIF_SIGPENDING 1 /* signal pending */ | 72 | #define TIF_NOTIFY_RESUME 1 /* callback before returning to user */ |
70 | #define TIF_NEED_RESCHED 2 /* rescheduling necessary */ | 73 | #define TIF_SIGPENDING 2 /* signal pending */ |
71 | #define TIF_POLLING_NRFLAG 3 /* poll_idle is polling NEED_RESCHED */ | 74 | #define TIF_NEED_RESCHED 3 /* rescheduling necessary */ |
72 | #define TIF_DIE_IF_KERNEL 4 /* dik recursion lock */ | 75 | #define TIF_POLLING_NRFLAG 8 /* poll_idle is polling NEED_RESCHED */ |
73 | #define TIF_UAC_NOPRINT 5 /* see sysinfo.h */ | 76 | #define TIF_DIE_IF_KERNEL 9 /* dik recursion lock */ |
74 | #define TIF_UAC_NOFIX 6 | 77 | #define TIF_UAC_NOPRINT 10 /* see sysinfo.h */ |
75 | #define TIF_UAC_SIGBUS 7 | 78 | #define TIF_UAC_NOFIX 11 |
76 | #define TIF_MEMDIE 8 | 79 | #define TIF_UAC_SIGBUS 12 |
77 | #define TIF_RESTORE_SIGMASK 9 /* restore signal mask in do_signal */ | 80 | #define TIF_MEMDIE 13 |
78 | #define TIF_NOTIFY_RESUME 10 /* callback before returning to user */ | 81 | #define TIF_RESTORE_SIGMASK 14 /* restore signal mask in do_signal */ |
79 | #define TIF_FREEZE 16 /* is freezing for suspend */ | 82 | #define TIF_FREEZE 16 /* is freezing for suspend */ |
80 | 83 | ||
81 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) | 84 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) |
@@ -94,7 +97,7 @@ register struct thread_info *__current_thread_info __asm__("$8"); | |||
94 | #define _TIF_ALLWORK_MASK (_TIF_WORK_MASK \ | 97 | #define _TIF_ALLWORK_MASK (_TIF_WORK_MASK \ |
95 | | _TIF_SYSCALL_TRACE) | 98 | | _TIF_SYSCALL_TRACE) |
96 | 99 | ||
97 | #define ALPHA_UAC_SHIFT 6 | 100 | #define ALPHA_UAC_SHIFT 10 |
98 | #define ALPHA_UAC_MASK (1 << TIF_UAC_NOPRINT | 1 << TIF_UAC_NOFIX | \ | 101 | #define ALPHA_UAC_MASK (1 << TIF_UAC_NOPRINT | 1 << TIF_UAC_NOFIX | \ |
99 | 1 << TIF_UAC_SIGBUS) | 102 | 1 << TIF_UAC_SIGBUS) |
100 | 103 | ||
diff --git a/arch/alpha/kernel/core_marvel.c b/arch/alpha/kernel/core_marvel.c index 8e059e58b0a..53dd2f1a53a 100644 --- a/arch/alpha/kernel/core_marvel.c +++ b/arch/alpha/kernel/core_marvel.c | |||
@@ -1103,6 +1103,8 @@ marvel_agp_info(void) | |||
1103 | * Allocate the info structure. | 1103 | * Allocate the info structure. |
1104 | */ | 1104 | */ |
1105 | agp = kmalloc(sizeof(*agp), GFP_KERNEL); | 1105 | agp = kmalloc(sizeof(*agp), GFP_KERNEL); |
1106 | if (!agp) | ||
1107 | return NULL; | ||
1106 | 1108 | ||
1107 | /* | 1109 | /* |
1108 | * Fill it in. | 1110 | * Fill it in. |
diff --git a/arch/alpha/kernel/core_titan.c b/arch/alpha/kernel/core_titan.c index 76686497b1e..219bf271c0b 100644 --- a/arch/alpha/kernel/core_titan.c +++ b/arch/alpha/kernel/core_titan.c | |||
@@ -757,6 +757,8 @@ titan_agp_info(void) | |||
757 | * Allocate the info structure. | 757 | * Allocate the info structure. |
758 | */ | 758 | */ |
759 | agp = kmalloc(sizeof(*agp), GFP_KERNEL); | 759 | agp = kmalloc(sizeof(*agp), GFP_KERNEL); |
760 | if (!agp) | ||
761 | return NULL; | ||
760 | 762 | ||
761 | /* | 763 | /* |
762 | * Fill it in. | 764 | * Fill it in. |
diff --git a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c index cc783466142..c0de072b830 100644 --- a/arch/alpha/kernel/irq.c +++ b/arch/alpha/kernel/irq.c | |||
@@ -92,7 +92,7 @@ show_interrupts(struct seq_file *p, void *v) | |||
92 | for_each_online_cpu(j) | 92 | for_each_online_cpu(j) |
93 | seq_printf(p, "%10u ", kstat_irqs_cpu(irq, j)); | 93 | seq_printf(p, "%10u ", kstat_irqs_cpu(irq, j)); |
94 | #endif | 94 | #endif |
95 | seq_printf(p, " %14s", irq_desc[irq].chip->typename); | 95 | seq_printf(p, " %14s", irq_desc[irq].chip->name); |
96 | seq_printf(p, " %c%s", | 96 | seq_printf(p, " %c%s", |
97 | (action->flags & IRQF_DISABLED)?'+':' ', | 97 | (action->flags & IRQF_DISABLED)?'+':' ', |
98 | action->name); | 98 | action->name); |
diff --git a/arch/alpha/kernel/irq_alpha.c b/arch/alpha/kernel/irq_alpha.c index 38c805dfc54..cfde865b78e 100644 --- a/arch/alpha/kernel/irq_alpha.c +++ b/arch/alpha/kernel/irq_alpha.c | |||
@@ -228,7 +228,7 @@ struct irqaction timer_irqaction = { | |||
228 | }; | 228 | }; |
229 | 229 | ||
230 | static struct irq_chip rtc_irq_type = { | 230 | static struct irq_chip rtc_irq_type = { |
231 | .typename = "RTC", | 231 | .name = "RTC", |
232 | .startup = rtc_startup, | 232 | .startup = rtc_startup, |
233 | .shutdown = rtc_enable_disable, | 233 | .shutdown = rtc_enable_disable, |
234 | .enable = rtc_enable_disable, | 234 | .enable = rtc_enable_disable, |
diff --git a/arch/alpha/kernel/irq_i8259.c b/arch/alpha/kernel/irq_i8259.c index 50bfec9b588..83a9ac28089 100644 --- a/arch/alpha/kernel/irq_i8259.c +++ b/arch/alpha/kernel/irq_i8259.c | |||
@@ -84,7 +84,7 @@ i8259a_end_irq(unsigned int irq) | |||
84 | } | 84 | } |
85 | 85 | ||
86 | struct irq_chip i8259a_irq_type = { | 86 | struct irq_chip i8259a_irq_type = { |
87 | .typename = "XT-PIC", | 87 | .name = "XT-PIC", |
88 | .startup = i8259a_startup_irq, | 88 | .startup = i8259a_startup_irq, |
89 | .shutdown = i8259a_disable_irq, | 89 | .shutdown = i8259a_disable_irq, |
90 | .enable = i8259a_enable_irq, | 90 | .enable = i8259a_enable_irq, |
diff --git a/arch/alpha/kernel/irq_pyxis.c b/arch/alpha/kernel/irq_pyxis.c index 69199a76ec4..989ce46a0cf 100644 --- a/arch/alpha/kernel/irq_pyxis.c +++ b/arch/alpha/kernel/irq_pyxis.c | |||
@@ -71,7 +71,7 @@ pyxis_mask_and_ack_irq(unsigned int irq) | |||
71 | } | 71 | } |
72 | 72 | ||
73 | static struct irq_chip pyxis_irq_type = { | 73 | static struct irq_chip pyxis_irq_type = { |
74 | .typename = "PYXIS", | 74 | .name = "PYXIS", |
75 | .startup = pyxis_startup_irq, | 75 | .startup = pyxis_startup_irq, |
76 | .shutdown = pyxis_disable_irq, | 76 | .shutdown = pyxis_disable_irq, |
77 | .enable = pyxis_enable_irq, | 77 | .enable = pyxis_enable_irq, |
diff --git a/arch/alpha/kernel/irq_srm.c b/arch/alpha/kernel/irq_srm.c index 85229369a1f..d63e93e1e8b 100644 --- a/arch/alpha/kernel/irq_srm.c +++ b/arch/alpha/kernel/irq_srm.c | |||
@@ -49,7 +49,7 @@ srm_end_irq(unsigned int irq) | |||
49 | 49 | ||
50 | /* Handle interrupts from the SRM, assuming no additional weirdness. */ | 50 | /* Handle interrupts from the SRM, assuming no additional weirdness. */ |
51 | static struct irq_chip srm_irq_type = { | 51 | static struct irq_chip srm_irq_type = { |
52 | .typename = "SRM", | 52 | .name = "SRM", |
53 | .startup = srm_startup_irq, | 53 | .startup = srm_startup_irq, |
54 | .shutdown = srm_disable_irq, | 54 | .shutdown = srm_disable_irq, |
55 | .enable = srm_enable_irq, | 55 | .enable = srm_enable_irq, |
diff --git a/arch/alpha/kernel/sys_alcor.c b/arch/alpha/kernel/sys_alcor.c index 382035ef739..20a30b8b965 100644 --- a/arch/alpha/kernel/sys_alcor.c +++ b/arch/alpha/kernel/sys_alcor.c | |||
@@ -90,7 +90,7 @@ alcor_end_irq(unsigned int irq) | |||
90 | } | 90 | } |
91 | 91 | ||
92 | static struct irq_chip alcor_irq_type = { | 92 | static struct irq_chip alcor_irq_type = { |
93 | .typename = "ALCOR", | 93 | .name = "ALCOR", |
94 | .startup = alcor_startup_irq, | 94 | .startup = alcor_startup_irq, |
95 | .shutdown = alcor_disable_irq, | 95 | .shutdown = alcor_disable_irq, |
96 | .enable = alcor_enable_irq, | 96 | .enable = alcor_enable_irq, |
diff --git a/arch/alpha/kernel/sys_cabriolet.c b/arch/alpha/kernel/sys_cabriolet.c index ed349436732..affd0f3f25d 100644 --- a/arch/alpha/kernel/sys_cabriolet.c +++ b/arch/alpha/kernel/sys_cabriolet.c | |||
@@ -72,7 +72,7 @@ cabriolet_end_irq(unsigned int irq) | |||
72 | } | 72 | } |
73 | 73 | ||
74 | static struct irq_chip cabriolet_irq_type = { | 74 | static struct irq_chip cabriolet_irq_type = { |
75 | .typename = "CABRIOLET", | 75 | .name = "CABRIOLET", |
76 | .startup = cabriolet_startup_irq, | 76 | .startup = cabriolet_startup_irq, |
77 | .shutdown = cabriolet_disable_irq, | 77 | .shutdown = cabriolet_disable_irq, |
78 | .enable = cabriolet_enable_irq, | 78 | .enable = cabriolet_enable_irq, |
diff --git a/arch/alpha/kernel/sys_dp264.c b/arch/alpha/kernel/sys_dp264.c index 46e70ece517..d64e1e497e7 100644 --- a/arch/alpha/kernel/sys_dp264.c +++ b/arch/alpha/kernel/sys_dp264.c | |||
@@ -199,7 +199,7 @@ clipper_set_affinity(unsigned int irq, const struct cpumask *affinity) | |||
199 | } | 199 | } |
200 | 200 | ||
201 | static struct irq_chip dp264_irq_type = { | 201 | static struct irq_chip dp264_irq_type = { |
202 | .typename = "DP264", | 202 | .name = "DP264", |
203 | .startup = dp264_startup_irq, | 203 | .startup = dp264_startup_irq, |
204 | .shutdown = dp264_disable_irq, | 204 | .shutdown = dp264_disable_irq, |
205 | .enable = dp264_enable_irq, | 205 | .enable = dp264_enable_irq, |
@@ -210,7 +210,7 @@ static struct irq_chip dp264_irq_type = { | |||
210 | }; | 210 | }; |
211 | 211 | ||
212 | static struct irq_chip clipper_irq_type = { | 212 | static struct irq_chip clipper_irq_type = { |
213 | .typename = "CLIPPER", | 213 | .name = "CLIPPER", |
214 | .startup = clipper_startup_irq, | 214 | .startup = clipper_startup_irq, |
215 | .shutdown = clipper_disable_irq, | 215 | .shutdown = clipper_disable_irq, |
216 | .enable = clipper_enable_irq, | 216 | .enable = clipper_enable_irq, |
diff --git a/arch/alpha/kernel/sys_eb64p.c b/arch/alpha/kernel/sys_eb64p.c index 660c23ef661..df2090ce5e7 100644 --- a/arch/alpha/kernel/sys_eb64p.c +++ b/arch/alpha/kernel/sys_eb64p.c | |||
@@ -70,7 +70,7 @@ eb64p_end_irq(unsigned int irq) | |||
70 | } | 70 | } |
71 | 71 | ||
72 | static struct irq_chip eb64p_irq_type = { | 72 | static struct irq_chip eb64p_irq_type = { |
73 | .typename = "EB64P", | 73 | .name = "EB64P", |
74 | .startup = eb64p_startup_irq, | 74 | .startup = eb64p_startup_irq, |
75 | .shutdown = eb64p_disable_irq, | 75 | .shutdown = eb64p_disable_irq, |
76 | .enable = eb64p_enable_irq, | 76 | .enable = eb64p_enable_irq, |
diff --git a/arch/alpha/kernel/sys_eiger.c b/arch/alpha/kernel/sys_eiger.c index b99ea488d84..3ca1dbcf404 100644 --- a/arch/alpha/kernel/sys_eiger.c +++ b/arch/alpha/kernel/sys_eiger.c | |||
@@ -81,7 +81,7 @@ eiger_end_irq(unsigned int irq) | |||
81 | } | 81 | } |
82 | 82 | ||
83 | static struct irq_chip eiger_irq_type = { | 83 | static struct irq_chip eiger_irq_type = { |
84 | .typename = "EIGER", | 84 | .name = "EIGER", |
85 | .startup = eiger_startup_irq, | 85 | .startup = eiger_startup_irq, |
86 | .shutdown = eiger_disable_irq, | 86 | .shutdown = eiger_disable_irq, |
87 | .enable = eiger_enable_irq, | 87 | .enable = eiger_enable_irq, |
diff --git a/arch/alpha/kernel/sys_jensen.c b/arch/alpha/kernel/sys_jensen.c index ef0b83a070a..7a7ae36fff9 100644 --- a/arch/alpha/kernel/sys_jensen.c +++ b/arch/alpha/kernel/sys_jensen.c | |||
@@ -119,7 +119,7 @@ jensen_local_end(unsigned int irq) | |||
119 | } | 119 | } |
120 | 120 | ||
121 | static struct irq_chip jensen_local_irq_type = { | 121 | static struct irq_chip jensen_local_irq_type = { |
122 | .typename = "LOCAL", | 122 | .name = "LOCAL", |
123 | .startup = jensen_local_startup, | 123 | .startup = jensen_local_startup, |
124 | .shutdown = jensen_local_shutdown, | 124 | .shutdown = jensen_local_shutdown, |
125 | .enable = jensen_local_enable, | 125 | .enable = jensen_local_enable, |
diff --git a/arch/alpha/kernel/sys_marvel.c b/arch/alpha/kernel/sys_marvel.c index bbfc4f20ca7..0bb3b5c4f69 100644 --- a/arch/alpha/kernel/sys_marvel.c +++ b/arch/alpha/kernel/sys_marvel.c | |||
@@ -170,7 +170,7 @@ marvel_irq_noop_return(unsigned int irq) | |||
170 | } | 170 | } |
171 | 171 | ||
172 | static struct irq_chip marvel_legacy_irq_type = { | 172 | static struct irq_chip marvel_legacy_irq_type = { |
173 | .typename = "LEGACY", | 173 | .name = "LEGACY", |
174 | .startup = marvel_irq_noop_return, | 174 | .startup = marvel_irq_noop_return, |
175 | .shutdown = marvel_irq_noop, | 175 | .shutdown = marvel_irq_noop, |
176 | .enable = marvel_irq_noop, | 176 | .enable = marvel_irq_noop, |
@@ -180,7 +180,7 @@ static struct irq_chip marvel_legacy_irq_type = { | |||
180 | }; | 180 | }; |
181 | 181 | ||
182 | static struct irq_chip io7_lsi_irq_type = { | 182 | static struct irq_chip io7_lsi_irq_type = { |
183 | .typename = "LSI", | 183 | .name = "LSI", |
184 | .startup = io7_startup_irq, | 184 | .startup = io7_startup_irq, |
185 | .shutdown = io7_disable_irq, | 185 | .shutdown = io7_disable_irq, |
186 | .enable = io7_enable_irq, | 186 | .enable = io7_enable_irq, |
@@ -190,7 +190,7 @@ static struct irq_chip io7_lsi_irq_type = { | |||
190 | }; | 190 | }; |
191 | 191 | ||
192 | static struct irq_chip io7_msi_irq_type = { | 192 | static struct irq_chip io7_msi_irq_type = { |
193 | .typename = "MSI", | 193 | .name = "MSI", |
194 | .startup = io7_startup_irq, | 194 | .startup = io7_startup_irq, |
195 | .shutdown = io7_disable_irq, | 195 | .shutdown = io7_disable_irq, |
196 | .enable = io7_enable_irq, | 196 | .enable = io7_enable_irq, |
diff --git a/arch/alpha/kernel/sys_mikasa.c b/arch/alpha/kernel/sys_mikasa.c index 4e366641a08..ee886516981 100644 --- a/arch/alpha/kernel/sys_mikasa.c +++ b/arch/alpha/kernel/sys_mikasa.c | |||
@@ -69,7 +69,7 @@ mikasa_end_irq(unsigned int irq) | |||
69 | } | 69 | } |
70 | 70 | ||
71 | static struct irq_chip mikasa_irq_type = { | 71 | static struct irq_chip mikasa_irq_type = { |
72 | .typename = "MIKASA", | 72 | .name = "MIKASA", |
73 | .startup = mikasa_startup_irq, | 73 | .startup = mikasa_startup_irq, |
74 | .shutdown = mikasa_disable_irq, | 74 | .shutdown = mikasa_disable_irq, |
75 | .enable = mikasa_enable_irq, | 75 | .enable = mikasa_enable_irq, |
diff --git a/arch/alpha/kernel/sys_noritake.c b/arch/alpha/kernel/sys_noritake.c index 35753a173ba..86503fe73a8 100644 --- a/arch/alpha/kernel/sys_noritake.c +++ b/arch/alpha/kernel/sys_noritake.c | |||
@@ -74,7 +74,7 @@ noritake_end_irq(unsigned int irq) | |||
74 | } | 74 | } |
75 | 75 | ||
76 | static struct irq_chip noritake_irq_type = { | 76 | static struct irq_chip noritake_irq_type = { |
77 | .typename = "NORITAKE", | 77 | .name = "NORITAKE", |
78 | .startup = noritake_startup_irq, | 78 | .startup = noritake_startup_irq, |
79 | .shutdown = noritake_disable_irq, | 79 | .shutdown = noritake_disable_irq, |
80 | .enable = noritake_enable_irq, | 80 | .enable = noritake_enable_irq, |
diff --git a/arch/alpha/kernel/sys_rawhide.c b/arch/alpha/kernel/sys_rawhide.c index f3aec7e085c..26c322bf89e 100644 --- a/arch/alpha/kernel/sys_rawhide.c +++ b/arch/alpha/kernel/sys_rawhide.c | |||
@@ -136,7 +136,7 @@ rawhide_end_irq(unsigned int irq) | |||
136 | } | 136 | } |
137 | 137 | ||
138 | static struct irq_chip rawhide_irq_type = { | 138 | static struct irq_chip rawhide_irq_type = { |
139 | .typename = "RAWHIDE", | 139 | .name = "RAWHIDE", |
140 | .startup = rawhide_startup_irq, | 140 | .startup = rawhide_startup_irq, |
141 | .shutdown = rawhide_disable_irq, | 141 | .shutdown = rawhide_disable_irq, |
142 | .enable = rawhide_enable_irq, | 142 | .enable = rawhide_enable_irq, |
diff --git a/arch/alpha/kernel/sys_ruffian.c b/arch/alpha/kernel/sys_ruffian.c index d9f9cfeb993..8de1046fe91 100644 --- a/arch/alpha/kernel/sys_ruffian.c +++ b/arch/alpha/kernel/sys_ruffian.c | |||
@@ -66,7 +66,7 @@ ruffian_init_irq(void) | |||
66 | common_init_isa_dma(); | 66 | common_init_isa_dma(); |
67 | } | 67 | } |
68 | 68 | ||
69 | #define RUFFIAN_LATCH ((PIT_TICK_RATE + HZ / 2) / HZ) | 69 | #define RUFFIAN_LATCH DIV_ROUND_CLOSEST(PIT_TICK_RATE, HZ) |
70 | 70 | ||
71 | static void __init | 71 | static void __init |
72 | ruffian_init_rtc(void) | 72 | ruffian_init_rtc(void) |
diff --git a/arch/alpha/kernel/sys_rx164.c b/arch/alpha/kernel/sys_rx164.c index fc924637345..be161129eab 100644 --- a/arch/alpha/kernel/sys_rx164.c +++ b/arch/alpha/kernel/sys_rx164.c | |||
@@ -73,7 +73,7 @@ rx164_end_irq(unsigned int irq) | |||
73 | } | 73 | } |
74 | 74 | ||
75 | static struct irq_chip rx164_irq_type = { | 75 | static struct irq_chip rx164_irq_type = { |
76 | .typename = "RX164", | 76 | .name = "RX164", |
77 | .startup = rx164_startup_irq, | 77 | .startup = rx164_startup_irq, |
78 | .shutdown = rx164_disable_irq, | 78 | .shutdown = rx164_disable_irq, |
79 | .enable = rx164_enable_irq, | 79 | .enable = rx164_enable_irq, |
diff --git a/arch/alpha/kernel/sys_sable.c b/arch/alpha/kernel/sys_sable.c index 426eb6906d0..b2abe27a23c 100644 --- a/arch/alpha/kernel/sys_sable.c +++ b/arch/alpha/kernel/sys_sable.c | |||
@@ -502,7 +502,7 @@ sable_lynx_mask_and_ack_irq(unsigned int irq) | |||
502 | } | 502 | } |
503 | 503 | ||
504 | static struct irq_chip sable_lynx_irq_type = { | 504 | static struct irq_chip sable_lynx_irq_type = { |
505 | .typename = "SABLE/LYNX", | 505 | .name = "SABLE/LYNX", |
506 | .startup = sable_lynx_startup_irq, | 506 | .startup = sable_lynx_startup_irq, |
507 | .shutdown = sable_lynx_disable_irq, | 507 | .shutdown = sable_lynx_disable_irq, |
508 | .enable = sable_lynx_enable_irq, | 508 | .enable = sable_lynx_enable_irq, |
diff --git a/arch/alpha/kernel/sys_takara.c b/arch/alpha/kernel/sys_takara.c index 830318c2166..230464885b5 100644 --- a/arch/alpha/kernel/sys_takara.c +++ b/arch/alpha/kernel/sys_takara.c | |||
@@ -75,7 +75,7 @@ takara_end_irq(unsigned int irq) | |||
75 | } | 75 | } |
76 | 76 | ||
77 | static struct irq_chip takara_irq_type = { | 77 | static struct irq_chip takara_irq_type = { |
78 | .typename = "TAKARA", | 78 | .name = "TAKARA", |
79 | .startup = takara_startup_irq, | 79 | .startup = takara_startup_irq, |
80 | .shutdown = takara_disable_irq, | 80 | .shutdown = takara_disable_irq, |
81 | .enable = takara_enable_irq, | 81 | .enable = takara_enable_irq, |
diff --git a/arch/alpha/kernel/sys_titan.c b/arch/alpha/kernel/sys_titan.c index 88978fc60f8..288053342c8 100644 --- a/arch/alpha/kernel/sys_titan.c +++ b/arch/alpha/kernel/sys_titan.c | |||
@@ -195,7 +195,7 @@ init_titan_irqs(struct irq_chip * ops, int imin, int imax) | |||
195 | } | 195 | } |
196 | 196 | ||
197 | static struct irq_chip titan_irq_type = { | 197 | static struct irq_chip titan_irq_type = { |
198 | .typename = "TITAN", | 198 | .name = "TITAN", |
199 | .startup = titan_startup_irq, | 199 | .startup = titan_startup_irq, |
200 | .shutdown = titan_disable_irq, | 200 | .shutdown = titan_disable_irq, |
201 | .enable = titan_enable_irq, | 201 | .enable = titan_enable_irq, |
diff --git a/arch/alpha/kernel/sys_wildfire.c b/arch/alpha/kernel/sys_wildfire.c index e91b4c3838a..62fd972e18e 100644 --- a/arch/alpha/kernel/sys_wildfire.c +++ b/arch/alpha/kernel/sys_wildfire.c | |||
@@ -158,7 +158,7 @@ wildfire_end_irq(unsigned int irq) | |||
158 | } | 158 | } |
159 | 159 | ||
160 | static struct irq_chip wildfire_irq_type = { | 160 | static struct irq_chip wildfire_irq_type = { |
161 | .typename = "WILDFIRE", | 161 | .name = "WILDFIRE", |
162 | .startup = wildfire_startup_irq, | 162 | .startup = wildfire_startup_irq, |
163 | .shutdown = wildfire_disable_irq, | 163 | .shutdown = wildfire_disable_irq, |
164 | .enable = wildfire_enable_irq, | 164 | .enable = wildfire_enable_irq, |
diff --git a/arch/arm/include/asm/kmap_types.h b/arch/arm/include/asm/kmap_types.h index d16ec97ec9a..c019949a518 100644 --- a/arch/arm/include/asm/kmap_types.h +++ b/arch/arm/include/asm/kmap_types.h | |||
@@ -22,4 +22,10 @@ enum km_type { | |||
22 | KM_TYPE_NR | 22 | KM_TYPE_NR |
23 | }; | 23 | }; |
24 | 24 | ||
25 | #ifdef CONFIG_DEBUG_HIGHMEM | ||
26 | #define KM_NMI (-1) | ||
27 | #define KM_NMI_PTE (-1) | ||
28 | #define KM_IRQ_PTE (-1) | ||
29 | #endif | ||
30 | |||
25 | #endif | 31 | #endif |
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c index 2a573d4fea2..e7714f367eb 100644 --- a/arch/arm/kernel/signal.c +++ b/arch/arm/kernel/signal.c | |||
@@ -662,8 +662,12 @@ static void do_signal(struct pt_regs *regs, int syscall) | |||
662 | regs->ARM_sp -= 4; | 662 | regs->ARM_sp -= 4; |
663 | usp = (u32 __user *)regs->ARM_sp; | 663 | usp = (u32 __user *)regs->ARM_sp; |
664 | 664 | ||
665 | put_user(regs->ARM_pc, usp); | 665 | if (put_user(regs->ARM_pc, usp) == 0) { |
666 | regs->ARM_pc = KERN_RESTART_CODE; | 666 | regs->ARM_pc = KERN_RESTART_CODE; |
667 | } else { | ||
668 | regs->ARM_sp += 4; | ||
669 | force_sigsegv(0, current); | ||
670 | } | ||
667 | #endif | 671 | #endif |
668 | } | 672 | } |
669 | } | 673 | } |
diff --git a/arch/arm/mach-pxa/cpufreq-pxa2xx.c b/arch/arm/mach-pxa/cpufreq-pxa2xx.c index 983cc8c2008..9e4d9816726 100644 --- a/arch/arm/mach-pxa/cpufreq-pxa2xx.c +++ b/arch/arm/mach-pxa/cpufreq-pxa2xx.c | |||
@@ -447,6 +447,7 @@ static __init int pxa_cpufreq_init(struct cpufreq_policy *policy) | |||
447 | pxa27x_freq_table[i].frequency = freq; | 447 | pxa27x_freq_table[i].frequency = freq; |
448 | pxa27x_freq_table[i].index = i; | 448 | pxa27x_freq_table[i].index = i; |
449 | } | 449 | } |
450 | pxa27x_freq_table[i].index = i; | ||
450 | pxa27x_freq_table[i].frequency = CPUFREQ_TABLE_END; | 451 | pxa27x_freq_table[i].frequency = CPUFREQ_TABLE_END; |
451 | 452 | ||
452 | /* | 453 | /* |
diff --git a/arch/arm/mach-pxa/cpufreq-pxa3xx.c b/arch/arm/mach-pxa/cpufreq-pxa3xx.c index 67f34a8d8e6..149cdd9aee4 100644 --- a/arch/arm/mach-pxa/cpufreq-pxa3xx.c +++ b/arch/arm/mach-pxa/cpufreq-pxa3xx.c | |||
@@ -102,7 +102,7 @@ static int setup_freqs_table(struct cpufreq_policy *policy, | |||
102 | table[i].index = i; | 102 | table[i].index = i; |
103 | table[i].frequency = freqs[i].cpufreq_mhz * 1000; | 103 | table[i].frequency = freqs[i].cpufreq_mhz * 1000; |
104 | } | 104 | } |
105 | table[num].frequency = i; | 105 | table[num].index = i; |
106 | table[num].frequency = CPUFREQ_TABLE_END; | 106 | table[num].frequency = CPUFREQ_TABLE_END; |
107 | 107 | ||
108 | pxa3xx_freqs = freqs; | 108 | pxa3xx_freqs = freqs; |
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c index 3da45d05174..d98023f5550 100644 --- a/arch/arm/mach-pxa/spitz.c +++ b/arch/arm/mach-pxa/spitz.c | |||
@@ -802,10 +802,12 @@ static void __init spitz_init(void) | |||
802 | { | 802 | { |
803 | spitz_ficp_platform_data.gpio_pwdown = SPITZ_GPIO_IR_ON; | 803 | spitz_ficp_platform_data.gpio_pwdown = SPITZ_GPIO_IR_ON; |
804 | 804 | ||
805 | #ifdef CONFIG_MACH_BORZOI | ||
805 | if (machine_is_borzoi()) { | 806 | if (machine_is_borzoi()) { |
806 | sharpsl_nand_platform_data.badblock_pattern = &sharpsl_akita_bbt; | 807 | sharpsl_nand_platform_data.badblock_pattern = &sharpsl_akita_bbt; |
807 | sharpsl_nand_platform_data.ecc_layout = &akita_oobinfo; | 808 | sharpsl_nand_platform_data.ecc_layout = &akita_oobinfo; |
808 | } | 809 | } |
810 | #endif | ||
809 | 811 | ||
810 | platform_scoop_config = &spitz_pcmcia_config; | 812 | platform_scoop_config = &spitz_pcmcia_config; |
811 | 813 | ||
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types index 94be7bb6cb9..07b976da617 100644 --- a/arch/arm/tools/mach-types +++ b/arch/arm/tools/mach-types | |||
@@ -12,7 +12,7 @@ | |||
12 | # | 12 | # |
13 | # http://www.arm.linux.org.uk/developer/machines/?action=new | 13 | # http://www.arm.linux.org.uk/developer/machines/?action=new |
14 | # | 14 | # |
15 | # Last update: Fri Sep 18 21:42:00 2009 | 15 | # Last update: Wed Nov 25 22:14:58 2009 |
16 | # | 16 | # |
17 | # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number | 17 | # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number |
18 | # | 18 | # |
@@ -928,7 +928,7 @@ palmt5 MACH_PALMT5 PALMT5 917 | |||
928 | palmtc MACH_PALMTC PALMTC 918 | 928 | palmtc MACH_PALMTC PALMTC 918 |
929 | omap_apollon MACH_OMAP_APOLLON OMAP_APOLLON 919 | 929 | omap_apollon MACH_OMAP_APOLLON OMAP_APOLLON 919 |
930 | mxc30030evb MACH_MXC30030EVB MXC30030EVB 920 | 930 | mxc30030evb MACH_MXC30030EVB MXC30030EVB 920 |
931 | rea_2d MACH_REA_2D REA_2D 921 | 931 | rea_cpu2 MACH_REA_2D REA_2D 921 |
932 | eti3e524 MACH_TI3E524 TI3E524 922 | 932 | eti3e524 MACH_TI3E524 TI3E524 922 |
933 | ateb9200 MACH_ATEB9200 ATEB9200 923 | 933 | ateb9200 MACH_ATEB9200 ATEB9200 923 |
934 | auckland MACH_AUCKLAND AUCKLAND 924 | 934 | auckland MACH_AUCKLAND AUCKLAND 924 |
@@ -2421,3 +2421,118 @@ liberty MACH_LIBERTY LIBERTY 2434 | |||
2421 | mh355 MACH_MH355 MH355 2435 | 2421 | mh355 MACH_MH355 MH355 2435 |
2422 | pc7802 MACH_PC7802 PC7802 2436 | 2422 | pc7802 MACH_PC7802 PC7802 2436 |
2423 | gnet_sgc MACH_GNET_SGC GNET_SGC 2437 | 2423 | gnet_sgc MACH_GNET_SGC GNET_SGC 2437 |
2424 | einstein15 MACH_EINSTEIN15 EINSTEIN15 2438 | ||
2425 | cmpd MACH_CMPD CMPD 2439 | ||
2426 | davinci_hase1 MACH_DAVINCI_HASE1 DAVINCI_HASE1 2440 | ||
2427 | lgeincitephone MACH_LGEINCITEPHONE LGEINCITEPHONE 2441 | ||
2428 | ea313x MACH_EA313X EA313X 2442 | ||
2429 | fwbd_39064 MACH_FWBD_39064 FWBD_39064 2443 | ||
2430 | fwbd_390128 MACH_FWBD_390128 FWBD_390128 2444 | ||
2431 | pelco_moe MACH_PELCO_MOE PELCO_MOE 2445 | ||
2432 | minimix27 MACH_MINIMIX27 MINIMIX27 2446 | ||
2433 | omap3_thunder MACH_OMAP3_THUNDER OMAP3_THUNDER 2447 | ||
2434 | passionc MACH_PASSIONC PASSIONC 2448 | ||
2435 | mx27amata MACH_MX27AMATA MX27AMATA 2449 | ||
2436 | bgat1 MACH_BGAT1 BGAT1 2450 | ||
2437 | buzz MACH_BUZZ BUZZ 2451 | ||
2438 | mb9g20 MACH_MB9G20 MB9G20 2452 | ||
2439 | yushan MACH_YUSHAN YUSHAN 2453 | ||
2440 | lizard MACH_LIZARD LIZARD 2454 | ||
2441 | omap3polycom MACH_OMAP3POLYCOM OMAP3POLYCOM 2455 | ||
2442 | smdkv210 MACH_SMDKV210 SMDKV210 2456 | ||
2443 | bravo MACH_BRAVO BRAVO 2457 | ||
2444 | siogentoo1 MACH_SIOGENTOO1 SIOGENTOO1 2458 | ||
2445 | siogentoo2 MACH_SIOGENTOO2 SIOGENTOO2 2459 | ||
2446 | sm3k MACH_SM3K SM3K 2460 | ||
2447 | acer_tempo_f900 MACH_ACER_TEMPO_F900 ACER_TEMPO_F900 2461 | ||
2448 | sst61vc010_dev MACH_SST61VC010_DEV SST61VC010_DEV 2462 | ||
2449 | glittertind MACH_GLITTERTIND GLITTERTIND 2463 | ||
2450 | omap_zoom3 MACH_OMAP_ZOOM3 OMAP_ZOOM3 2464 | ||
2451 | omap_3630sdp MACH_OMAP_3630SDP OMAP_3630SDP 2465 | ||
2452 | cybook2440 MACH_CYBOOK2440 CYBOOK2440 2466 | ||
2453 | torino_s MACH_TORINO_S TORINO_S 2467 | ||
2454 | havana MACH_HAVANA HAVANA 2468 | ||
2455 | beaumont_11 MACH_BEAUMONT_11 BEAUMONT_11 2469 | ||
2456 | vanguard MACH_VANGUARD VANGUARD 2470 | ||
2457 | s5pc110_draco MACH_S5PC110_DRACO S5PC110_DRACO 2471 | ||
2458 | cartesio_two MACH_CARTESIO_TWO CARTESIO_TWO 2472 | ||
2459 | aster MACH_ASTER ASTER 2473 | ||
2460 | voguesv210 MACH_VOGUESV210 VOGUESV210 2474 | ||
2461 | acm500x MACH_ACM500X ACM500X 2475 | ||
2462 | km9260 MACH_KM9260 KM9260 2476 | ||
2463 | nideflexg1 MACH_NIDEFLEXG1 NIDEFLEXG1 2477 | ||
2464 | ctera_plug_io MACH_CTERA_PLUG_IO CTERA_PLUG_IO 2478 | ||
2465 | smartq7 MACH_SMARTQ7 SMARTQ7 2479 | ||
2466 | at91sam9g10ek2 MACH_AT91SAM9G10EK2 AT91SAM9G10EK2 2480 | ||
2467 | asusp527 MACH_ASUSP527 ASUSP527 2481 | ||
2468 | at91sam9g20mpm2 MACH_AT91SAM9G20MPM2 AT91SAM9G20MPM2 2482 | ||
2469 | topasa900 MACH_TOPASA900 TOPASA900 2483 | ||
2470 | electrum_100 MACH_ELECTRUM_100 ELECTRUM_100 2484 | ||
2471 | mx51grb MACH_MX51GRB MX51GRB 2485 | ||
2472 | xea300 MACH_XEA300 XEA300 2486 | ||
2473 | htcstartrek MACH_HTCSTARTREK HTCSTARTREK 2487 | ||
2474 | lima MACH_LIMA LIMA 2488 | ||
2475 | csb740 MACH_CSB740 CSB740 2489 | ||
2476 | usb_s8815 MACH_USB_S8815 USB_S8815 2490 | ||
2477 | watson_efm_plugin MACH_WATSON_EFM_PLUGIN WATSON_EFM_PLUGIN 2491 | ||
2478 | milkyway MACH_MILKYWAY MILKYWAY 2492 | ||
2479 | g4evm MACH_G4EVM G4EVM 2493 | ||
2480 | picomod6 MACH_PICOMOD6 PICOMOD6 2494 | ||
2481 | omapl138_hawkboard MACH_OMAPL138_HAWKBOARD OMAPL138_HAWKBOARD 2495 | ||
2482 | ip6000 MACH_IP6000 IP6000 2496 | ||
2483 | ip6010 MACH_IP6010 IP6010 2497 | ||
2484 | utm400 MACH_UTM400 UTM400 2498 | ||
2485 | omap3_zybex MACH_OMAP3_ZYBEX OMAP3_ZYBEX 2499 | ||
2486 | wireless_space MACH_WIRELESS_SPACE WIRELESS_SPACE 2500 | ||
2487 | sx560 MACH_SX560 SX560 2501 | ||
2488 | ts41x MACH_TS41X TS41X 2502 | ||
2489 | elphel10373 MACH_ELPHEL10373 ELPHEL10373 2503 | ||
2490 | rhobot MACH_RHOBOT RHOBOT 2504 | ||
2491 | mx51_refresh MACH_MX51_REFRESH MX51_REFRESH 2505 | ||
2492 | ls9260 MACH_LS9260 LS9260 2506 | ||
2493 | shank MACH_SHANK SHANK 2507 | ||
2494 | qsd8x50_st1 MACH_QSD8X50_ST1 QSD8X50_ST1 2508 | ||
2495 | at91sam9m10ekes MACH_AT91SAM9M10EKES AT91SAM9M10EKES 2509 | ||
2496 | hiram MACH_HIRAM HIRAM 2510 | ||
2497 | phy3250 MACH_PHY3250 PHY3250 2511 | ||
2498 | ea3250 MACH_EA3250 EA3250 2512 | ||
2499 | fdi3250 MACH_FDI3250 FDI3250 2513 | ||
2500 | whitestone MACH_WHITESTONE WHITESTONE 2514 | ||
2501 | at91sam9263nit MACH_AT91SAM9263NIT AT91SAM9263NIT 2515 | ||
2502 | ccmx51 MACH_CCMX51 CCMX51 2516 | ||
2503 | ccmx51js MACH_CCMX51JS CCMX51JS 2517 | ||
2504 | ccwmx51 MACH_CCWMX51 CCWMX51 2518 | ||
2505 | ccwmx51js MACH_CCWMX51JS CCWMX51JS 2519 | ||
2506 | mini6410 MACH_MINI6410 MINI6410 2520 | ||
2507 | tiny6410 MACH_TINY6410 TINY6410 2521 | ||
2508 | nano6410 MACH_NANO6410 NANO6410 2522 | ||
2509 | at572d940hfnldb MACH_AT572D940HFNLDB AT572D940HFNLDB 2523 | ||
2510 | htcleo MACH_HTCLEO HTCLEO 2524 | ||
2511 | avp13 MACH_AVP13 AVP13 2525 | ||
2512 | xxsvideod MACH_XXSVIDEOD XXSVIDEOD 2526 | ||
2513 | vpnext MACH_VPNEXT VPNEXT 2527 | ||
2514 | swarco_itc3 MACH_SWARCO_ITC3 SWARCO_ITC3 2528 | ||
2515 | tx51 MACH_TX51 TX51 2529 | ||
2516 | dolby_cat1021 MACH_DOLBY_CAT1021 DOLBY_CAT1021 2530 | ||
2517 | mx28evk MACH_MX28EVK MX28EVK 2531 | ||
2518 | phoenix260 MACH_PHOENIX260 PHOENIX260 2532 | ||
2519 | uvaca_stork MACH_UVACA_STORK UVACA_STORK 2533 | ||
2520 | smartq5 MACH_SMARTQ5 SMARTQ5 2534 | ||
2521 | all3078 MACH_ALL3078 ALL3078 2535 | ||
2522 | ctera_2bay_ds MACH_CTERA_2BAY_DS CTERA_2BAY_DS 2536 | ||
2523 | siogentoo3 MACH_SIOGENTOO3 SIOGENTOO3 2537 | ||
2524 | epb5000 MACH_EPB5000 EPB5000 2538 | ||
2525 | hy9263 MACH_HY9263 HY9263 2539 | ||
2526 | acer_tempo_m900 MACH_ACER_TEMPO_M900 ACER_TEMPO_M900 2540 | ||
2527 | acer_tempo_dx650 MACH_ACER_TEMPO_DX900 ACER_TEMPO_DX900 2541 | ||
2528 | acer_tempo_x960 MACH_ACER_TEMPO_X960 ACER_TEMPO_X960 2542 | ||
2529 | acer_eten_v900 MACH_ACER_ETEN_V900 ACER_ETEN_V900 2543 | ||
2530 | acer_eten_x900 MACH_ACER_ETEN_X900 ACER_ETEN_X900 2544 | ||
2531 | bonnell MACH_BONNELL BONNELL 2545 | ||
2532 | oht_mx27 MACH_OHT_MX27 OHT_MX27 2546 | ||
2533 | htcquartz MACH_HTCQUARTZ HTCQUARTZ 2547 | ||
2534 | davinci_dm6467tevm MACH_DAVINCI_DM6467TEVM DAVINCI_DM6467TEVM 2548 | ||
2535 | c3ax03 MACH_C3AX03 C3AX03 2549 | ||
2536 | mxt_td60 MACH_MXT_TD60 MXT_TD60 2550 | ||
2537 | esyx MACH_ESYX ESYX 2551 | ||
2538 | bulldog MACH_BULLDOG BULLDOG 2553 | ||
diff --git a/arch/blackfin/kernel/bfin_dma_5xx.c b/arch/blackfin/kernel/bfin_dma_5xx.c index 1f170216d2f..3946aff4f41 100644 --- a/arch/blackfin/kernel/bfin_dma_5xx.c +++ b/arch/blackfin/kernel/bfin_dma_5xx.c | |||
@@ -225,8 +225,13 @@ int blackfin_dma_suspend(void) | |||
225 | void blackfin_dma_resume(void) | 225 | void blackfin_dma_resume(void) |
226 | { | 226 | { |
227 | int i; | 227 | int i; |
228 | for (i = 0; i < MAX_DMA_SUSPEND_CHANNELS; ++i) | 228 | |
229 | dma_ch[i].regs->peripheral_map = dma_ch[i].saved_peripheral_map; | 229 | for (i = 0; i < MAX_DMA_CHANNELS; ++i) { |
230 | dma_ch[i].regs->cfg = 0; | ||
231 | |||
232 | if (i < MAX_DMA_SUSPEND_CHANNELS) | ||
233 | dma_ch[i].regs->peripheral_map = dma_ch[i].saved_peripheral_map; | ||
234 | } | ||
230 | } | 235 | } |
231 | #endif | 236 | #endif |
232 | 237 | ||
diff --git a/arch/blackfin/kernel/cplb-mpu/cplbinit.c b/arch/blackfin/kernel/cplb-mpu/cplbinit.c index f7b9cdce823..b52c1f8c4bc 100644 --- a/arch/blackfin/kernel/cplb-mpu/cplbinit.c +++ b/arch/blackfin/kernel/cplb-mpu/cplbinit.c | |||
@@ -38,7 +38,7 @@ void __init generate_cplb_tables_cpu(unsigned int cpu) | |||
38 | 38 | ||
39 | #ifdef CONFIG_BFIN_EXTMEM_DCACHEABLE | 39 | #ifdef CONFIG_BFIN_EXTMEM_DCACHEABLE |
40 | d_cache = CPLB_L1_CHBL; | 40 | d_cache = CPLB_L1_CHBL; |
41 | #ifdef CONFIG_BFIN_EXTMEM_WRITETROUGH | 41 | #ifdef CONFIG_BFIN_EXTMEM_WRITETHROUGH |
42 | d_cache |= CPLB_L1_AOW | CPLB_WT; | 42 | d_cache |= CPLB_L1_AOW | CPLB_WT; |
43 | #endif | 43 | #endif |
44 | #endif | 44 | #endif |
diff --git a/arch/blackfin/kernel/process.c b/arch/blackfin/kernel/process.c index 430ae39456e..5cc7e2e9e41 100644 --- a/arch/blackfin/kernel/process.c +++ b/arch/blackfin/kernel/process.c | |||
@@ -151,7 +151,7 @@ void start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_ | |||
151 | regs->pc = new_ip; | 151 | regs->pc = new_ip; |
152 | if (current->mm) | 152 | if (current->mm) |
153 | regs->p5 = current->mm->start_data; | 153 | regs->p5 = current->mm->start_data; |
154 | #ifdef CONFIG_SMP | 154 | #ifndef CONFIG_SMP |
155 | task_thread_info(current)->l1_task_info.stack_start = | 155 | task_thread_info(current)->l1_task_info.stack_start = |
156 | (void *)current->mm->context.stack_start; | 156 | (void *)current->mm->context.stack_start; |
157 | task_thread_info(current)->l1_task_info.lowest_sp = (void *)new_sp; | 157 | task_thread_info(current)->l1_task_info.lowest_sp = (void *)new_sp; |
diff --git a/arch/blackfin/kernel/ptrace.c b/arch/blackfin/kernel/ptrace.c index 0982b5d5af1..56b0ba12175 100644 --- a/arch/blackfin/kernel/ptrace.c +++ b/arch/blackfin/kernel/ptrace.c | |||
@@ -315,7 +315,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
315 | case BFIN_MEM_ACCESS_CORE: | 315 | case BFIN_MEM_ACCESS_CORE: |
316 | case BFIN_MEM_ACCESS_CORE_ONLY: | 316 | case BFIN_MEM_ACCESS_CORE_ONLY: |
317 | copied = access_process_vm(child, addr, &data, | 317 | copied = access_process_vm(child, addr, &data, |
318 | to_copy, 0); | 318 | to_copy, 1); |
319 | if (copied) | 319 | if (copied) |
320 | break; | 320 | break; |
321 | 321 | ||
diff --git a/arch/blackfin/mach-bf518/include/mach/anomaly.h b/arch/blackfin/mach-bf518/include/mach/anomaly.h index e9c65390edd..2829dd0400f 100644 --- a/arch/blackfin/mach-bf518/include/mach/anomaly.h +++ b/arch/blackfin/mach-bf518/include/mach/anomaly.h | |||
@@ -1,9 +1,13 @@ | |||
1 | /* | 1 | /* |
2 | * File: include/asm-blackfin/mach-bf518/anomaly.h | 2 | * DO NOT EDIT THIS FILE |
3 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 3 | * This file is under version control at |
4 | * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/ | ||
5 | * and can be replaced with that version at any time | ||
6 | * DO NOT EDIT THIS FILE | ||
4 | * | 7 | * |
5 | * Copyright (C) 2004-2009 Analog Devices Inc. | 8 | * Copyright 2004-2009 Analog Devices Inc. |
6 | * Licensed under the GPL-2 or later. | 9 | * Licensed under the ADI BSD license. |
10 | * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd | ||
7 | */ | 11 | */ |
8 | 12 | ||
9 | /* This file should be up to date with: | 13 | /* This file should be up to date with: |
@@ -70,6 +74,10 @@ | |||
70 | #define ANOMALY_05000461 (1) | 74 | #define ANOMALY_05000461 (1) |
71 | /* Synchronization Problem at Startup May Cause SPORT Transmit Channels to Misalign */ | 75 | /* Synchronization Problem at Startup May Cause SPORT Transmit Channels to Misalign */ |
72 | #define ANOMALY_05000462 (1) | 76 | #define ANOMALY_05000462 (1) |
77 | /* Interrupted 32-Bit SPORT Data Register Access Results In Underflow */ | ||
78 | #define ANOMALY_05000473 (1) | ||
79 | /* TESTSET Instruction Cannot Be Interrupted */ | ||
80 | #define ANOMALY_05000477 (1) | ||
73 | 81 | ||
74 | /* Anomalies that don't exist on this proc */ | 82 | /* Anomalies that don't exist on this proc */ |
75 | #define ANOMALY_05000099 (0) | 83 | #define ANOMALY_05000099 (0) |
@@ -133,5 +141,7 @@ | |||
133 | #define ANOMALY_05000450 (0) | 141 | #define ANOMALY_05000450 (0) |
134 | #define ANOMALY_05000465 (0) | 142 | #define ANOMALY_05000465 (0) |
135 | #define ANOMALY_05000467 (0) | 143 | #define ANOMALY_05000467 (0) |
144 | #define ANOMALY_05000474 (0) | ||
145 | #define ANOMALY_05000475 (0) | ||
136 | 146 | ||
137 | #endif | 147 | #endif |
diff --git a/arch/blackfin/mach-bf527/include/mach/anomaly.h b/arch/blackfin/mach-bf527/include/mach/anomaly.h index 3f9052687fa..02040df8ec8 100644 --- a/arch/blackfin/mach-bf527/include/mach/anomaly.h +++ b/arch/blackfin/mach-bf527/include/mach/anomaly.h | |||
@@ -1,14 +1,18 @@ | |||
1 | /* | 1 | /* |
2 | * File: include/asm-blackfin/mach-bf527/anomaly.h | 2 | * DO NOT EDIT THIS FILE |
3 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 3 | * This file is under version control at |
4 | * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/ | ||
5 | * and can be replaced with that version at any time | ||
6 | * DO NOT EDIT THIS FILE | ||
4 | * | 7 | * |
5 | * Copyright (C) 2004-2009 Analog Devices Inc. | 8 | * Copyright 2004-2009 Analog Devices Inc. |
6 | * Licensed under the GPL-2 or later. | 9 | * Licensed under the ADI BSD license. |
10 | * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd | ||
7 | */ | 11 | */ |
8 | 12 | ||
9 | /* This file should be up to date with: | 13 | /* This file should be up to date with: |
10 | * - Revision D, 08/14/2009; ADSP-BF526 Blackfin Processor Anomaly List | 14 | * - Revision D, 08/14/2009; ADSP-BF526 Blackfin Processor Anomaly List |
11 | * - Revision F, 03/03/2009; ADSP-BF527 Blackfin Processor Anomaly List | 15 | * - Revision G, 08/25/2009; ADSP-BF527 Blackfin Processor Anomaly List |
12 | */ | 16 | */ |
13 | 17 | ||
14 | #ifndef _MACH_ANOMALY_H_ | 18 | #ifndef _MACH_ANOMALY_H_ |
@@ -200,6 +204,10 @@ | |||
200 | #define ANOMALY_05000467 (1) | 204 | #define ANOMALY_05000467 (1) |
201 | /* PLL Latches Incorrect Settings During Reset */ | 205 | /* PLL Latches Incorrect Settings During Reset */ |
202 | #define ANOMALY_05000469 (1) | 206 | #define ANOMALY_05000469 (1) |
207 | /* Interrupted 32-Bit SPORT Data Register Access Results In Underflow */ | ||
208 | #define ANOMALY_05000473 (1) | ||
209 | /* TESTSET Instruction Cannot Be Interrupted */ | ||
210 | #define ANOMALY_05000477 (1) | ||
203 | 211 | ||
204 | /* Anomalies that don't exist on this proc */ | 212 | /* Anomalies that don't exist on this proc */ |
205 | #define ANOMALY_05000099 (0) | 213 | #define ANOMALY_05000099 (0) |
@@ -250,5 +258,7 @@ | |||
250 | #define ANOMALY_05000412 (0) | 258 | #define ANOMALY_05000412 (0) |
251 | #define ANOMALY_05000447 (0) | 259 | #define ANOMALY_05000447 (0) |
252 | #define ANOMALY_05000448 (0) | 260 | #define ANOMALY_05000448 (0) |
261 | #define ANOMALY_05000474 (0) | ||
262 | #define ANOMALY_05000475 (0) | ||
253 | 263 | ||
254 | #endif | 264 | #endif |
diff --git a/arch/blackfin/mach-bf533/include/mach/anomaly.h b/arch/blackfin/mach-bf533/include/mach/anomaly.h index cd83db2fb1a..9b3f7a27714 100644 --- a/arch/blackfin/mach-bf533/include/mach/anomaly.h +++ b/arch/blackfin/mach-bf533/include/mach/anomaly.h | |||
@@ -1,9 +1,13 @@ | |||
1 | /* | 1 | /* |
2 | * File: include/asm-blackfin/mach-bf533/anomaly.h | 2 | * DO NOT EDIT THIS FILE |
3 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 3 | * This file is under version control at |
4 | * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/ | ||
5 | * and can be replaced with that version at any time | ||
6 | * DO NOT EDIT THIS FILE | ||
4 | * | 7 | * |
5 | * Copyright (C) 2004-2009 Analog Devices Inc. | 8 | * Copyright 2004-2009 Analog Devices Inc. |
6 | * Licensed under the GPL-2 or later. | 9 | * Licensed under the ADI BSD license. |
10 | * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd | ||
7 | */ | 11 | */ |
8 | 12 | ||
9 | /* This file should be up to date with: | 13 | /* This file should be up to date with: |
@@ -202,6 +206,10 @@ | |||
202 | #define ANOMALY_05000443 (1) | 206 | #define ANOMALY_05000443 (1) |
203 | /* False Hardware Error when RETI Points to Invalid Memory */ | 207 | /* False Hardware Error when RETI Points to Invalid Memory */ |
204 | #define ANOMALY_05000461 (1) | 208 | #define ANOMALY_05000461 (1) |
209 | /* Interrupted 32-Bit SPORT Data Register Access Results In Underflow */ | ||
210 | #define ANOMALY_05000473 (1) | ||
211 | /* TESTSET Instruction Cannot Be Interrupted */ | ||
212 | #define ANOMALY_05000477 (1) | ||
205 | 213 | ||
206 | /* These anomalies have been "phased" out of analog.com anomaly sheets and are | 214 | /* These anomalies have been "phased" out of analog.com anomaly sheets and are |
207 | * here to show running on older silicon just isn't feasible. | 215 | * here to show running on older silicon just isn't feasible. |
@@ -349,5 +357,7 @@ | |||
349 | #define ANOMALY_05000450 (0) | 357 | #define ANOMALY_05000450 (0) |
350 | #define ANOMALY_05000465 (0) | 358 | #define ANOMALY_05000465 (0) |
351 | #define ANOMALY_05000467 (0) | 359 | #define ANOMALY_05000467 (0) |
360 | #define ANOMALY_05000474 (0) | ||
361 | #define ANOMALY_05000475 (0) | ||
352 | 362 | ||
353 | #endif | 363 | #endif |
diff --git a/arch/blackfin/mach-bf537/include/mach/anomaly.h b/arch/blackfin/mach-bf537/include/mach/anomaly.h index f091ad2d8ea..d2c427bc665 100644 --- a/arch/blackfin/mach-bf537/include/mach/anomaly.h +++ b/arch/blackfin/mach-bf537/include/mach/anomaly.h | |||
@@ -1,9 +1,13 @@ | |||
1 | /* | 1 | /* |
2 | * File: include/asm-blackfin/mach-bf537/anomaly.h | 2 | * DO NOT EDIT THIS FILE |
3 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 3 | * This file is under version control at |
4 | * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/ | ||
5 | * and can be replaced with that version at any time | ||
6 | * DO NOT EDIT THIS FILE | ||
4 | * | 7 | * |
5 | * Copyright (C) 2004-2009 Analog Devices Inc. | 8 | * Copyright 2004-2009 Analog Devices Inc. |
6 | * Licensed under the GPL-2 or later. | 9 | * Licensed under the ADI BSD license. |
10 | * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd | ||
7 | */ | 11 | */ |
8 | 12 | ||
9 | /* This file should be up to date with: | 13 | /* This file should be up to date with: |
@@ -156,6 +160,10 @@ | |||
156 | #define ANOMALY_05000443 (1) | 160 | #define ANOMALY_05000443 (1) |
157 | /* False Hardware Error when RETI Points to Invalid Memory */ | 161 | /* False Hardware Error when RETI Points to Invalid Memory */ |
158 | #define ANOMALY_05000461 (1) | 162 | #define ANOMALY_05000461 (1) |
163 | /* Interrupted 32-Bit SPORT Data Register Access Results In Underflow */ | ||
164 | #define ANOMALY_05000473 (1) | ||
165 | /* TESTSET Instruction Cannot Be Interrupted */ | ||
166 | #define ANOMALY_05000477 (1) | ||
159 | 167 | ||
160 | /* Anomalies that don't exist on this proc */ | 168 | /* Anomalies that don't exist on this proc */ |
161 | #define ANOMALY_05000099 (0) | 169 | #define ANOMALY_05000099 (0) |
@@ -202,5 +210,7 @@ | |||
202 | #define ANOMALY_05000450 (0) | 210 | #define ANOMALY_05000450 (0) |
203 | #define ANOMALY_05000465 (0) | 211 | #define ANOMALY_05000465 (0) |
204 | #define ANOMALY_05000467 (0) | 212 | #define ANOMALY_05000467 (0) |
213 | #define ANOMALY_05000474 (0) | ||
214 | #define ANOMALY_05000475 (0) | ||
205 | 215 | ||
206 | #endif | 216 | #endif |
diff --git a/arch/blackfin/mach-bf538/include/mach/anomaly.h b/arch/blackfin/mach-bf538/include/mach/anomaly.h index 26b76083e14..d882b7e6f59 100644 --- a/arch/blackfin/mach-bf538/include/mach/anomaly.h +++ b/arch/blackfin/mach-bf538/include/mach/anomaly.h | |||
@@ -1,9 +1,13 @@ | |||
1 | /* | 1 | /* |
2 | * File: include/asm-blackfin/mach-bf538/anomaly.h | 2 | * DO NOT EDIT THIS FILE |
3 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 3 | * This file is under version control at |
4 | * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/ | ||
5 | * and can be replaced with that version at any time | ||
6 | * DO NOT EDIT THIS FILE | ||
4 | * | 7 | * |
5 | * Copyright (C) 2004-2009 Analog Devices Inc. | 8 | * Copyright 2004-2009 Analog Devices Inc. |
6 | * Licensed under the GPL-2 or later. | 9 | * Licensed under the ADI BSD license. |
10 | * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd | ||
7 | */ | 11 | */ |
8 | 12 | ||
9 | /* This file should be up to date with: | 13 | /* This file should be up to date with: |
@@ -128,6 +132,10 @@ | |||
128 | #define ANOMALY_05000443 (1) | 132 | #define ANOMALY_05000443 (1) |
129 | /* False Hardware Error when RETI Points to Invalid Memory */ | 133 | /* False Hardware Error when RETI Points to Invalid Memory */ |
130 | #define ANOMALY_05000461 (1) | 134 | #define ANOMALY_05000461 (1) |
135 | /* Interrupted 32-Bit SPORT Data Register Access Results In Underflow */ | ||
136 | #define ANOMALY_05000473 (1) | ||
137 | /* TESTSET Instruction Cannot Be Interrupted */ | ||
138 | #define ANOMALY_05000477 (1) | ||
131 | 139 | ||
132 | /* Anomalies that don't exist on this proc */ | 140 | /* Anomalies that don't exist on this proc */ |
133 | #define ANOMALY_05000099 (0) | 141 | #define ANOMALY_05000099 (0) |
@@ -176,5 +184,7 @@ | |||
176 | #define ANOMALY_05000450 (0) | 184 | #define ANOMALY_05000450 (0) |
177 | #define ANOMALY_05000465 (0) | 185 | #define ANOMALY_05000465 (0) |
178 | #define ANOMALY_05000467 (0) | 186 | #define ANOMALY_05000467 (0) |
187 | #define ANOMALY_05000474 (0) | ||
188 | #define ANOMALY_05000475 (0) | ||
179 | 189 | ||
180 | #endif | 190 | #endif |
diff --git a/arch/blackfin/mach-bf548/include/mach/anomaly.h b/arch/blackfin/mach-bf548/include/mach/anomaly.h index 52b116ae522..7d08c752449 100644 --- a/arch/blackfin/mach-bf548/include/mach/anomaly.h +++ b/arch/blackfin/mach-bf548/include/mach/anomaly.h | |||
@@ -1,9 +1,13 @@ | |||
1 | /* | 1 | /* |
2 | * File: include/asm-blackfin/mach-bf548/anomaly.h | 2 | * DO NOT EDIT THIS FILE |
3 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 3 | * This file is under version control at |
4 | * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/ | ||
5 | * and can be replaced with that version at any time | ||
6 | * DO NOT EDIT THIS FILE | ||
4 | * | 7 | * |
5 | * Copyright (C) 2004-2009 Analog Devices Inc. | 8 | * Copyright 2004-2009 Analog Devices Inc. |
6 | * Licensed under the GPL-2 or later. | 9 | * Licensed under the ADI BSD license. |
10 | * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd | ||
7 | */ | 11 | */ |
8 | 12 | ||
9 | /* This file should be up to date with: | 13 | /* This file should be up to date with: |
@@ -24,6 +28,8 @@ | |||
24 | #define ANOMALY_05000119 (1) | 28 | #define ANOMALY_05000119 (1) |
25 | /* Rx.H Cannot Be Used to Access 16-bit System MMR Registers */ | 29 | /* Rx.H Cannot Be Used to Access 16-bit System MMR Registers */ |
26 | #define ANOMALY_05000122 (1) | 30 | #define ANOMALY_05000122 (1) |
31 | /* Data Corruption with Cached External Memory and Non-Cached On-Chip L2 Memory */ | ||
32 | #define ANOMALY_05000220 (1) | ||
27 | /* False Hardware Error from an Access in the Shadow of a Conditional Branch */ | 33 | /* False Hardware Error from an Access in the Shadow of a Conditional Branch */ |
28 | #define ANOMALY_05000245 (1) | 34 | #define ANOMALY_05000245 (1) |
29 | /* Sensitivity To Noise with Slow Input Edge Rates on External SPORT TX and RX Clocks */ | 35 | /* Sensitivity To Noise with Slow Input Edge Rates on External SPORT TX and RX Clocks */ |
@@ -200,6 +206,14 @@ | |||
200 | #define ANOMALY_05000466 (1) | 206 | #define ANOMALY_05000466 (1) |
201 | /* Possible RX data corruption when control & data EP FIFOs are accessed via the core */ | 207 | /* Possible RX data corruption when control & data EP FIFOs are accessed via the core */ |
202 | #define ANOMALY_05000467 (1) | 208 | #define ANOMALY_05000467 (1) |
209 | /* Interrupted 32-Bit SPORT Data Register Access Results In Underflow */ | ||
210 | #define ANOMALY_05000473 (1) | ||
211 | /* Access to DDR-SDRAM causes system hang under certain PLL/VR settings */ | ||
212 | #define ANOMALY_05000474 (1) | ||
213 | /* Core Hang With L2/L3 Configured in Writeback Cache Mode */ | ||
214 | #define ANOMALY_05000475 (1) | ||
215 | /* TESTSET Instruction Cannot Be Interrupted */ | ||
216 | #define ANOMALY_05000477 (1) | ||
203 | 217 | ||
204 | /* Anomalies that don't exist on this proc */ | 218 | /* Anomalies that don't exist on this proc */ |
205 | #define ANOMALY_05000099 (0) | 219 | #define ANOMALY_05000099 (0) |
@@ -215,7 +229,6 @@ | |||
215 | #define ANOMALY_05000198 (0) | 229 | #define ANOMALY_05000198 (0) |
216 | #define ANOMALY_05000202 (0) | 230 | #define ANOMALY_05000202 (0) |
217 | #define ANOMALY_05000215 (0) | 231 | #define ANOMALY_05000215 (0) |
218 | #define ANOMALY_05000220 (0) | ||
219 | #define ANOMALY_05000227 (0) | 232 | #define ANOMALY_05000227 (0) |
220 | #define ANOMALY_05000230 (0) | 233 | #define ANOMALY_05000230 (0) |
221 | #define ANOMALY_05000231 (0) | 234 | #define ANOMALY_05000231 (0) |
diff --git a/arch/blackfin/mach-bf561/atomic.S b/arch/blackfin/mach-bf561/atomic.S index 0261a5e751b..f99f174b129 100644 --- a/arch/blackfin/mach-bf561/atomic.S +++ b/arch/blackfin/mach-bf561/atomic.S | |||
@@ -19,6 +19,16 @@ | |||
19 | \reg\().h = _corelock; | 19 | \reg\().h = _corelock; |
20 | .endm | 20 | .endm |
21 | 21 | ||
22 | .macro safe_testset addr:req, scratch:req | ||
23 | #if ANOMALY_05000477 | ||
24 | cli \scratch; | ||
25 | testset (\addr); | ||
26 | sti \scratch; | ||
27 | #else | ||
28 | testset (\addr); | ||
29 | #endif | ||
30 | .endm | ||
31 | |||
22 | /* | 32 | /* |
23 | * r0 = address of atomic data to flush and invalidate (32bit). | 33 | * r0 = address of atomic data to flush and invalidate (32bit). |
24 | * | 34 | * |
@@ -33,7 +43,7 @@ ENTRY(_get_core_lock) | |||
33 | cli r0; | 43 | cli r0; |
34 | coreslot_loadaddr p0; | 44 | coreslot_loadaddr p0; |
35 | .Lretry_corelock: | 45 | .Lretry_corelock: |
36 | testset (p0); | 46 | safe_testset p0, r2; |
37 | if cc jump .Ldone_corelock; | 47 | if cc jump .Ldone_corelock; |
38 | SSYNC(r2); | 48 | SSYNC(r2); |
39 | jump .Lretry_corelock | 49 | jump .Lretry_corelock |
@@ -56,7 +66,7 @@ ENTRY(_get_core_lock_noflush) | |||
56 | cli r0; | 66 | cli r0; |
57 | coreslot_loadaddr p0; | 67 | coreslot_loadaddr p0; |
58 | .Lretry_corelock_noflush: | 68 | .Lretry_corelock_noflush: |
59 | testset (p0); | 69 | safe_testset p0, r2; |
60 | if cc jump .Ldone_corelock_noflush; | 70 | if cc jump .Ldone_corelock_noflush; |
61 | SSYNC(r2); | 71 | SSYNC(r2); |
62 | jump .Lretry_corelock_noflush | 72 | jump .Lretry_corelock_noflush |
diff --git a/arch/blackfin/mach-bf561/include/mach/anomaly.h b/arch/blackfin/mach-bf561/include/mach/anomaly.h index 70da495c966..5ddc981e993 100644 --- a/arch/blackfin/mach-bf561/include/mach/anomaly.h +++ b/arch/blackfin/mach-bf561/include/mach/anomaly.h | |||
@@ -1,9 +1,13 @@ | |||
1 | /* | 1 | /* |
2 | * File: include/asm-blackfin/mach-bf561/anomaly.h | 2 | * DO NOT EDIT THIS FILE |
3 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 3 | * This file is under version control at |
4 | * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/ | ||
5 | * and can be replaced with that version at any time | ||
6 | * DO NOT EDIT THIS FILE | ||
4 | * | 7 | * |
5 | * Copyright (C) 2004-2009 Analog Devices Inc. | 8 | * Copyright 2004-2009 Analog Devices Inc. |
6 | * Licensed under the GPL-2 or later. | 9 | * Licensed under the ADI BSD license. |
10 | * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd | ||
7 | */ | 11 | */ |
8 | 12 | ||
9 | /* This file should be up to date with: | 13 | /* This file should be up to date with: |
@@ -213,7 +217,11 @@ | |||
213 | /* Disabling Peripherals with DMA Running May Cause DMA System Instability */ | 217 | /* Disabling Peripherals with DMA Running May Cause DMA System Instability */ |
214 | #define ANOMALY_05000278 (__SILICON_REVISION__ < 5) | 218 | #define ANOMALY_05000278 (__SILICON_REVISION__ < 5) |
215 | /* False Hardware Error Exception when ISR Context Is Not Restored */ | 219 | /* False Hardware Error Exception when ISR Context Is Not Restored */ |
216 | #define ANOMALY_05000281 (__SILICON_REVISION__ < 5) | 220 | /* Temporarily walk around for bug 5423 till this issue is confirmed by |
221 | * official anomaly document. It looks 05000281 still exists on bf561 | ||
222 | * v0.5. | ||
223 | */ | ||
224 | #define ANOMALY_05000281 (__SILICON_REVISION__ <= 5) | ||
217 | /* System MMR Write Is Stalled Indefinitely when Killed in a Particular Stage */ | 225 | /* System MMR Write Is Stalled Indefinitely when Killed in a Particular Stage */ |
218 | #define ANOMALY_05000283 (1) | 226 | #define ANOMALY_05000283 (1) |
219 | /* Reads Will Receive Incorrect Data under Certain Conditions */ | 227 | /* Reads Will Receive Incorrect Data under Certain Conditions */ |
@@ -280,6 +288,12 @@ | |||
280 | #define ANOMALY_05000443 (1) | 288 | #define ANOMALY_05000443 (1) |
281 | /* False Hardware Error when RETI Points to Invalid Memory */ | 289 | /* False Hardware Error when RETI Points to Invalid Memory */ |
282 | #define ANOMALY_05000461 (1) | 290 | #define ANOMALY_05000461 (1) |
291 | /* Interrupted 32-Bit SPORT Data Register Access Results In Underflow */ | ||
292 | #define ANOMALY_05000473 (1) | ||
293 | /* Core Hang With L2/L3 Configured in Writeback Cache Mode */ | ||
294 | #define ANOMALY_05000475 (__SILICON_REVISION__ < 4) | ||
295 | /* TESTSET Instruction Cannot Be Interrupted */ | ||
296 | #define ANOMALY_05000477 (1) | ||
283 | 297 | ||
284 | /* Anomalies that don't exist on this proc */ | 298 | /* Anomalies that don't exist on this proc */ |
285 | #define ANOMALY_05000119 (0) | 299 | #define ANOMALY_05000119 (0) |
@@ -304,5 +318,6 @@ | |||
304 | #define ANOMALY_05000450 (0) | 318 | #define ANOMALY_05000450 (0) |
305 | #define ANOMALY_05000465 (0) | 319 | #define ANOMALY_05000465 (0) |
306 | #define ANOMALY_05000467 (0) | 320 | #define ANOMALY_05000467 (0) |
321 | #define ANOMALY_05000474 (0) | ||
307 | 322 | ||
308 | #endif | 323 | #endif |
diff --git a/arch/blackfin/mach-common/arch_checks.c b/arch/blackfin/mach-common/arch_checks.c index 9dbafcdcf47..f2ca211a76a 100644 --- a/arch/blackfin/mach-common/arch_checks.c +++ b/arch/blackfin/mach-common/arch_checks.c | |||
@@ -57,3 +57,8 @@ | |||
57 | (!defined(CONFIG_BFIN_EXTMEM_DCACHEABLE) && defined(CONFIG_BFIN_L2_WRITEBACK))) | 57 | (!defined(CONFIG_BFIN_EXTMEM_DCACHEABLE) && defined(CONFIG_BFIN_L2_WRITEBACK))) |
58 | # error You are exposing Anomaly 220 in this config, either config L2 as Write Through, or make External Memory WB. | 58 | # error You are exposing Anomaly 220 in this config, either config L2 as Write Through, or make External Memory WB. |
59 | #endif | 59 | #endif |
60 | |||
61 | #if ANOMALY_05000475 && \ | ||
62 | (defined(CONFIG_BFIN_EXTMEM_WRITEBACK) || defined(CONFIG_BFIN_L2_WRITEBACK)) | ||
63 | # error "Anomaly 475 does not allow you to use Write Back cache with L2 or External Memory" | ||
64 | #endif | ||
diff --git a/arch/blackfin/mach-common/smp.c b/arch/blackfin/mach-common/smp.c index d98585f3237..d92b168c832 100644 --- a/arch/blackfin/mach-common/smp.c +++ b/arch/blackfin/mach-common/smp.c | |||
@@ -276,10 +276,9 @@ void smp_send_reschedule(int cpu) | |||
276 | if (cpu_is_offline(cpu)) | 276 | if (cpu_is_offline(cpu)) |
277 | return; | 277 | return; |
278 | 278 | ||
279 | msg = kmalloc(sizeof(*msg), GFP_ATOMIC); | 279 | msg = kzalloc(sizeof(*msg), GFP_ATOMIC); |
280 | if (!msg) | 280 | if (!msg) |
281 | return; | 281 | return; |
282 | memset(msg, 0, sizeof(msg)); | ||
283 | INIT_LIST_HEAD(&msg->list); | 282 | INIT_LIST_HEAD(&msg->list); |
284 | msg->type = BFIN_IPI_RESCHEDULE; | 283 | msg->type = BFIN_IPI_RESCHEDULE; |
285 | 284 | ||
@@ -305,10 +304,9 @@ void smp_send_stop(void) | |||
305 | if (cpus_empty(callmap)) | 304 | if (cpus_empty(callmap)) |
306 | return; | 305 | return; |
307 | 306 | ||
308 | msg = kmalloc(sizeof(*msg), GFP_ATOMIC); | 307 | msg = kzalloc(sizeof(*msg), GFP_ATOMIC); |
309 | if (!msg) | 308 | if (!msg) |
310 | return; | 309 | return; |
311 | memset(msg, 0, sizeof(msg)); | ||
312 | INIT_LIST_HEAD(&msg->list); | 310 | INIT_LIST_HEAD(&msg->list); |
313 | msg->type = BFIN_IPI_CPU_STOP; | 311 | msg->type = BFIN_IPI_CPU_STOP; |
314 | 312 | ||
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 1aad0d9f507..fd7620f025f 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
@@ -358,7 +358,14 @@ config SGI_IP22 | |||
358 | select SWAP_IO_SPACE | 358 | select SWAP_IO_SPACE |
359 | select SYS_HAS_CPU_R4X00 | 359 | select SYS_HAS_CPU_R4X00 |
360 | select SYS_HAS_CPU_R5000 | 360 | select SYS_HAS_CPU_R5000 |
361 | select SYS_HAS_EARLY_PRINTK | 361 | # |
362 | # Disable EARLY_PRINTK for now since it leads to overwritten prom | ||
363 | # memory during early boot on some machines. | ||
364 | # | ||
365 | # See http://www.linux-mips.org/cgi-bin/mesg.cgi?a=linux-mips&i=20091119164009.GA15038%40deprecation.cyrius.com | ||
366 | # for a more details discussion | ||
367 | # | ||
368 | # select SYS_HAS_EARLY_PRINTK | ||
362 | select SYS_SUPPORTS_32BIT_KERNEL | 369 | select SYS_SUPPORTS_32BIT_KERNEL |
363 | select SYS_SUPPORTS_64BIT_KERNEL | 370 | select SYS_SUPPORTS_64BIT_KERNEL |
364 | select SYS_SUPPORTS_BIG_ENDIAN | 371 | select SYS_SUPPORTS_BIG_ENDIAN |
@@ -410,7 +417,14 @@ config SGI_IP28 | |||
410 | select SGI_HAS_ZILOG | 417 | select SGI_HAS_ZILOG |
411 | select SWAP_IO_SPACE | 418 | select SWAP_IO_SPACE |
412 | select SYS_HAS_CPU_R10000 | 419 | select SYS_HAS_CPU_R10000 |
413 | select SYS_HAS_EARLY_PRINTK | 420 | # |
421 | # Disable EARLY_PRINTK for now since it leads to overwritten prom | ||
422 | # memory during early boot on some machines. | ||
423 | # | ||
424 | # See http://www.linux-mips.org/cgi-bin/mesg.cgi?a=linux-mips&i=20091119164009.GA15038%40deprecation.cyrius.com | ||
425 | # for a more details discussion | ||
426 | # | ||
427 | # select SYS_HAS_EARLY_PRINTK | ||
414 | select SYS_SUPPORTS_64BIT_KERNEL | 428 | select SYS_SUPPORTS_64BIT_KERNEL |
415 | select SYS_SUPPORTS_BIG_ENDIAN | 429 | select SYS_SUPPORTS_BIG_ENDIAN |
416 | help | 430 | help |
@@ -1439,6 +1453,7 @@ choice | |||
1439 | 1453 | ||
1440 | config PAGE_SIZE_4KB | 1454 | config PAGE_SIZE_4KB |
1441 | bool "4kB" | 1455 | bool "4kB" |
1456 | depends on !CPU_LOONGSON2 | ||
1442 | help | 1457 | help |
1443 | This option select the standard 4kB Linux page size. On some | 1458 | This option select the standard 4kB Linux page size. On some |
1444 | R3000-family processors this is the only available page size. Using | 1459 | R3000-family processors this is the only available page size. Using |
@@ -1763,7 +1778,7 @@ config SYS_SUPPORTS_SMARTMIPS | |||
1763 | 1778 | ||
1764 | config ARCH_FLATMEM_ENABLE | 1779 | config ARCH_FLATMEM_ENABLE |
1765 | def_bool y | 1780 | def_bool y |
1766 | depends on !NUMA | 1781 | depends on !NUMA && !CPU_LOONGSON2 |
1767 | 1782 | ||
1768 | config ARCH_DISCONTIGMEM_ENABLE | 1783 | config ARCH_DISCONTIGMEM_ENABLE |
1769 | bool | 1784 | bool |
diff --git a/arch/mips/include/asm/mman.h b/arch/mips/include/asm/mman.h index a2250f390a2..c892bfb3e2c 100644 --- a/arch/mips/include/asm/mman.h +++ b/arch/mips/include/asm/mman.h | |||
@@ -75,6 +75,7 @@ | |||
75 | 75 | ||
76 | #define MADV_MERGEABLE 12 /* KSM may merge identical pages */ | 76 | #define MADV_MERGEABLE 12 /* KSM may merge identical pages */ |
77 | #define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages */ | 77 | #define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages */ |
78 | #define MADV_HWPOISON 100 /* poison a page for testing */ | ||
78 | 79 | ||
79 | /* compatibility flags */ | 80 | /* compatibility flags */ |
80 | #define MAP_FILE 0 | 81 | #define MAP_FILE 0 |
diff --git a/arch/mips/include/asm/system.h b/arch/mips/include/asm/system.h index fcf5f98d90c..83b5509e09e 100644 --- a/arch/mips/include/asm/system.h +++ b/arch/mips/include/asm/system.h | |||
@@ -12,6 +12,7 @@ | |||
12 | #ifndef _ASM_SYSTEM_H | 12 | #ifndef _ASM_SYSTEM_H |
13 | #define _ASM_SYSTEM_H | 13 | #define _ASM_SYSTEM_H |
14 | 14 | ||
15 | #include <linux/kernel.h> | ||
15 | #include <linux/types.h> | 16 | #include <linux/types.h> |
16 | #include <linux/irqflags.h> | 17 | #include <linux/irqflags.h> |
17 | 18 | ||
@@ -193,10 +194,6 @@ extern __u64 __xchg_u64_unsupported_on_32bit_kernels(volatile __u64 * m, __u64 v | |||
193 | #define __xchg_u64 __xchg_u64_unsupported_on_32bit_kernels | 194 | #define __xchg_u64 __xchg_u64_unsupported_on_32bit_kernels |
194 | #endif | 195 | #endif |
195 | 196 | ||
196 | /* This function doesn't exist, so you'll get a linker error | ||
197 | if something tries to do an invalid xchg(). */ | ||
198 | extern void __xchg_called_with_bad_pointer(void); | ||
199 | |||
200 | static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size) | 197 | static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size) |
201 | { | 198 | { |
202 | switch (size) { | 199 | switch (size) { |
@@ -205,11 +202,17 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz | |||
205 | case 8: | 202 | case 8: |
206 | return __xchg_u64(ptr, x); | 203 | return __xchg_u64(ptr, x); |
207 | } | 204 | } |
208 | __xchg_called_with_bad_pointer(); | 205 | |
209 | return x; | 206 | return x; |
210 | } | 207 | } |
211 | 208 | ||
212 | #define xchg(ptr, x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x), (ptr), sizeof(*(ptr)))) | 209 | #define xchg(ptr, x) \ |
210 | ({ \ | ||
211 | BUILD_BUG_ON(sizeof(*(ptr)) & ~0xc); \ | ||
212 | \ | ||
213 | ((__typeof__(*(ptr))) \ | ||
214 | __xchg((unsigned long)(x), (ptr), sizeof(*(ptr)))); \ | ||
215 | }) | ||
213 | 216 | ||
214 | extern void set_handler(unsigned long offset, void *addr, unsigned long len); | 217 | extern void set_handler(unsigned long offset, void *addr, unsigned long len); |
215 | extern void set_uncached_handler(unsigned long offset, void *addr, unsigned long len); | 218 | extern void set_uncached_handler(unsigned long offset, void *addr, unsigned long len); |
diff --git a/arch/parisc/kernel/unwind.c b/arch/parisc/kernel/unwind.c index 69dad5a850a..a36799e8569 100644 --- a/arch/parisc/kernel/unwind.c +++ b/arch/parisc/kernel/unwind.c | |||
@@ -28,7 +28,7 @@ | |||
28 | #define dbg(x...) | 28 | #define dbg(x...) |
29 | #endif | 29 | #endif |
30 | 30 | ||
31 | #define KERNEL_START (KERNEL_BINARY_TEXT_START - 0x1000) | 31 | #define KERNEL_START (KERNEL_BINARY_TEXT_START) |
32 | 32 | ||
33 | extern struct unwind_table_entry __start___unwind[]; | 33 | extern struct unwind_table_entry __start___unwind[]; |
34 | extern struct unwind_table_entry __stop___unwind[]; | 34 | extern struct unwind_table_entry __stop___unwind[]; |
diff --git a/arch/parisc/kernel/vmlinux.lds.S b/arch/parisc/kernel/vmlinux.lds.S index fda4baa059b..9dab4a4e09f 100644 --- a/arch/parisc/kernel/vmlinux.lds.S +++ b/arch/parisc/kernel/vmlinux.lds.S | |||
@@ -78,9 +78,6 @@ SECTIONS | |||
78 | */ | 78 | */ |
79 | . = ALIGN(PAGE_SIZE); | 79 | . = ALIGN(PAGE_SIZE); |
80 | data_start = .; | 80 | data_start = .; |
81 | EXCEPTION_TABLE(16) | ||
82 | |||
83 | NOTES | ||
84 | 81 | ||
85 | /* unwind info */ | 82 | /* unwind info */ |
86 | .PARISC.unwind : { | 83 | .PARISC.unwind : { |
@@ -89,6 +86,9 @@ SECTIONS | |||
89 | __stop___unwind = .; | 86 | __stop___unwind = .; |
90 | } | 87 | } |
91 | 88 | ||
89 | EXCEPTION_TABLE(16) | ||
90 | NOTES | ||
91 | |||
92 | /* Data */ | 92 | /* Data */ |
93 | RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE) | 93 | RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE) |
94 | 94 | ||
diff --git a/arch/powerpc/include/asm/kmap_types.h b/arch/powerpc/include/asm/kmap_types.h index b6bac6f61c1..916369575c9 100644 --- a/arch/powerpc/include/asm/kmap_types.h +++ b/arch/powerpc/include/asm/kmap_types.h | |||
@@ -29,5 +29,16 @@ enum km_type { | |||
29 | KM_TYPE_NR | 29 | KM_TYPE_NR |
30 | }; | 30 | }; |
31 | 31 | ||
32 | /* | ||
33 | * This is a temporary build fix that (so they say on lkml....) should no longer | ||
34 | * be required after 2.6.33, because of changes planned to the kmap code. | ||
35 | * Let's try to remove this cruft then. | ||
36 | */ | ||
37 | #ifdef CONFIG_DEBUG_HIGHMEM | ||
38 | #define KM_NMI (-1) | ||
39 | #define KM_NMI_PTE (-1) | ||
40 | #define KM_IRQ_PTE (-1) | ||
41 | #endif | ||
42 | |||
32 | #endif /* __KERNEL__ */ | 43 | #endif /* __KERNEL__ */ |
33 | #endif /* _ASM_POWERPC_KMAP_TYPES_H */ | 44 | #endif /* _ASM_POWERPC_KMAP_TYPES_H */ |
diff --git a/arch/sparc/mm/init_64.h b/arch/sparc/mm/init_64.h index c2f772dbd55..77d1b313e34 100644 --- a/arch/sparc/mm/init_64.h +++ b/arch/sparc/mm/init_64.h | |||
@@ -45,7 +45,7 @@ extern void free_initmem(void); | |||
45 | #define VMEMMAP_ALIGN(x) (((x)+VMEMMAP_CHUNK-1UL)&VMEMMAP_CHUNK_MASK) | 45 | #define VMEMMAP_ALIGN(x) (((x)+VMEMMAP_CHUNK-1UL)&VMEMMAP_CHUNK_MASK) |
46 | 46 | ||
47 | #define VMEMMAP_SIZE ((((1UL << MAX_PHYSADDR_BITS) >> PAGE_SHIFT) * \ | 47 | #define VMEMMAP_SIZE ((((1UL << MAX_PHYSADDR_BITS) >> PAGE_SHIFT) * \ |
48 | sizeof(struct page *)) >> VMEMMAP_CHUNK_SHIFT) | 48 | sizeof(struct page)) >> VMEMMAP_CHUNK_SHIFT) |
49 | extern unsigned long vmemmap_table[VMEMMAP_SIZE]; | 49 | extern unsigned long vmemmap_table[VMEMMAP_SIZE]; |
50 | #endif | 50 | #endif |
51 | 51 | ||
diff --git a/arch/x86/kernel/acpi/processor.c b/arch/x86/kernel/acpi/processor.c index d296f4a195c..d85d1b2432b 100644 --- a/arch/x86/kernel/acpi/processor.c +++ b/arch/x86/kernel/acpi/processor.c | |||
@@ -79,7 +79,8 @@ void arch_acpi_processor_init_pdc(struct acpi_processor *pr) | |||
79 | struct cpuinfo_x86 *c = &cpu_data(pr->id); | 79 | struct cpuinfo_x86 *c = &cpu_data(pr->id); |
80 | 80 | ||
81 | pr->pdc = NULL; | 81 | pr->pdc = NULL; |
82 | if (c->x86_vendor == X86_VENDOR_INTEL) | 82 | if (c->x86_vendor == X86_VENDOR_INTEL || |
83 | c->x86_vendor == X86_VENDOR_CENTAUR) | ||
83 | init_intel_pdc(pr, c); | 84 | init_intel_pdc(pr, c); |
84 | 85 | ||
85 | return; | 86 | return; |