aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorBjoern Brandenburg <bbb@mpi-sws.org>2015-08-09 07:18:45 -0400
committerBjoern Brandenburg <bbb@mpi-sws.org>2017-05-26 17:12:22 -0400
commit3adfeae8db15fd5aa4027a906f7f4b1b609cb2f9 (patch)
tree70418df1ce83d270704f750afc1a74e7079bd0df /kernel
parent49e9c1480b1bb8cd89c9caf7850d37d33584c104 (diff)
Integrate ft_irq_fired() with Linux
This patch hooks up Feather-Trace's ft_irq_fired() handler with Linux's interrupt handling infrastructure. IRQ tracing: ft_irq_fired() only if irq_enter() was skipped On x86, the rescheduling IPI path already calls irq_enter(), which calls ft_irq_fired(), so we don't have to do it again. IRQ tracing: don't count softirqs Only triggered by irq_exit(), which implies that we called irq_enter(), which means that we already traced the current hard IRQ.
Diffstat (limited to 'kernel')
-rw-r--r--kernel/sched/core.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 154fd689fe02..6440fe53d1a8 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -1806,7 +1806,14 @@ void scheduler_ipi(void)
1806 preempt_fold_need_resched(); 1806 preempt_fold_need_resched();
1807 1807
1808 if (llist_empty(&this_rq()->wake_list) && !got_nohz_idle_kick()) 1808 if (llist_empty(&this_rq()->wake_list) && !got_nohz_idle_kick())
1809 {
1810#ifndef CONFIG_ARCH_CALLS_IRQ_ENTER_ON_RESCHED_IPI
1811 /* If we don't call irq_enter(), we need to triggger the IRQ
1812 * tracing manually. */
1813 ft_irq_fired();
1814#endif
1809 return; 1815 return;
1816 }
1810 1817
1811 /* 1818 /*
1812 * Not all reschedule IPI handlers call irq_enter/irq_exit, since 1819 * Not all reschedule IPI handlers call irq_enter/irq_exit, since