From: Will Deacon <will.deacon@arm.com>
To: Christoph Lameter <cl@linux.com>
Cc: Tejun Heo <tj@kernel.org>,
"akpm@linuxfoundation.org" <akpm@linuxfoundation.org>,
Russell King <linux@arm.linux.org.uk>,
Catalin Marinas <Catalin.Marinas@arm.com>,
"linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>,
Steven Rostedt <srostedt@redhat.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [gcv v3 27/35] arm: Replace __get_cpu_var uses
Date: Wed, 4 Sep 2013 19:21:13 +0100 [thread overview]
Message-ID: <20130904182113.GD5599@mudshark.cambridge.arm.com> (raw)
In-Reply-To: <00000140ea29d3c8-5110dd9f-9dcf-470f-9b7e-4e7ff0874052-000000@email.amazonses.com>
On Wed, Sep 04, 2013 at 07:09:04PM +0100, Christoph Lameter wrote:
> On Wed, 4 Sep 2013, Will Deacon wrote:
>
> > On ARM, yes. I'm worried that there may be an architecture where the change-
> > or-fail operation would only fail if the access from the interrupt handler
> > *also* used that change-or-fail instruction, which isn't the case with
> > this_cpu_inc.
> >
> > I have no idea if such an architecture exists :)
>
> Atomic operations use atomic_t. this_cpu operations can only use regular
> scalars. So the set of variables that are updated by each should be
> distinct.
Right, except that your patch contained the following hunk:
Index: linux/arch/arm64/kernel/debug-monitors.c
===================================================================
--- linux.orig/arch/arm64/kernel/debug-monitors.c 2013-08-26 13:48:40.956794980 -0500
+++ linux/arch/arm64/kernel/debug-monitors.c 2013-08-26 13:48:40.952795024 -0500
@@ -98,11 +98,11 @@ void enable_debug_monitors(enum debug_el
WARN_ON(preemptible());
- if (local_inc_return(&__get_cpu_var(mde_ref_count)) == 1)
+ if (this_cpu_inc_return(mde_ref_count) == 1)
enable = DBG_MDSCR_MDE;
if (el == DBG_ACTIVE_EL1 &&
- local_inc_return(&__get_cpu_var(kde_ref_count)) == 1)
+ this_cpu_inc_return(kde_ref_count) == 1)
enable |= DBG_MDSCR_KDE;
if (enable && debug_enabled) {
Then we have:
#define local_inc_return(l) atomic_long_inc_return(&(l)->a)
static inline long atomic_long_inc_return(atomic_long_t *l)
{
atomic_t *v = (atomic_t *)l;
return (long)atomic_inc_return(v);
}
So that casting lets the two interfaces overlap (and indeed they do after
your patch, since local_dec_and_test is still used to the same variable).
Will
next prev parent reply other threads:[~2013-09-04 18:21 UTC|newest]
Thread overview: 126+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20130828193457.140443630@linux.com>
2013-08-28 19:34 ` [gcv v3 01/35] x86: Use this_cpu_inc/dec for debug registers Christoph Lameter
2013-08-28 19:34 ` Christoph Lameter
2013-08-28 19:34 ` [gcv v3 02/35] percpu: Make __verify_pcu_ptr handle per cpu pointers to arrays Christoph Lameter
2013-08-28 19:34 ` Christoph Lameter
2013-08-28 19:46 ` [gcv v3 34/35] metag: Replace __get_cpu_var uses Christoph Lameter
2013-08-28 19:46 ` Christoph Lameter
2013-08-28 19:46 ` [gcv v3 20/35] zcache/zsmalloc: " Christoph Lameter
2013-08-28 19:46 ` Christoph Lameter
2013-08-28 19:46 ` [gcv v3 23/35] s390: " Christoph Lameter
2013-08-28 19:46 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 18/35] drivers/leds: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-09-03 20:40 ` Bryan Wu
2013-08-28 19:48 ` [gcv v3 03/35] Coccinelle script for __get_cpu_var conversion Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 09/35] block: Replace __get_cpu_var uses Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 04/35] net: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 12/35] watchdog: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 06/35] scheduler: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-29 7:58 ` Peter Zijlstra
2013-08-29 10:01 ` Ingo Molnar
2013-08-29 16:57 ` Christoph Lameter
2013-08-29 17:32 ` Steven Rostedt
2013-08-29 18:15 ` Christoph Lameter
2013-08-29 18:30 ` Steven Rostedt
2013-09-03 14:26 ` Christoph Lameter
2013-09-03 14:45 ` Frederic Weisbecker
2013-09-03 15:44 ` Steven Rostedt
2013-09-03 17:09 ` Christoph Lameter
2013-08-30 6:54 ` Ingo Molnar
2013-08-28 19:48 ` [gcv v3 22/35] mips: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 32/35] arc: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-29 6:33 ` Vineet Gupta
2013-08-29 16:43 ` Christoph Lameter
2013-09-04 7:46 ` Vineet Gupta
2013-09-04 14:14 ` Christoph Lameter
2013-09-05 5:01 ` Vineet Gupta
2013-09-05 14:19 ` Christoph Lameter
2013-09-05 14:29 ` Vineet Gupta
2013-08-28 19:48 ` [gcv v3 28/35] blackfin: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 16/35] drivers/oprofile: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 07/35] mm: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 19/35] drivers: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-29 10:30 ` James Hogan
2013-08-29 10:30 ` James Hogan
2013-08-28 19:48 ` [gcv v3 08/35] tracing: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-29 21:26 ` Steven Rostedt
2013-09-03 14:34 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 25/35] powerpc: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 21:18 ` Geert Uytterhoeven
2013-08-29 16:41 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 17/35] drivers/net/ethernet/tile: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 05/35] time: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 10/35] rcu: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-31 20:36 ` Paul E. McKenney
2013-09-04 14:19 ` Christoph Lameter
2013-09-04 19:41 ` Paul E. McKenney
2013-09-04 19:51 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 35/35] Remove __get_cpu_var and __raw_get_cpu_var macros [only in 3.13] Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 13/35] kernel misc: Replace __get_cpu_var uses Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 11/35] percpu: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 14/35] drivers/char: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 29/35] avr32: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 26/35] sparc: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 21/35] x86: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 24/35] ia64: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:48 ` [gcv v3 27/35] arm: " Christoph Lameter
2013-08-28 19:48 ` Christoph Lameter
2013-08-28 19:54 ` Russell King - ARM Linux
2013-08-28 20:42 ` Christoph Lameter
2013-08-30 10:01 ` Will Deacon
2013-09-03 14:39 ` Christoph Lameter
2013-09-04 9:33 ` Will Deacon
2013-09-04 14:17 ` Christoph Lameter
2013-09-04 14:23 ` Will Deacon
2013-09-04 14:54 ` Christoph Lameter
2013-09-04 17:46 ` Will Deacon
2013-09-04 18:09 ` Christoph Lameter
2013-09-04 18:21 ` Will Deacon [this message]
2013-09-04 18:31 ` Christoph Lameter
[not found] ` <alpine.DEB.2.02.1309041324530.26497@gentwo.org>
2013-09-04 20:58 ` Christoph Lameter
2013-09-05 13:03 ` Will Deacon
2013-09-05 14:24 ` Christoph Lameter
2013-09-05 17:28 ` Will Deacon
2013-09-05 17:52 ` Christoph Lameter
2013-09-06 11:04 ` Will Deacon
2013-09-06 15:39 ` Christoph Lameter
2013-08-28 20:06 ` [gcv v3 15/35] drivers/cpuidle: " Christoph Lameter
2013-08-28 20:06 ` Christoph Lameter
2013-08-28 20:49 ` Rafael J. Wysocki
2013-08-28 20:52 ` Christoph Lameter
2013-08-28 21:10 ` Rafael J. Wysocki
2013-08-28 20:06 ` [gcv v3 33/35] parisc: " Christoph Lameter
2013-08-28 20:06 ` Christoph Lameter
2013-08-28 20:06 ` Christoph Lameter
2013-08-28 20:06 ` [gcv v3 30/35] alpha: Replace __get_cpu_var Christoph Lameter
2013-08-28 20:06 ` Christoph Lameter
2013-08-28 20:46 ` [gcv v3 31/35] sh: Replace __get_cpu_var uses Christoph Lameter
2013-08-28 20:46 ` Christoph Lameter
2013-08-28 20:46 ` Christoph Lameter
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=20130904182113.GD5599@mudshark.cambridge.arm.com \
--to=will.deacon@arm.com \
--cc=Catalin.Marinas@arm.com \
--cc=akpm@linuxfoundation.org \
--cc=cl@linux.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=srostedt@redhat.com \
--cc=tj@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.