All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tejun Heo <tj@kernel.org>
To: cl@linux-foundation.org
Cc: linux-kernel@vger.kernel.org, Tejun Heo <tj@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>
Subject: [PATCH 02/12] percpu: introduce arch_raw_cpu_ptr()
Date: Thu, 12 Jun 2014 12:23:19 -0400	[thread overview]
Message-ID: <1402590209-31610-3-git-send-email-tj@kernel.org> (raw)
In-Reply-To: <1402590209-31610-1-git-send-email-tj@kernel.org>

Currently, archs can override raw_cpu_ptr() directly; however, we
wanna build a layer of indirection in the generic part of percpu so
that we can implement generic features there without affecting archs.

Introduce arch_raw_cpu_ptr() which is used to define raw_cpu_ptr() by
generic percpu code.  The two are identical for now.  x86 is currently
the only arch which overrides raw_cpu_ptr() and is converted to
define arch_raw_cpu_ptr() instead.

This doesn't introduce any functional difference.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Christoph Lameter <cl@linux-foundation.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
---
 arch/x86/include/asm/percpu.h |  2 +-
 include/asm-generic/percpu.h  | 11 +++++++++--
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/arch/x86/include/asm/percpu.h b/arch/x86/include/asm/percpu.h
index 851bcdc..9bc23f1 100644
--- a/arch/x86/include/asm/percpu.h
+++ b/arch/x86/include/asm/percpu.h
@@ -52,7 +52,7 @@
  * Compared to the generic __my_cpu_offset version, the following
  * saves one instruction and avoids clobbering a temp register.
  */
-#define raw_cpu_ptr(ptr)				\
+#define arch_raw_cpu_ptr(ptr)				\
 ({							\
 	unsigned long tcp_ptr__;			\
 	__verify_pcpu_ptr(ptr);				\
diff --git a/include/asm-generic/percpu.h b/include/asm-generic/percpu.h
index 63d2b68..a247d80 100644
--- a/include/asm-generic/percpu.h
+++ b/include/asm-generic/percpu.h
@@ -53,9 +53,16 @@ extern unsigned long __per_cpu_offset[NR_CPUS];
 #define per_cpu(var, cpu) \
 	(*SHIFT_PERCPU_PTR(&(var), per_cpu_offset(cpu)))
 
-#ifndef raw_cpu_ptr
-#define raw_cpu_ptr(ptr) SHIFT_PERCPU_PTR(ptr, __my_cpu_offset)
+/*
+ * Arch may define arch_raw_cpu_ptr() to provide more efficient address
+ * translations for raw_cpu_ptr().
+ */
+#ifndef arch_raw_cpu_ptr
+#define arch_raw_cpu_ptr(ptr) SHIFT_PERCPU_PTR(ptr, __my_cpu_offset)
 #endif
+
+#define raw_cpu_ptr(ptr) arch_raw_cpu_ptr(ptr)
+
 #ifdef CONFIG_DEBUG_PREEMPT
 #define this_cpu_ptr(ptr) SHIFT_PERCPU_PTR(ptr, my_cpu_offset)
 #else
-- 
1.9.3


  parent reply	other threads:[~2014-06-12 16:28 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-12 16:23 [PATCHSET percpu/for-3.17] percpu: clean up percpu accessor and operation definitions Tejun Heo
2014-06-12 16:23 ` [PATCH 01/12] percpu: disallow archs from overriding SHIFT_PERCPU_PTR() Tejun Heo
2014-06-13  1:58   ` Christoph Lameter
2014-06-12 16:23 ` Tejun Heo [this message]
2014-06-13 17:10   ` [PATCH 02/12] percpu: introduce arch_raw_cpu_ptr() Christoph Lameter
2014-06-13 18:24     ` Tejun Heo
2014-06-12 16:23 ` [PATCH 03/12] percpu: include/asm-generic/percpu.h should contain only arch-overridable parts Tejun Heo
2014-06-13 17:12   ` Christoph Lameter
2014-06-12 16:23 ` [PATCH 04/12] percpu: move accessors from include/linux/percpu.h to percpu-defs.h Tejun Heo
2014-06-13 17:13   ` Christoph Lameter
2014-06-12 16:23 ` [PATCH 05/12] percpu: reorganize include/linux/percpu-defs.h Tejun Heo
2014-06-13 17:16   ` Christoph Lameter
2014-06-13 18:25     ` Tejun Heo
2014-06-13 18:55       ` Christoph Lameter
2014-06-16 15:31         ` Christoph Lameter
2014-06-18 18:16           ` Tejun Heo
2014-06-19 21:07             ` Christoph Lameter
2014-06-12 16:23 ` [PATCH 06/12] percpu: only allow sized arch overrides for {raw|this}_cpu_*() ops Tejun Heo
2014-06-13 17:18   ` Christoph Lameter
2014-06-12 16:23 ` [PATCH 07/12] percpu: move generic {raw|this}_cpu_*_N() definitions to include/asm-generic/percpu.h Tejun Heo
2014-06-13 17:19   ` Christoph Lameter
2014-06-12 16:23 ` [PATCH 08/12] percpu: move {raw|this}_cpu_*() definitions to include/linux/percpu-defs.h Tejun Heo
2014-06-13 17:20   ` Christoph Lameter
2014-06-12 16:23 ` [PATCH 09/12] percpu: reorder macros in percpu header files Tejun Heo
2014-06-13 17:21   ` Christoph Lameter
2014-06-12 16:23 ` [PATCH 10/12] percpu: use raw_cpu_*() to define __this_cpu_*() Tejun Heo
2014-06-13 17:22   ` Christoph Lameter
2014-06-12 16:23 ` [PATCH 11/12] percpu: preffity percpu header files Tejun Heo
2014-06-13 17:23   ` Christoph Lameter
2014-06-12 16:23 ` [PATCH 12/12] percpu: invoke __verify_pcpu_ptr() from the generic part of accessors and operations Tejun Heo
2014-06-17 23:20   ` [PATCH UPDATED " Tejun Heo
2014-06-17 23:22 ` [PATCHSET percpu/for-3.17] percpu: clean up percpu accessor and operation definitions Tejun Heo
2014-06-19 21:05   ` Christoph Lameter
2014-06-19 21:09     ` Tejun Heo

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=1402590209-31610-3-git-send-email-tj@kernel.org \
    --to=tj@kernel.org \
    --cc=cl@linux-foundation.org \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=tglx@linutronix.de \
    /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.