diff options
author | Kevin Tian <kevin.tian@intel.com> | 2011-08-31 15:18:23 +0100 |
---|---|---|
committer | Kevin Tian <kevin.tian@intel.com> | 2011-08-31 15:18:23 +0100 |
commit | a81d0ee933c35323f32269dad37977934b6cbb28 (patch) | |
tree | 1202c69e945e73341870451b43622fa35408763a /xen/arch/x86/smp.c | |
parent | 2f4c78e40fd1a9a6d4039dff42ecb37ba8087f99 (diff) | |
download | xen-a81d0ee933c35323f32269dad37977934b6cbb28.tar.gz xen-a81d0ee933c35323f32269dad37977934b6cbb28.tar.bz2 xen-a81d0ee933c35323f32269dad37977934b6cbb28.zip |
x86: add irq count for IPIs
such count is useful to assist decision make in cpuidle governor,
while w/o this patch only device interrupts through do_IRQ is
currently counted.
Signed-off-by: Kevin Tian <kevin.tian@intel.com>
Diffstat (limited to 'xen/arch/x86/smp.c')
-rw-r--r-- | xen/arch/x86/smp.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/xen/arch/x86/smp.c b/xen/arch/x86/smp.c index 2f527079cd..3edebf3df1 100644 --- a/xen/arch/x86/smp.c +++ b/xen/arch/x86/smp.c @@ -221,6 +221,7 @@ fastcall void smp_invalidate_interrupt(void) { ack_APIC_irq(); perfc_incr(ipis); + this_cpu(irq_count)++; irq_enter(); if ( !__sync_local_execstate() || (flush_flags & (FLUSH_TLB_GLOBAL | FLUSH_CACHE)) ) @@ -385,6 +386,7 @@ fastcall void smp_event_check_interrupt(struct cpu_user_regs *regs) struct cpu_user_regs *old_regs = set_irq_regs(regs); ack_APIC_irq(); perfc_incr(ipis); + this_cpu(irq_count)++; set_irq_regs(old_regs); } @@ -421,6 +423,7 @@ fastcall void smp_call_function_interrupt(struct cpu_user_regs *regs) ack_APIC_irq(); perfc_incr(ipis); + this_cpu(irq_count)++; __smp_call_function_interrupt(); set_irq_regs(old_regs); } |