x86/entry: Convert reschedule interrupt to IDTENTRY_SYSVEC_SIMPLE
The scheduler IPI does not need the full interrupt entry handling logic when the entry is from kernel mode. Use IDTENTRY_SYSVEC_SIMPLE and spare all the overhead. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@kernel.org> Acked-by: Andy Lutomirski <luto@kernel.org> Link: https://lore.kernel.org/r/20200521202119.835425642@linutronix.de
This commit is contained in:
@@ -220,26 +220,15 @@ static void native_stop_other_cpus(int wait)
|
||||
|
||||
/*
|
||||
* Reschedule call back. KVM uses this interrupt to force a cpu out of
|
||||
* guest mode
|
||||
* guest mode.
|
||||
*/
|
||||
__visible void __irq_entry smp_reschedule_interrupt(struct pt_regs *regs)
|
||||
DEFINE_IDTENTRY_SYSVEC_SIMPLE(sysvec_reschedule_ipi)
|
||||
{
|
||||
ack_APIC_irq();
|
||||
trace_reschedule_entry(RESCHEDULE_VECTOR);
|
||||
inc_irq_stat(irq_resched_count);
|
||||
|
||||
if (trace_resched_ipi_enabled()) {
|
||||
/*
|
||||
* scheduler_ipi() might call irq_enter() as well, but
|
||||
* nested calls are fine.
|
||||
*/
|
||||
irq_enter();
|
||||
trace_reschedule_entry(RESCHEDULE_VECTOR);
|
||||
scheduler_ipi();
|
||||
trace_reschedule_exit(RESCHEDULE_VECTOR);
|
||||
irq_exit();
|
||||
return;
|
||||
}
|
||||
scheduler_ipi();
|
||||
trace_reschedule_exit(RESCHEDULE_VECTOR);
|
||||
}
|
||||
|
||||
DEFINE_IDTENTRY_SYSVEC(sysvec_call_function)
|
||||
|
Reference in New Issue
Block a user