@ -265,23 +265,30 @@ void smp_reschedule_interrupt(struct pt_regs *regs)
*/
}
void smp_trace_reschedule_interrupt ( struct pt_regs * regs )
static inline void smp_entering_irq ( void )
{
ack_APIC_irq ( ) ;
irq_enter ( ) ;
}
void smp_trace_reschedule_interrupt ( struct pt_regs * regs )
{
/*
* Need to call irq_enter ( ) before calling the trace point .
* __smp_reschedule_interrupt ( ) calls irq_enter / exit ( ) too ( in
* scheduler_ipi ( ) . This is OK , since those functions are allowed
* to nest .
*/
smp_entering_irq ( ) ;
trace_reschedule_entry ( RESCHEDULE_VECTOR ) ;
__smp_reschedule_interrupt ( ) ;
trace_reschedule_exit ( RESCHEDULE_VECTOR ) ;
exiting_irq ( ) ;
/*
* KVM uses this interrupt to force a cpu out of guest mode
*/
}
static inline void call_function_entering_irq ( void )
{
ack_APIC_irq ( ) ;
irq_enter ( ) ;
}
static inline void __smp_call_function_interrupt ( void )
{
generic_smp_call_function_interrupt ( ) ;
@ -290,14 +297,14 @@ static inline void __smp_call_function_interrupt(void)
void smp_call_function_interrupt ( struct pt_regs * regs )
{
call_function _entering_irq( ) ;
smp _entering_irq( ) ;
__smp_call_function_interrupt ( ) ;
exiting_irq ( ) ;
}
void smp_trace_call_function_interrupt ( struct pt_regs * regs )
{
call_function _entering_irq( ) ;
smp _entering_irq( ) ;
trace_call_function_entry ( CALL_FUNCTION_VECTOR ) ;
__smp_call_function_interrupt ( ) ;
trace_call_function_exit ( CALL_FUNCTION_VECTOR ) ;
@ -312,14 +319,14 @@ static inline void __smp_call_function_single_interrupt(void)
void smp_call_function_single_interrupt ( struct pt_regs * regs )
{
call_function _entering_irq( ) ;
smp _entering_irq( ) ;
__smp_call_function_single_interrupt ( ) ;
exiting_irq ( ) ;
}
void smp_trace_call_function_single_interrupt ( struct pt_regs * regs )
{
call_function _entering_irq( ) ;
smp _entering_irq( ) ;
trace_call_function_single_entry ( CALL_FUNCTION_SINGLE_VECTOR ) ;
__smp_call_function_single_interrupt ( ) ;
trace_call_function_single_exit ( CALL_FUNCTION_SINGLE_VECTOR ) ;