diff mbox

[v4,5/7] x86/irq: Count Hyper-V reenlightenment interrupts

Message ID 20180124132337.30138-6-vkuznets@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Vitaly Kuznetsov Jan. 24, 2018, 1:23 p.m. UTC
Hyper-V reenlightenment interrupts arrive when the VM is migrated, we're
not supposed to see many of them. However, it may be important to know
that the event has happened in case we have L2 nested guests.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
---
 arch/x86/hyperv/hv_init.c      | 2 ++
 arch/x86/include/asm/hardirq.h | 3 +++
 arch/x86/kernel/irq.c          | 9 +++++++++
 3 files changed, 14 insertions(+)

Comments

Radim Krčmář Jan. 24, 2018, 2:58 p.m. UTC | #1
2018-01-24 14:23+0100, Vitaly Kuznetsov:
> Hyper-V reenlightenment interrupts arrive when the VM is migrated, we're
> not supposed to see many of them. However, it may be important to know
> that the event has happened in case we have L2 nested guests.
> 
> Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
> Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
> ---

Thomas,

I think the expectation is that this series will go through the KVM
tree.  Would you prefer a topic branch?

Thanks.
Thomas Gleixner Jan. 29, 2018, 9:48 p.m. UTC | #2
On Wed, 24 Jan 2018, Radim Krčmář wrote:

> 2018-01-24 14:23+0100, Vitaly Kuznetsov:
> > Hyper-V reenlightenment interrupts arrive when the VM is migrated, we're
> > not supposed to see many of them. However, it may be important to know
> > that the event has happened in case we have L2 nested guests.
> > 
> > Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
> > Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
> > ---
> 
> Thomas,
> 
> I think the expectation is that this series will go through the KVM
> tree.  Would you prefer a topic branch?

Is there any dependency outside of plain 4.15? If not, I'll put it into
x86/hyperv and let KVM folks pull it over.

Thanks,

	tglx
Radim Krčmář Jan. 30, 2018, 2:02 p.m. UTC | #3
2018-01-29 22:48+0100, Thomas Gleixner:
> On Wed, 24 Jan 2018, Radim Krčmář wrote:
> > 2018-01-24 14:23+0100, Vitaly Kuznetsov:
> > > Hyper-V reenlightenment interrupts arrive when the VM is migrated, we're
> > > not supposed to see many of them. However, it may be important to know
> > > that the event has happened in case we have L2 nested guests.
> > > 
> > > Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
> > > Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
> > > ---
> > 
> > Thomas,
> > 
> > I think the expectation is that this series will go through the KVM
> > tree.  Would you prefer a topic branch?
> 
> Is there any dependency outside of plain 4.15? If not, I'll put it into
> x86/hyperv and let KVM folks pull it over.

There isn't;  we'll wait for x86/hyperv, thanks.
Thomas Gleixner Jan. 30, 2018, 2:35 p.m. UTC | #4
On Tue, 30 Jan 2018, Radim Krčmář wrote:
> 2018-01-29 22:48+0100, Thomas Gleixner:
> > On Wed, 24 Jan 2018, Radim Krčmář wrote:
> > > 2018-01-24 14:23+0100, Vitaly Kuznetsov:
> > > > Hyper-V reenlightenment interrupts arrive when the VM is migrated, we're
> > > > not supposed to see many of them. However, it may be important to know
> > > > that the event has happened in case we have L2 nested guests.
> > > > 
> > > > Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
> > > > Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
> > > > ---
> > > 
> > > Thomas,
> > > 
> > > I think the expectation is that this series will go through the KVM
> > > tree.  Would you prefer a topic branch?
> > 
> > Is there any dependency outside of plain 4.15? If not, I'll put it into
> > x86/hyperv and let KVM folks pull it over.
> 
> There isn't;  we'll wait for x86/hyperv, thanks.

Will be there tomorrow. I'll let you know.
Thomas Gleixner Jan. 30, 2018, 11:48 p.m. UTC | #5
On Tue, 30 Jan 2018, Thomas Gleixner wrote:

> On Tue, 30 Jan 2018, Radim Krčmář wrote:
> > 2018-01-29 22:48+0100, Thomas Gleixner:
> > > On Wed, 24 Jan 2018, Radim Krčmář wrote:
> > > > 2018-01-24 14:23+0100, Vitaly Kuznetsov:
> > > > > Hyper-V reenlightenment interrupts arrive when the VM is migrated, we're
> > > > > not supposed to see many of them. However, it may be important to know
> > > > > that the event has happened in case we have L2 nested guests.
> > > > > 
> > > > > Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
> > > > > Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
> > > > > ---
> > > > 
> > > > Thomas,
> > > > 
> > > > I think the expectation is that this series will go through the KVM
> > > > tree.  Would you prefer a topic branch?
> > > 
> > > Is there any dependency outside of plain 4.15? If not, I'll put it into
> > > x86/hyperv and let KVM folks pull it over.
> > 
> > There isn't;  we'll wait for x86/hyperv, thanks.
> 
> Will be there tomorrow. I'll let you know.

   git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/hyperv

Feel free to pull it into your tree.

Thanks,

	tglx
diff mbox

Patch

diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c
index e4377e2f2a10..a3adece392f1 100644
--- a/arch/x86/hyperv/hv_init.c
+++ b/arch/x86/hyperv/hv_init.c
@@ -147,6 +147,8 @@  __visible void __irq_entry hyperv_reenlightenment_intr(struct pt_regs *regs)
 {
 	entering_ack_irq();
 
+	inc_irq_stat(irq_hv_reenlightenment_count);
+
 	schedule_delayed_work(&hv_reenlightenment_work, HZ/10);
 
 	exiting_irq();
diff --git a/arch/x86/include/asm/hardirq.h b/arch/x86/include/asm/hardirq.h
index 51cc979dd364..7c341a74ec8c 100644
--- a/arch/x86/include/asm/hardirq.h
+++ b/arch/x86/include/asm/hardirq.h
@@ -38,6 +38,9 @@  typedef struct {
 #if IS_ENABLED(CONFIG_HYPERV) || defined(CONFIG_XEN)
 	unsigned int irq_hv_callback_count;
 #endif
+#if IS_ENABLED(CONFIG_HYPERV)
+	unsigned int irq_hv_reenlightenment_count;
+#endif
 } ____cacheline_aligned irq_cpustat_t;
 
 DECLARE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat);
diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
index 68e1867cca80..45fb4d2565f8 100644
--- a/arch/x86/kernel/irq.c
+++ b/arch/x86/kernel/irq.c
@@ -141,6 +141,15 @@  int arch_show_interrupts(struct seq_file *p, int prec)
 				   irq_stats(j)->irq_hv_callback_count);
 		seq_puts(p, "  Hypervisor callback interrupts\n");
 	}
+#endif
+#if IS_ENABLED(CONFIG_HYPERV)
+	if (test_bit(HYPERV_REENLIGHTENMENT_VECTOR, system_vectors)) {
+		seq_printf(p, "%*s: ", prec, "HRE");
+		for_each_online_cpu(j)
+			seq_printf(p, "%10u ",
+				   irq_stats(j)->irq_hv_reenlightenment_count);
+		seq_puts(p, "  Hyper-V reenlightenment interrupts\n");
+	}
 #endif
 	seq_printf(p, "%*s: %10u\n", prec, "ERR", atomic_read(&irq_err_count));
 #if defined(CONFIG_X86_IO_APIC)