{
struct irq_desc *desc = irq_to_desc(irq);
struct IO_APIC_route_entry entry;
+ cpumask_t mask;
unsigned long flags;
int vector;
entry.delivery_mode = INT_DELIVERY_MODE;
entry.dest_mode = INT_DEST_MODE;
- SET_DEST(entry.dest.dest32, entry.dest.logical.logical_dest,
- cpu_mask_to_apicid(TARGET_CPUS));
entry.trigger = edge_level;
entry.polarity = active_high_low;
entry.mask = 1;
return vector;
entry.vector = vector;
+ cpumask_and(&mask, desc->arch.cpu_mask, TARGET_CPUS);
+ SET_DEST(entry.dest.dest32, entry.dest.logical.logical_dest,
+ cpu_mask_to_apicid(&mask));
+
apic_printk(APIC_DEBUG, KERN_DEBUG "IOAPIC[%d]: Set PCI routing entry "
"(%d-%d -> %#x -> IRQ %d Mode:%i Active:%i)\n", ioapic,
mp_ioapics[ioapic].mpc_apicid, pin, entry.vector, irq,
vector = alloc_hipriority_vector();
per_cpu(vector_irq, cpu)[vector] = irq;
irq_to_desc(irq)->arch.vector = vector;
- cpumask_copy(irq_to_desc(irq)->arch.cpu_mask, &cpu_online_map);
+ cpumask_setall(irq_to_desc(irq)->arch.cpu_mask);
}
/* Direct IPI vectors. */