struct msi_msg msg;
u32 addr;
+ /* IRQ migration across domain is not supported yet */
+ cpus_and(cpu_mask, cpu_mask, irq_to_domain(irq));
+ if (cpus_empty(cpu_mask))
+ return;
+
read_msi_msg(irq, &msg);
addr = msg.address_lo;
{
struct msi_msg msg;
unsigned long dest_phys_id;
- unsigned int irq, vector;
+ int irq, vector;
+ cpumask_t mask;
irq = create_irq();
if (irq < 0)
return irq;
set_irq_msi(irq, desc);
- dest_phys_id = cpu_physical_id(first_cpu(cpu_online_map));
- vector = irq;
+ cpus_and(mask, irq_to_domain(irq), cpu_online_map);
+ dest_phys_id = cpu_physical_id(first_cpu(mask));
+ vector = irq_to_vector(irq);
msg.address_hi = 0;
msg.address_lo =
static int ia64_msi_retrigger_irq(unsigned int irq)
{
- unsigned int vector = irq;
+ unsigned int vector = irq_to_vector(irq);
ia64_resend_irq(vector);
return 1;