Re: [gcv v3 27/35] arm: Replace __get_cpu_var uses
From: Christoph Lameter
Date: Wed Aug 28 2013 - 16:51:59 EST
On Wed, 28 Aug 2013, Russell King - ARM Linux wrote:
> On Wed, Aug 28, 2013 at 07:48:23PM +0000, Christoph Lameter wrote:
> > 3. Retrieve the content of the current processors instance of a per cpu variable.
> >
> > DEFINE_PER_CPU(int, u);
>
> Shouldn't this be 'y' ?
Right.
> > memcpy(this_cpu_ptr(&x), y, sizeof(x));
>
> Are you sure this one's correct? Isn't 'y' the per-cpu variable?
Also true. Already fixed this once. Sigh.
Description patch:
--- this_x86 2013-08-28 15:35:48.933416126 -0500
+++ patches/this_x86 2013-08-28 15:41:14.386260894 -0500
@@ -26,12 +26,12 @@
This patch converts __get_cpu_var into either an explicit address calculation using this_cpu_ptr()
-or into a use of this_cpu operations that use the offset. Thereby address calcualtions are avoided
+or into a use of this_cpu operations that use the offset. Thereby address calculations are avoided
and less registers are used when code is generated.
-At the end of the patchset all uses of __get_cpu_var have been removed so the macro is removed too.
+At the end of the patch set all uses of __get_cpu_var have been removed so the macro is removed too.
-The patchset includes passes over all arches as well. Once these operations are used throughout then
+The patch set includes passes over all arches as well. Once these operations are used throughout then
specialized macros can be defined in non -x86 arches as well in order to optimize per cpu access by
f.e. using a global register that may be set to the per cpu base.
@@ -63,7 +63,7 @@
3. Retrieve the content of the current processors instance of a per cpu variable.
- DEFINE_PER_CPU(int, u);
+ DEFINE_PER_CPU(int, y);
int x = __get_cpu_var(y)
Converts to
@@ -78,7 +78,7 @@
Converts to
- memcpy(this_cpu_ptr(&x), y, sizeof(x));
+ memcpy(&x, this_cpu_ptr(&y), sizeof(x));
5. Assignment to a per cpu variable
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/