Re: [4.4-rt PATCH] trace: use rcuidle version for preemptoff_hist trace point

From: Yang Shi
Date: Mon Mar 07 2016 - 18:45:27 EST


On 3/7/2016 10:00 AM, Sebastian Andrzej Siewior wrote:
* Yang Shi | 2016-02-23 13:23:23 [-0800]:

I recall the rcuidle version is used by 4.1-rt, but not sure why it is dropped
in 4.4-rt. It looks such fix is still needed.
I don't recall while I removed it. It was durring v4.1 -> v4.4 port. In
v4.1 we had the idle version only in time_hardirqs_on() + â_off(). You
introduced it also to start_critical_timings() + stop_â(). Is this
required?

Yes, the test showed the same problem in start{stop}_critical_timings too.

In the meantime I bring back the empty macro of
trace_preemptirqsoff_hist_rcuidle() back in -RT sine it breaks compile
latest v4.4.3-RT9

Yes, sorry to forget to bring this in too. The 4.1 patch was submitted by me, but forgot to have it in 4.4.

Yang


kernel/trace/trace_irqsoff.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/kernel/trace/trace_irqsoff.c b/kernel/trace/trace_irqsoff.c
index 36e584f..069942c 100644
--- a/kernel/trace/trace_irqsoff.c
+++ b/kernel/trace/trace_irqsoff.c
@@ -421,13 +421,13 @@ void start_critical_timings(void)
{
if (preempt_trace() || irq_trace())
start_critical_timing(CALLER_ADDR0, CALLER_ADDR1);
- trace_preemptirqsoff_hist(TRACE_START, 1);
+ trace_preemptirqsoff_hist_rcuidle(TRACE_START, 1);
}
EXPORT_SYMBOL_GPL(start_critical_timings);

void stop_critical_timings(void)
{
- trace_preemptirqsoff_hist(TRACE_STOP, 0);
+ trace_preemptirqsoff_hist_rcuidle(TRACE_STOP, 0);
if (preempt_trace() || irq_trace())
stop_critical_timing(CALLER_ADDR0, CALLER_ADDR1);
}
Sebastian