|
@@ -1271,6 +1271,7 @@ void __init mpic_set_default_senses(struct mpic *mpic, u8 *senses, int count)
|
|
|
void __init mpic_init(struct mpic *mpic)
|
|
|
{
|
|
|
int i;
|
|
|
+ int cpu;
|
|
|
|
|
|
BUG_ON(mpic->num_sources == 0);
|
|
|
|
|
@@ -1313,6 +1314,11 @@ void __init mpic_init(struct mpic *mpic)
|
|
|
|
|
|
mpic_pasemi_msi_init(mpic);
|
|
|
|
|
|
+ if (mpic->flags & MPIC_PRIMARY)
|
|
|
+ cpu = hard_smp_processor_id();
|
|
|
+ else
|
|
|
+ cpu = 0;
|
|
|
+
|
|
|
for (i = 0; i < mpic->num_sources; i++) {
|
|
|
/* start with vector = source number, and masked */
|
|
|
u32 vecpri = MPIC_VECPRI_MASK | i |
|
|
@@ -1323,8 +1329,7 @@ void __init mpic_init(struct mpic *mpic)
|
|
|
continue;
|
|
|
/* init hw */
|
|
|
mpic_irq_write(i, MPIC_INFO(IRQ_VECTOR_PRI), vecpri);
|
|
|
- mpic_irq_write(i, MPIC_INFO(IRQ_DESTINATION),
|
|
|
- 1 << hard_smp_processor_id());
|
|
|
+ mpic_irq_write(i, MPIC_INFO(IRQ_DESTINATION), 1 << cpu);
|
|
|
}
|
|
|
|
|
|
/* Init spurious vector */
|