cpu_data->stats[JAILHOUSE_CPU_STAT_VMEXITS_VIRQ]++;
- irqchip_set_pending(cpu_data, irqn, true);
+ irqchip_set_pending(cpu_data, irqn);
return false;
}
if (sgi->routing_mode == 0 && !is_target)
continue;
- irqchip_set_pending(per_cpu(cpu), sgi->id, false);
+ irqchip_set_pending(per_cpu(cpu), sgi->id);
sgi->targets |= (1 << cpu);
}
void irqchip_eoi_irq(u32 irqn, bool deactivate);
void irqchip_inject_pending(struct per_cpu *cpu_data);
-void irqchip_set_pending(struct per_cpu *cpu_data, u16 irq_id, bool try_inject);
+void irqchip_set_pending(struct per_cpu *cpu_data, u16 irq_id);
bool spi_in_cell(struct cell *cell, unsigned int spi);
return spi_mask & (1 << (spi & 31));
}
-void irqchip_set_pending(struct per_cpu *cpu_data, u16 irq_id, bool try_inject)
+void irqchip_set_pending(struct per_cpu *cpu_data, u16 irq_id)
{
+ bool local_injection = (this_cpu_data() == cpu_data);
unsigned int new_tail;
- if (try_inject && irqchip.inject_irq(cpu_data, irq_id) != -EBUSY)
+ if (local_injection && irqchip.inject_irq(cpu_data, irq_id) != -EBUSY)
return;
spin_lock(&cpu_data->pending_irqs_lock);