* [PATCH] sched, trace: Fix prev_state output in sched_switch tracepoint
@ 2018-10-30 6:54 Pavankumar Kondeti
2018-11-27 9:34 ` Pavan Kondeti
0 siblings, 1 reply; 3+ messages in thread
From: Pavankumar Kondeti @ 2018-10-30 6:54 UTC (permalink / raw)
To: Thomas Gleixner, Peter Zijlstra, Steven Rostedt, Ingo Molnar,
linux-kernel
Cc: Pavankumar Kondeti
commit 3f5fe9fef5b2 ("sched/debug: Fix task state recording/printout")
tried to fix the problem introduced by a previous commit efb40f588b43
("sched/tracing: Fix trace_sched_switch task-state printing"). However
the prev_state output in sched_switch is still broken.
task_state_index() uses fls() which considers the LSB as 1. Left
shifting 1 by this value gives an incorrect mapping to the task state.
Fix this by decrementing the value returned by __get_task_state()
before shifting.
Fixes: 3f5fe9fef5b2 ("sched/debug: Fix task state recording/printout")
Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
---
include/trace/events/sched.h | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h
index f07b270..9a4bdfa 100644
--- a/include/trace/events/sched.h
+++ b/include/trace/events/sched.h
@@ -107,6 +107,8 @@
#ifdef CREATE_TRACE_POINTS
static inline long __trace_sched_switch_state(bool preempt, struct task_struct *p)
{
+ unsigned int state;
+
#ifdef CONFIG_SCHED_DEBUG
BUG_ON(p != current);
#endif /* CONFIG_SCHED_DEBUG */
@@ -118,7 +120,15 @@ static inline long __trace_sched_switch_state(bool preempt, struct task_struct *
if (preempt)
return TASK_REPORT_MAX;
- return 1 << task_state_index(p);
+ /*
+ * task_state_index() uses fls() and returns a value from 0-8 range.
+ * Decrement it by 1 (except TASK_RUNNING state i.e 0) before using
+ * it for left shift operation to get the correct task->state
+ * mapping.
+ */
+ state = task_state_index(p);
+
+ return state ? (1 << (state - 1)) : state;
}
#endif /* CREATE_TRACE_POINTS */
--
Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project.
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] sched, trace: Fix prev_state output in sched_switch tracepoint
2018-10-30 6:54 [PATCH] sched, trace: Fix prev_state output in sched_switch tracepoint Pavankumar Kondeti
@ 2018-11-27 9:34 ` Pavan Kondeti
2018-11-27 14:29 ` Steven Rostedt
0 siblings, 1 reply; 3+ messages in thread
From: Pavan Kondeti @ 2018-11-27 9:34 UTC (permalink / raw)
To: Pavan Kondeti
Cc: Thomas Gleixner, Peter Zijlstra, Steven Rostedt, Ingo Molnar, LKML
Hi Peter/Thomas,
On Tue, Oct 30, 2018 at 12:25 PM Pavankumar Kondeti
<pkondeti@codeaurora.org> wrote:
>
> commit 3f5fe9fef5b2 ("sched/debug: Fix task state recording/printout")
> tried to fix the problem introduced by a previous commit efb40f588b43
> ("sched/tracing: Fix trace_sched_switch task-state printing"). However
> the prev_state output in sched_switch is still broken.
>
> task_state_index() uses fls() which considers the LSB as 1. Left
> shifting 1 by this value gives an incorrect mapping to the task state.
> Fix this by decrementing the value returned by __get_task_state()
> before shifting.
>
> Fixes: 3f5fe9fef5b2 ("sched/debug: Fix task state recording/printout")
> Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
> ---
> include/trace/events/sched.h | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
Can you please review this patch?
--
Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a
Linux Foundation Collaborative Project
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] sched, trace: Fix prev_state output in sched_switch tracepoint
2018-11-27 9:34 ` Pavan Kondeti
@ 2018-11-27 14:29 ` Steven Rostedt
0 siblings, 0 replies; 3+ messages in thread
From: Steven Rostedt @ 2018-11-27 14:29 UTC (permalink / raw)
To: Pavan Kondeti; +Cc: Thomas Gleixner, Peter Zijlstra, Ingo Molnar, LKML
On Tue, 27 Nov 2018 15:04:25 +0530
Pavan Kondeti <pkondeti@codeaurora.org> wrote:
> Hi Peter/Thomas,
>
> On Tue, Oct 30, 2018 at 12:25 PM Pavankumar Kondeti
> <pkondeti@codeaurora.org> wrote:
> >
> > commit 3f5fe9fef5b2 ("sched/debug: Fix task state recording/printout")
> > tried to fix the problem introduced by a previous commit efb40f588b43
> > ("sched/tracing: Fix trace_sched_switch task-state printing"). However
> > the prev_state output in sched_switch is still broken.
> >
> > task_state_index() uses fls() which considers the LSB as 1. Left
> > shifting 1 by this value gives an incorrect mapping to the task state.
> > Fix this by decrementing the value returned by __get_task_state()
> > before shifting.
> >
> > Fixes: 3f5fe9fef5b2 ("sched/debug: Fix task state recording/printout")
> > Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
> > ---
> > include/trace/events/sched.h | 12 +++++++++++-
> > 1 file changed, 11 insertions(+), 1 deletion(-)
>
> Can you please review this patch?
>
I've already tested this patch. I'm working on getting other patches
upstream and this looks like it should be marked for stable. I'll take
it.
Thanks!
-- Steve
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-11-27 14:29 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-30 6:54 [PATCH] sched, trace: Fix prev_state output in sched_switch tracepoint Pavankumar Kondeti
2018-11-27 9:34 ` Pavan Kondeti
2018-11-27 14:29 ` Steven Rostedt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).