aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/irq.c
diff options
context:
space:
mode:
authorMichael Kelley <mhkelley@outlook.com>2018-03-05 00:17:18 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-03-06 12:57:17 -0500
commit248e742a396e7f00b283f1c56e14b1bef6e3ec56 (patch)
tree7c4976f72e563b771ac6b53094cab1e91fe3849c /arch/x86/kernel/irq.c
parentce767047b1b731a1899a528338644f2bfdab8b36 (diff)
Drivers: hv: vmbus: Implement Direct Mode for stimer0
The 2016 version of Hyper-V offers the option to operate the guest VM per-vcpu stimer's in Direct Mode, which means the timer interupts on its own vector rather than queueing a VMbus message. Direct Mode reduces timer processing overhead in both the hypervisor and the guest, and avoids having timer interrupts pollute the VMbus interrupt stream for the synthetic NIC and storage. This patch enables Direct Mode by default on stimer0 when running on a version of Hyper-V that supports it. In prep for coming support of Hyper-V on ARM64, the arch independent portion of the code contains calls to routines that will be populated on ARM64 but are not needed and do nothing on x86. Signed-off-by: Michael Kelley <mikelley@microsoft.com> Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch/x86/kernel/irq.c')
-rw-r--r--arch/x86/kernel/irq.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
index 45fb4d2565f8..328d027d829d 100644
--- a/arch/x86/kernel/irq.c
+++ b/arch/x86/kernel/irq.c
@@ -150,6 +150,13 @@ int arch_show_interrupts(struct seq_file *p, int prec)
150 irq_stats(j)->irq_hv_reenlightenment_count); 150 irq_stats(j)->irq_hv_reenlightenment_count);
151 seq_puts(p, " Hyper-V reenlightenment interrupts\n"); 151 seq_puts(p, " Hyper-V reenlightenment interrupts\n");
152 } 152 }
153 if (test_bit(HYPERV_STIMER0_VECTOR, system_vectors)) {
154 seq_printf(p, "%*s: ", prec, "HVS");
155 for_each_online_cpu(j)
156 seq_printf(p, "%10u ",
157 irq_stats(j)->hyperv_stimer0_count);
158 seq_puts(p, " Hyper-V stimer0 interrupts\n");
159 }
153#endif 160#endif
154 seq_printf(p, "%*s: %10u\n", prec, "ERR", atomic_read(&irq_err_count)); 161 seq_printf(p, "%*s: %10u\n", prec, "ERR", atomic_read(&irq_err_count));
155#if defined(CONFIG_X86_IO_APIC) 162#if defined(CONFIG_X86_IO_APIC)