All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ankur Arora <ankur.a.arora@oracle.com>
To: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: linux-trace-kernel@vger.kernel.org, linux-kernel@vger.kernel.org,
	Peter Zijlstra <peterz@infradead.org>,
	tglx@linutronix.de, mingo@kernel.org, juri.lelli@redhat.com,
	vincent.guittot@linaro.org, dietmar.eggemann@arm.com,
	rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de,
	vschneid@redhat.com, ankur.a.arora@oracle.com, efault@gmx.de,
	Masami Hiramatsu <mhiramat@kernel.org>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Subject: Re: [PATCH 2/3] tracing: Record task flag NEED_RESCHED_LAZY.
Date: Wed, 09 Oct 2024 10:30:28 -0700	[thread overview]
Message-ID: <87iku1b2vf.fsf@oracle.com> (raw)
In-Reply-To: <20241009105709.887510-3-bigeasy@linutronix.de>


Sebastian Andrzej Siewior <bigeasy@linutronix.de> writes:

> The scheduler added NEED_RESCHED_LAZY scheduling. Record this state as
> part of trace flags and expose it in the need_resched field.
>
> Record and expose NEED_RESCHED_LAZY.
>
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> ---
>  include/linux/trace_events.h |  1 +
>  kernel/trace/trace.c         |  2 ++
>  kernel/trace/trace_output.c  | 14 +++++++++++++-
>  3 files changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h
> index d5c0fcf20f024..4cae6f2581379 100644
> --- a/include/linux/trace_events.h
> +++ b/include/linux/trace_events.h
> @@ -185,6 +185,7 @@ unsigned int tracing_gen_ctx_irq_test(unsigned int irqs_status);
>  enum trace_flag_type {
>  	TRACE_FLAG_IRQS_OFF		= 0x01,
>  	TRACE_FLAG_NEED_RESCHED		= 0x02,
> +	TRACE_FLAG_NEED_RESCHED_LAZY	= 0x04,
>  	TRACE_FLAG_HARDIRQ		= 0x08,
>  	TRACE_FLAG_SOFTIRQ		= 0x10,
>  	TRACE_FLAG_PREEMPT_RESCHED	= 0x20,
> diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
> index 1c69ca1f10886..29d7703751aa9 100644
> --- a/kernel/trace/trace.c
> +++ b/kernel/trace/trace.c
> @@ -2544,6 +2544,8 @@ unsigned int tracing_gen_ctx_irq_test(unsigned int irqs_status)
>  		trace_flags |= TRACE_FLAG_NEED_RESCHED;
>  	if (test_preempt_need_resched())
>  		trace_flags |= TRACE_FLAG_PREEMPT_RESCHED;
> +	if (tif_test_bit(TIF_NEED_RESCHED_LAZY))

TIF_NEED_RESCHED_LAZY falls back to TIF_NEED_RESCHED without
CONFIG_ARCH_HAS_PREEMPT_LAZY. So, you might need to add an explicit
check for that as well.

With that,
 Reviewed-by: Ankur Arora <ankur.a.arora@oracle.com>

Ankur

> +		trace_flags |= TRACE_FLAG_NEED_RESCHED_LAZY;
>  	return (trace_flags << 16) | (min_t(unsigned int, pc & 0xff, 0xf)) |
>  		(min_t(unsigned int, migration_disable_value(), 0xf)) << 4;
>  }
> diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c
> index 829daa0764dd9..23ca2155306b1 100644
> --- a/kernel/trace/trace_output.c
> +++ b/kernel/trace/trace_output.c
> @@ -463,17 +463,29 @@ int trace_print_lat_fmt(struct trace_seq *s, struct trace_entry *entry)
>  		!IS_ENABLED(CONFIG_TRACE_IRQFLAGS_SUPPORT) ? 'X' :
>  		'.';
>
> -	switch (entry->flags & (TRACE_FLAG_NEED_RESCHED |
> +	switch (entry->flags & (TRACE_FLAG_NEED_RESCHED | TRACE_FLAG_NEED_RESCHED_LAZY |
>  				TRACE_FLAG_PREEMPT_RESCHED)) {
> +	case TRACE_FLAG_NEED_RESCHED | TRACE_FLAG_NEED_RESCHED_LAZY | TRACE_FLAG_PREEMPT_RESCHED:
> +		need_resched = 'B';
> +		break;
>  	case TRACE_FLAG_NEED_RESCHED | TRACE_FLAG_PREEMPT_RESCHED:
>  		need_resched = 'N';
>  		break;
> +	case TRACE_FLAG_NEED_RESCHED_LAZY | TRACE_FLAG_PREEMPT_RESCHED:
> +		need_resched = 'L';
> +		break;
> +	case TRACE_FLAG_NEED_RESCHED | TRACE_FLAG_NEED_RESCHED_LAZY:
> +		need_resched = 'b';
> +		break;
>  	case TRACE_FLAG_NEED_RESCHED:
>  		need_resched = 'n';
>  		break;
>  	case TRACE_FLAG_PREEMPT_RESCHED:
>  		need_resched = 'p';
>  		break;
> +	case TRACE_FLAG_NEED_RESCHED_LAZY:
> +		need_resched = 'l';
> +		break;
>  	default:
>  		need_resched = '.';
>  		break;


--
ankur

  parent reply	other threads:[~2024-10-09 17:30 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-09 10:50 [PATCH 0/3] Lazy preemption leftovers Sebastian Andrzej Siewior
2024-10-09 10:50 ` [PATCH 1/3] tracing: Replace TRACE_FLAG_IRQS_NOSUPPORT with its config option Sebastian Andrzej Siewior
2024-10-09 10:50 ` [PATCH 2/3] tracing: Record task flag NEED_RESCHED_LAZY Sebastian Andrzej Siewior
2024-10-09 14:25   ` Steven Rostedt
2024-10-09 17:30   ` Ankur Arora [this message]
2024-10-09 17:33     ` Steven Rostedt
2024-10-09 18:49       ` Ankur Arora
2024-10-10 10:56         ` Sebastian Andrzej Siewior
2024-10-10 14:52           ` Steven Rostedt
2024-10-10 14:55             ` Sebastian Andrzej Siewior
2024-10-12 18:30   ` kernel test robot
2024-10-16  9:17   ` Shrikanth Hegde
2024-10-09 10:50 ` [PATCH 3/3] riscv: add PREEMPT_LAZY support Sebastian Andrzej Siewior
2024-10-09 10:50   ` Sebastian Andrzej Siewior
2024-10-09 13:03   ` Peter Zijlstra
2024-10-09 13:03     ` Peter Zijlstra
2024-10-09 13:05     ` Sebastian Andrzej Siewior
2024-10-09 13:05       ` Sebastian Andrzej Siewior
2024-10-17 21:49       ` Palmer Dabbelt
2024-10-17 21:49         ` Palmer Dabbelt
2024-10-10 12:25     ` [PATCH v2 " Sebastian Andrzej Siewior
2024-10-10 12:25       ` Sebastian Andrzej Siewior
2024-12-11 22:32       ` patchwork-bot+linux-riscv
2024-12-11 22:32         ` patchwork-bot+linux-riscv

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87iku1b2vf.fsf@oracle.com \
    --to=ankur.a.arora@oracle.com \
    --cc=bigeasy@linutronix.de \
    --cc=bsegall@google.com \
    --cc=dietmar.eggemann@arm.com \
    --cc=efault@gmx.de \
    --cc=juri.lelli@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-trace-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mgorman@suse.de \
    --cc=mhiramat@kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=vincent.guittot@linaro.org \
    --cc=vschneid@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.