From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Alexander Gordeev <agordeev@redhat.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] rcu: Remove redundant rcu_is_cpu_rrupt_from_idle() function
Date: Wed, 29 Oct 2014 05:47:29 -0700 [thread overview]
Message-ID: <20141029124728.GL5718@linux.vnet.ibm.com> (raw)
In-Reply-To: <1414580827-19545-1-git-send-email-agordeev@redhat.com>
On Wed, Oct 29, 2014 at 12:07:07PM +0100, Alexander Gordeev wrote:
> Function rcu_is_cpu_rrupt_from_idle() is called from scheduling-
> clock interrupt handler to check if the current CPU was interrupted
> from idle. If true, it results in invocation of RCU callbacks. But
> the common hardware interrupt exit path also contains similar check
> and therefore the call to rcu_is_cpu_rrupt_from_idle() is redundant.
By common hardware interrupt exit path, you are meaning the calls
to rcu_irq_exit()? If not, please let me know exactly what you
mean here.
Thanx, Paul
> Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
> Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> ---
> kernel/rcu/tiny.c | 12 +-----------
> kernel/rcu/tree.c | 14 +-------------
> 2 files changed, 2 insertions(+), 24 deletions(-)
>
> diff --git a/kernel/rcu/tiny.c b/kernel/rcu/tiny.c
> index c0623fc..0bfb3b9 100644
> --- a/kernel/rcu/tiny.c
> +++ b/kernel/rcu/tiny.c
> @@ -186,16 +186,6 @@ EXPORT_SYMBOL(__rcu_is_watching);
> #endif /* defined(CONFIG_DEBUG_LOCK_ALLOC) || defined(CONFIG_RCU_TRACE) */
>
> /*
> - * Test whether the current CPU was interrupted from idle. Nested
> - * interrupts don't count, we must be running at the first interrupt
> - * level.
> - */
> -static int rcu_is_cpu_rrupt_from_idle(void)
> -{
> - return rcu_dynticks_nesting <= 1;
> -}
> -
> -/*
> * Helper function for rcu_sched_qs() and rcu_bh_qs().
> * Also irqs are disabled to avoid confusion due to interrupt handlers
> * invoking call_rcu().
> @@ -250,7 +240,7 @@ void rcu_bh_qs(void)
> void rcu_check_callbacks(int cpu, int user)
> {
> RCU_TRACE(check_cpu_stalls());
> - if (user || rcu_is_cpu_rrupt_from_idle())
> + if (user)
> rcu_sched_qs();
> else if (!in_softirq())
> rcu_bh_qs();
> diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
> index 133e472..8e9341c 100644
> --- a/kernel/rcu/tree.c
> +++ b/kernel/rcu/tree.c
> @@ -884,18 +884,6 @@ EXPORT_SYMBOL_GPL(rcu_lockdep_current_cpu_online);
>
> #endif /* #if defined(CONFIG_PROVE_RCU) && defined(CONFIG_HOTPLUG_CPU) */
>
> -/**
> - * rcu_is_cpu_rrupt_from_idle - see if idle or immediately interrupted from idle
> - *
> - * If the current CPU is idle or running at a first-level (not nested)
> - * interrupt from idle, return true. The caller must have at least
> - * disabled preemption.
> - */
> -static int rcu_is_cpu_rrupt_from_idle(void)
> -{
> - return __this_cpu_read(rcu_dynticks.dynticks_nesting) <= 1;
> -}
> -
> /*
> * Snapshot the specified CPU's dynticks counter so that we can later
> * credit them with an implicit quiescent state. Return 1 if this CPU
> @@ -2391,7 +2379,7 @@ void rcu_check_callbacks(int cpu, int user)
> {
> trace_rcu_utilization(TPS("Start scheduler-tick"));
> increment_cpu_stall_ticks();
> - if (user || rcu_is_cpu_rrupt_from_idle()) {
> + if (user) {
>
> /*
> * Get here if this CPU took its interrupt from user
> --
> 1.8.3.1
>
next prev parent reply other threads:[~2014-10-29 12:47 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-29 11:07 [PATCH] rcu: Remove redundant rcu_is_cpu_rrupt_from_idle() function Alexander Gordeev
2014-10-29 12:47 ` Paul E. McKenney [this message]
2014-10-29 13:45 ` Alexander Gordeev
2014-10-29 14:34 ` Paul E. McKenney
2014-10-29 15:16 ` Alexander Gordeev
2014-10-29 15:46 ` Paul E. McKenney
2014-10-29 21:09 ` Alexander Gordeev
2014-10-30 0:05 ` Paul E. McKenney
2014-10-30 17:54 ` Alexander Gordeev
2014-10-30 20:43 ` Paul E. McKenney
2014-10-30 21:54 ` Alexander Gordeev
2014-10-31 3:45 ` Paul E. McKenney
2014-10-31 14:53 ` Alexander Gordeev
2014-10-31 14:55 ` [PATCH v2] rcu: Remove redundant rcu_is_cpu_rrupt_from_idle() from tiny RCU Alexander Gordeev
2014-10-31 17:36 ` Paul E. McKenney
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=20141029124728.GL5718@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=agordeev@redhat.com \
--cc=linux-kernel@vger.kernel.org \
/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.