x86/irq: Hide 'HYP:' line in /proc/interrupts when not on Xen/Hyper-V
authorVitaly Kuznetsov <vkuznets@redhat.com>
Tue, 7 Jul 2015 16:26:13 +0000 (18:26 +0200)
committerIngo Molnar <mingo@kernel.org>
Wed, 8 Jul 2015 09:18:34 +0000 (11:18 +0200)
Hypervisor callback interrupts are only accounted on
Xen/Hyper-V. There is no point in having always-zero HYP: line
on other hypervisors or bare metal. Print the line only if
HYPERVISOR_CALLBACK_VECTOR was allocated.

Reported-by: Radim Krčmář <rkrcmar@redhat.com>
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Cc: Andrew Jones <drjones@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1436286373-11908-1-git-send-email-vkuznets@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/kernel/irq.c

index 88b366487b0e44b613e83d412febfad74381ca92..5b537479de8370f3e0bed4bbe5af3703056c0931 100644 (file)
@@ -139,10 +139,13 @@ int arch_show_interrupts(struct seq_file *p, int prec)
        seq_puts(p, "  Machine check polls\n");
 #endif
 #if IS_ENABLED(CONFIG_HYPERV) || defined(CONFIG_XEN)
-       seq_printf(p, "%*s: ", prec, "HYP");
-       for_each_online_cpu(j)
-               seq_printf(p, "%10u ", irq_stats(j)->irq_hv_callback_count);
-       seq_puts(p, "  Hypervisor callback interrupts\n");
+       if (test_bit(HYPERVISOR_CALLBACK_VECTOR, used_vectors)) {
+               seq_printf(p, "%*s: ", prec, "HYP");
+               for_each_online_cpu(j)
+                       seq_printf(p, "%10u ",
+                                  irq_stats(j)->irq_hv_callback_count);
+               seq_puts(p, "  Hypervisor callback interrupts\n");
+       }
 #endif
        seq_printf(p, "%*s: %10u\n", prec, "ERR", atomic_read(&irq_err_count));
 #if defined(CONFIG_X86_IO_APIC)