diff options
author | Paul Mackerras <paulus@samba.org> | 2008-04-14 07:11:02 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2008-04-14 07:11:02 -0400 |
commit | ac7c5353b189e10cf5dd27399f64f7b013abffc6 (patch) | |
tree | 8222d92b774c256d6ec4399c716d76b3f05ddc4b /arch/powerpc/kernel | |
parent | a8f75ea70c58546205fb7673be41455b9da5d9a7 (diff) | |
parent | 120dd64cacd4fb796bca0acba3665553f1d9ecaa (diff) |
Merge branch 'linux-2.6'
Diffstat (limited to 'arch/powerpc/kernel')
-rw-r--r-- | arch/powerpc/kernel/head_64.S | 13 | ||||
-rw-r--r-- | arch/powerpc/kernel/irq.c | 1 | ||||
-rw-r--r-- | arch/powerpc/kernel/process.c | 10 | ||||
-rw-r--r-- | arch/powerpc/kernel/rtas_flash.c | 2 |
4 files changed, 13 insertions, 13 deletions
diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S index 11b4f6d9ffce..d3aee08e6814 100644 --- a/arch/powerpc/kernel/head_64.S +++ b/arch/powerpc/kernel/head_64.S | |||
@@ -1387,12 +1387,14 @@ __secondary_start: | |||
1387 | #ifdef CONFIG_PPC_ISERIES | 1387 | #ifdef CONFIG_PPC_ISERIES |
1388 | BEGIN_FW_FTR_SECTION | 1388 | BEGIN_FW_FTR_SECTION |
1389 | ori r4,r4,MSR_EE | 1389 | ori r4,r4,MSR_EE |
1390 | li r8,1 | ||
1391 | stb r8,PACAHARDIRQEN(r13) | ||
1390 | END_FW_FTR_SECTION_IFSET(FW_FEATURE_ISERIES) | 1392 | END_FW_FTR_SECTION_IFSET(FW_FEATURE_ISERIES) |
1391 | #endif | 1393 | #endif |
1392 | BEGIN_FW_FTR_SECTION | 1394 | BEGIN_FW_FTR_SECTION |
1393 | stb r7,PACASOFTIRQEN(r13) | ||
1394 | stb r7,PACAHARDIRQEN(r13) | 1395 | stb r7,PACAHARDIRQEN(r13) |
1395 | END_FW_FTR_SECTION_IFCLR(FW_FEATURE_ISERIES) | 1396 | END_FW_FTR_SECTION_IFCLR(FW_FEATURE_ISERIES) |
1397 | stb r7,PACASOFTIRQEN(r13) | ||
1396 | 1398 | ||
1397 | mtspr SPRN_SRR0,r3 | 1399 | mtspr SPRN_SRR0,r3 |
1398 | mtspr SPRN_SRR1,r4 | 1400 | mtspr SPRN_SRR1,r4 |
@@ -1520,15 +1522,14 @@ _INIT_GLOBAL(start_here_common) | |||
1520 | #ifdef CONFIG_PPC_ISERIES | 1522 | #ifdef CONFIG_PPC_ISERIES |
1521 | BEGIN_FW_FTR_SECTION | 1523 | BEGIN_FW_FTR_SECTION |
1522 | mfmsr r5 | 1524 | mfmsr r5 |
1523 | ori r5,r5,MSR_EE /* Hard Enabled */ | 1525 | ori r5,r5,MSR_EE /* Hard Enabled on iSeries*/ |
1524 | mtmsrd r5 | 1526 | mtmsrd r5 |
1527 | li r5,1 | ||
1525 | END_FW_FTR_SECTION_IFSET(FW_FEATURE_ISERIES) | 1528 | END_FW_FTR_SECTION_IFSET(FW_FEATURE_ISERIES) |
1526 | #endif | 1529 | #endif |
1527 | BEGIN_FW_FTR_SECTION | 1530 | stb r5,PACAHARDIRQEN(r13) /* Hard Disabled on others */ |
1528 | stb r5,PACAHARDIRQEN(r13) | ||
1529 | END_FW_FTR_SECTION_IFCLR(FW_FEATURE_ISERIES) | ||
1530 | 1531 | ||
1531 | bl .start_kernel | 1532 | bl .start_kernel |
1532 | 1533 | ||
1533 | /* Not reached */ | 1534 | /* Not reached */ |
1534 | BUG_OPCODE | 1535 | BUG_OPCODE |
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c index b0e5deb4274f..292163f5b39a 100644 --- a/arch/powerpc/kernel/irq.c +++ b/arch/powerpc/kernel/irq.c | |||
@@ -143,7 +143,6 @@ void local_irq_restore(unsigned long en) | |||
143 | */ | 143 | */ |
144 | if (local_paca->lppaca_ptr->int_dword.any_int) | 144 | if (local_paca->lppaca_ptr->int_dword.any_int) |
145 | iseries_handle_interrupts(); | 145 | iseries_handle_interrupts(); |
146 | return; | ||
147 | } | 146 | } |
148 | 147 | ||
149 | /* | 148 | /* |
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 8d506d86e2df..a27910207c7e 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c | |||
@@ -241,8 +241,12 @@ void discard_lazy_cpu_state(void) | |||
241 | } | 241 | } |
242 | #endif /* CONFIG_SMP */ | 242 | #endif /* CONFIG_SMP */ |
243 | 243 | ||
244 | static DEFINE_PER_CPU(unsigned long, current_dabr); | ||
245 | |||
244 | int set_dabr(unsigned long dabr) | 246 | int set_dabr(unsigned long dabr) |
245 | { | 247 | { |
248 | __get_cpu_var(current_dabr) = dabr; | ||
249 | |||
246 | #ifdef CONFIG_PPC_MERGE /* XXX for now */ | 250 | #ifdef CONFIG_PPC_MERGE /* XXX for now */ |
247 | if (ppc_md.set_dabr) | 251 | if (ppc_md.set_dabr) |
248 | return ppc_md.set_dabr(dabr); | 252 | return ppc_md.set_dabr(dabr); |
@@ -259,8 +263,6 @@ int set_dabr(unsigned long dabr) | |||
259 | DEFINE_PER_CPU(struct cpu_usage, cpu_usage_array); | 263 | DEFINE_PER_CPU(struct cpu_usage, cpu_usage_array); |
260 | #endif | 264 | #endif |
261 | 265 | ||
262 | static DEFINE_PER_CPU(unsigned long, current_dabr); | ||
263 | |||
264 | struct task_struct *__switch_to(struct task_struct *prev, | 266 | struct task_struct *__switch_to(struct task_struct *prev, |
265 | struct task_struct *new) | 267 | struct task_struct *new) |
266 | { | 268 | { |
@@ -325,10 +327,8 @@ struct task_struct *__switch_to(struct task_struct *prev, | |||
325 | 327 | ||
326 | #endif /* CONFIG_SMP */ | 328 | #endif /* CONFIG_SMP */ |
327 | 329 | ||
328 | if (unlikely(__get_cpu_var(current_dabr) != new->thread.dabr)) { | 330 | if (unlikely(__get_cpu_var(current_dabr) != new->thread.dabr)) |
329 | set_dabr(new->thread.dabr); | 331 | set_dabr(new->thread.dabr); |
330 | __get_cpu_var(current_dabr) = new->thread.dabr; | ||
331 | } | ||
332 | 332 | ||
333 | new_thread = &new->thread; | 333 | new_thread = &new->thread; |
334 | old_thread = ¤t->thread; | 334 | old_thread = ¤t->thread; |
diff --git a/arch/powerpc/kernel/rtas_flash.c b/arch/powerpc/kernel/rtas_flash.c index e1756e112344..627f126d1848 100644 --- a/arch/powerpc/kernel/rtas_flash.c +++ b/arch/powerpc/kernel/rtas_flash.c | |||
@@ -356,7 +356,7 @@ static int rtas_excl_open(struct inode *inode, struct file *file) | |||
356 | 356 | ||
357 | /* Enforce exclusive open with use count of PDE */ | 357 | /* Enforce exclusive open with use count of PDE */ |
358 | spin_lock(&flash_file_open_lock); | 358 | spin_lock(&flash_file_open_lock); |
359 | if (atomic_read(&dp->count) > 1) { | 359 | if (atomic_read(&dp->count) > 2) { |
360 | spin_unlock(&flash_file_open_lock); | 360 | spin_unlock(&flash_file_open_lock); |
361 | return -EBUSY; | 361 | return -EBUSY; |
362 | } | 362 | } |