diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-11-30 19:44:18 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-11-30 19:44:18 -0500 |
commit | 03cfdb86ac66677dbe76accae3f22c374a15b814 (patch) | |
tree | 86c2f6cf5afbd85fdc183fcadab12bf142e9659c /arch/powerpc/sysdev/mpic.c | |
parent | 4ec8f077e4dd51f713984669781e7b568b8c41e2 (diff) | |
parent | ab598b6680f1e74c267d1547ee352f3e1e530f89 (diff) |
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc:
powerpc: Fix system calls on Cell entered with XER.SO=1
powerpc/cell: Fix GDB watchpoints, again
powerpc/mpic: Don't reset affinity for secondary MPIC on boot
powerpc/cell/axon-msi: Retry on missing interrupt
powerpc: Fix boot freeze on machine with empty memory node
powerpc: Fix IRQ assignment for some PCIe devices
powerpc/spufs: Fix spinning in spufs_ps_fault on signal
powerpc/mpc832x_rdb: fix swapped ethernet ids
powerpc: Use generic PHY driver for Marvell 88E1111 PHY on GE Fanuc SBC610
powerpc/85xx: L2 cache size wrong in 8572DS dts
powerpc/virtex: Update defconfigs
powerpc/52xx: update defconfigs
xsysace: Fix driver to use resource_size_t instead of unsigned long
powerpc/virtex: fix various format/casting printk mismatches
powerpc/mpc5200: fix bestcomm Kconfig dependencies
powerpc/44x: Fix 460EX/460GT machine check handling
powerpc/40x: Limit allocable DRAM during early mapping
Diffstat (limited to 'arch/powerpc/sysdev/mpic.c')
-rw-r--r-- | arch/powerpc/sysdev/mpic.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c index f6299cca7814..b24e1d085557 100644 --- a/arch/powerpc/sysdev/mpic.c +++ b/arch/powerpc/sysdev/mpic.c | |||
@@ -1271,6 +1271,7 @@ void __init mpic_set_default_senses(struct mpic *mpic, u8 *senses, int count) | |||
1271 | void __init mpic_init(struct mpic *mpic) | 1271 | void __init mpic_init(struct mpic *mpic) |
1272 | { | 1272 | { |
1273 | int i; | 1273 | int i; |
1274 | int cpu; | ||
1274 | 1275 | ||
1275 | BUG_ON(mpic->num_sources == 0); | 1276 | BUG_ON(mpic->num_sources == 0); |
1276 | 1277 | ||
@@ -1313,6 +1314,11 @@ void __init mpic_init(struct mpic *mpic) | |||
1313 | 1314 | ||
1314 | mpic_pasemi_msi_init(mpic); | 1315 | mpic_pasemi_msi_init(mpic); |
1315 | 1316 | ||
1317 | if (mpic->flags & MPIC_PRIMARY) | ||
1318 | cpu = hard_smp_processor_id(); | ||
1319 | else | ||
1320 | cpu = 0; | ||
1321 | |||
1316 | for (i = 0; i < mpic->num_sources; i++) { | 1322 | for (i = 0; i < mpic->num_sources; i++) { |
1317 | /* start with vector = source number, and masked */ | 1323 | /* start with vector = source number, and masked */ |
1318 | u32 vecpri = MPIC_VECPRI_MASK | i | | 1324 | u32 vecpri = MPIC_VECPRI_MASK | i | |
@@ -1323,8 +1329,7 @@ void __init mpic_init(struct mpic *mpic) | |||
1323 | continue; | 1329 | continue; |
1324 | /* init hw */ | 1330 | /* init hw */ |
1325 | mpic_irq_write(i, MPIC_INFO(IRQ_VECTOR_PRI), vecpri); | 1331 | mpic_irq_write(i, MPIC_INFO(IRQ_VECTOR_PRI), vecpri); |
1326 | mpic_irq_write(i, MPIC_INFO(IRQ_DESTINATION), | 1332 | mpic_irq_write(i, MPIC_INFO(IRQ_DESTINATION), 1 << cpu); |
1327 | 1 << hard_smp_processor_id()); | ||
1328 | } | 1333 | } |
1329 | 1334 | ||
1330 | /* Init spurious vector */ | 1335 | /* Init spurious vector */ |