|
|
a8a466 |
diff -up linux-3.10.0-327.sdl7.x86_64/arch/x86/include/asm/hardirq.h.undorhirqstat linux-3.10.0-327.sdl7.x86_64/arch/x86/include/asm/hardirq.h
|
|
|
a8a466 |
--- linux-3.10.0-327.sdl7.x86_64/arch/x86/include/asm/hardirq.h.undorhirqstat 2015-10-29 16:56:51.000000000 -0400
|
|
|
a8a466 |
+++ linux-3.10.0-327.sdl7.x86_64/arch/x86/include/asm/hardirq.h 2015-11-21 23:57:10.330063191 -0500
|
|
|
a8a466 |
@@ -37,18 +37,13 @@ typedef struct {
|
|
|
a8a466 |
|
|
|
a8a466 |
DECLARE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat);
|
|
|
a8a466 |
|
|
|
a8a466 |
-typedef struct {
|
|
|
a8a466 |
- unsigned int irq_hv_callback_count;
|
|
|
a8a466 |
-} ____cacheline_aligned rh_irq_cpustat_t;
|
|
|
a8a466 |
-
|
|
|
a8a466 |
-DECLARE_PER_CPU_SHARED_ALIGNED(rh_irq_cpustat_t, rh_irq_stat);
|
|
|
a8a466 |
+/* We can have at most NR_VECTORS irqs routed to a cpu at a time */
|
|
|
a8a466 |
+#define MAX_HARDIRQS_PER_CPU NR_VECTORS
|
|
|
a8a466 |
|
|
|
a8a466 |
#define __ARCH_IRQ_STAT
|
|
|
a8a466 |
|
|
|
a8a466 |
#define inc_irq_stat(member) this_cpu_inc(irq_stat.member)
|
|
|
a8a466 |
|
|
|
a8a466 |
-#define rh_inc_irq_stat(member) this_cpu_inc(rh_irq_stat.member)
|
|
|
a8a466 |
-
|
|
|
a8a466 |
#define local_softirq_pending() this_cpu_read(irq_stat.__softirq_pending)
|
|
|
a8a466 |
|
|
|
a8a466 |
#define __ARCH_SET_SOFTIRQ_PENDING
|
|
|
a8a466 |
diff -up linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/cpu/mshyperv.c.undorhirqstat linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/cpu/mshyperv.c
|
|
|
a8a466 |
--- linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/cpu/mshyperv.c.undorhirqstat 2015-10-29 16:56:51.000000000 -0400
|
|
|
a8a466 |
+++ linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/cpu/mshyperv.c 2015-11-22 00:03:55.131003266 -0500
|
|
|
a8a466 |
@@ -46,7 +46,6 @@ void hyperv_vector_handler(struct pt_reg
|
|
|
a8a466 |
irq_enter();
|
|
|
a8a466 |
exit_idle();
|
|
|
a8a466 |
|
|
|
a8a466 |
- rh_inc_irq_stat(irq_hv_callback_count);
|
|
|
a8a466 |
if (vmbus_handler)
|
|
|
a8a466 |
vmbus_handler();
|
|
|
a8a466 |
|
|
|
a8a466 |
diff -up linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/irq.c.undorhirqstat linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/irq.c
|
|
|
a8a466 |
--- linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/irq.c.undorhirqstat 2015-10-29 16:56:51.000000000 -0400
|
|
|
a8a466 |
+++ linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/irq.c 2015-11-21 23:58:02.526064171 -0500
|
|
|
a8a466 |
@@ -48,7 +48,6 @@ void ack_bad_irq(unsigned int irq)
|
|
|
a8a466 |
}
|
|
|
a8a466 |
|
|
|
a8a466 |
#define irq_stats(x) (&per_cpu(irq_stat, x))
|
|
|
a8a466 |
-#define rh_irq_stats(x) (&per_cpu(rh_irq_stat, x))
|
|
|
a8a466 |
/*
|
|
|
a8a466 |
* /proc/interrupts printing for arch specific interrupts
|
|
|
a8a466 |
*/
|
|
|
a8a466 |
@@ -126,13 +125,6 @@ int arch_show_interrupts(struct seq_file
|
|
|
a8a466 |
seq_printf(p, "%10u ", per_cpu(mce_poll_count, j));
|
|
|
a8a466 |
seq_printf(p, " Machine check polls\n");
|
|
|
a8a466 |
#endif
|
|
|
a8a466 |
- if (test_bit(HYPERVISOR_CALLBACK_VECTOR, used_vectors)) {
|
|
|
a8a466 |
- seq_printf(p, "%*s: ", prec, "HYP");
|
|
|
a8a466 |
- for_each_online_cpu(j)
|
|
|
a8a466 |
- seq_printf(p, "%10u ",
|
|
|
a8a466 |
- rh_irq_stats(j)->irq_hv_callback_count);
|
|
|
a8a466 |
- seq_printf(p, " Hypervisor callback interrupts\n");
|
|
|
a8a466 |
- }
|
|
|
a8a466 |
seq_printf(p, "%*s: %10u\n", prec, "ERR", atomic_read(&irq_err_count));
|
|
|
a8a466 |
#if defined(CONFIG_X86_IO_APIC)
|
|
|
a8a466 |
seq_printf(p, "%*s: %10u\n", prec, "MIS", atomic_read(&irq_mis_count));
|
|
|
a8a466 |
diff -up linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/irq_64.c.undorhirqstat linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/irq_64.c
|
|
|
a8a466 |
--- linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/irq_64.c.undorhirqstat 2015-10-29 16:56:51.000000000 -0400
|
|
|
a8a466 |
+++ linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/irq_64.c 2015-11-21 23:58:27.650064642 -0500
|
|
|
a8a466 |
@@ -23,8 +23,6 @@
|
|
|
a8a466 |
DEFINE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat);
|
|
|
a8a466 |
EXPORT_PER_CPU_SYMBOL(irq_stat);
|
|
|
a8a466 |
|
|
|
a8a466 |
-DEFINE_PER_CPU_SHARED_ALIGNED(rh_irq_cpustat_t, rh_irq_stat);
|
|
|
a8a466 |
-
|
|
|
a8a466 |
DEFINE_PER_CPU(struct pt_regs *, irq_regs);
|
|
|
a8a466 |
EXPORT_PER_CPU_SYMBOL(irq_regs);
|
|
|
a8a466 |
|
|
|
a8a466 |
diff -up linux-3.10.0-327.sdl7.x86_64/drivers/xen/events.c.undorhirqstat linux-3.10.0-327.sdl7.x86_64/drivers/xen/events.c
|
|
|
a8a466 |
--- linux-3.10.0-327.sdl7.x86_64/drivers/xen/events.c.undorhirqstat 2015-10-29 16:56:51.000000000 -0400
|
|
|
a8a466 |
+++ linux-3.10.0-327.sdl7.x86_64/drivers/xen/events.c 2015-11-22 00:04:18.032003696 -0500
|
|
|
a8a466 |
@@ -1446,8 +1446,6 @@ void xen_evtchn_do_upcall(struct pt_regs
|
|
|
a8a466 |
#ifdef CONFIG_X86
|
|
|
a8a466 |
exit_idle();
|
|
|
a8a466 |
#endif
|
|
|
a8a466 |
- rh_inc_irq_stat(irq_hv_callback_count);
|
|
|
a8a466 |
-
|
|
|
a8a466 |
__xen_evtchn_do_upcall();
|
|
|
a8a466 |
|
|
|
a8a466 |
irq_exit();
|