[kernel] r13881 - in dists/sid/linux-2.6/debian: . patches/bugfix/all patches/series

Maximilian Attems maks at alioth.debian.org
Sun Jul 5 21:39:13 UTC 2009


Author: maks
Date: Sun Jul  5 21:39:10 2009
New Revision: 13881

Log:
fix alpha smp build

Added:
   dists/sid/linux-2.6/debian/patches/bugfix/all/alpha-fix-percpu-build-breakage.patch
Modified:
   dists/sid/linux-2.6/debian/changelog
   dists/sid/linux-2.6/debian/patches/series/2

Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog	Sun Jul  5 21:27:43 2009	(r13880)
+++ dists/sid/linux-2.6/debian/changelog	Sun Jul  5 21:39:10 2009	(r13881)
@@ -119,6 +119,9 @@
     - bsdacct: fix access to invalid filp in acct_on()
   * Ignore ABI changes.
 
+  [ maximilian attems ]
+  * Add upstream alpha smp buildfix.
+
  -- dann frazier <dannf at debian.org>  Wed, 01 Jul 2009 16:49:20 -0600
 
 linux-2.6 (2.6.30-1) unstable; urgency=low

Added: dists/sid/linux-2.6/debian/patches/bugfix/all/alpha-fix-percpu-build-breakage.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/alpha-fix-percpu-build-breakage.patch	Sun Jul  5 21:39:10 2009	(r13881)
@@ -0,0 +1,95 @@
+Message-Id: <200906280107.n5S17MVD011837 at imap1.linux-foundation.org>
+To: mm-commits at vger.kernel.org
+Cc: tj at kernel.org, ink at jurassic.park.msu.ru, max at stro.at,
+	rth at twiddle.net
+From: akpm at linux-foundation.org
+Date: Sat, 27 Jun 2009 18:07:22 -0700
+Subject: alpha: fix percpu build breakage
+
+
+
+alpha percpu access requires custom SHIFT_PERCPU_PTR() definition for
+modules to work around addressing range limitation.  This is done via
+generating inline assembly using C preprocessing which forces the
+assembler to generate external reference.  This happens behind the
+compiler's back and makes the compiler think that static percpu variables
+in modules are unused.
+
+This used to be worked around by using __unused attribute for percpu
+variables which prevent the compiler from omitting the variable; however,
+recent declare/definition attribute unification change broke this as
+__used can't be used for declaration.  Also, in the process,
+PER_CPU_ATTRIBUTES definition in alpha percpu.h got broken.
+
+This patch adds PER_CPU_DEF_ATTRIBUTES which is only used for definitions
+and make alpha use it to add __used for percpu variables in modules.  This
+also fixes the PER_CPU_ATTRIBUTES double definition bug.
+
+Signed-off-by: Tejun Heo <tj at kernel.org>
+Cc: maximilian attems <max at stro.at>
+Cc: Ivan Kokshaysky <ink at jurassic.park.msu.ru>
+Cc: Richard Henderson <rth at twiddle.net>
+Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
+---
+
+ arch/alpha/include/asm/percpu.h |    6 +++---
+ include/asm-generic/percpu.h    |    4 ++++
+ include/linux/percpu-defs.h     |    3 ++-
+ 3 files changed, 9 insertions(+), 4 deletions(-)
+
+diff -puN arch/alpha/include/asm/percpu.h~alpha-fix-percpu-build-breakage arch/alpha/include/asm/percpu.h
+--- a/arch/alpha/include/asm/percpu.h~alpha-fix-percpu-build-breakage
++++ a/arch/alpha/include/asm/percpu.h
+@@ -30,7 +30,7 @@ extern unsigned long __per_cpu_offset[NR
+ 
+ #ifndef MODULE
+ #define SHIFT_PERCPU_PTR(var, offset) RELOC_HIDE(&per_cpu_var(var), (offset))
+-#define PER_CPU_ATTRIBUTES
++#define PER_CPU_DEF_ATTRIBUTES
+ #else
+ /*
+  * To calculate addresses of locally defined variables, GCC uses 32-bit
+@@ -49,7 +49,7 @@ extern unsigned long __per_cpu_offset[NR
+ 		: "=&r"(__ptr), "=&r"(tmp_gp));		\
+ 	(typeof(&per_cpu_var(var)))(__ptr + (offset)); })
+ 
+-#define PER_CPU_ATTRIBUTES	__used
++#define PER_CPU_DEF_ATTRIBUTES	__used
+ 
+ #endif /* MODULE */
+ 
+@@ -71,7 +71,7 @@ extern unsigned long __per_cpu_offset[NR
+ #define __get_cpu_var(var)		per_cpu_var(var)
+ #define __raw_get_cpu_var(var)		per_cpu_var(var)
+ 
+-#define PER_CPU_ATTRIBUTES
++#define PER_CPU_DEF_ATTRIBUTES
+ 
+ #endif /* SMP */
+ 
+diff -puN include/asm-generic/percpu.h~alpha-fix-percpu-build-breakage include/asm-generic/percpu.h
+--- a/include/asm-generic/percpu.h~alpha-fix-percpu-build-breakage
++++ a/include/asm-generic/percpu.h
+@@ -97,4 +97,8 @@ extern void setup_per_cpu_areas(void);
+ #define PER_CPU_ATTRIBUTES
+ #endif
+ 
++#ifndef PER_CPU_DEF_ATTRIBUTES
++#define PER_CPU_DEF_ATTRIBUTES
++#endif
++
+ #endif /* _ASM_GENERIC_PERCPU_H_ */
+diff -puN include/linux/percpu-defs.h~alpha-fix-percpu-build-breakage include/linux/percpu-defs.h
+--- a/include/linux/percpu-defs.h~alpha-fix-percpu-build-breakage
++++ a/include/linux/percpu-defs.h
+@@ -24,7 +24,8 @@
+ 
+ #define DEFINE_PER_CPU_SECTION(type, name, section)			\
+ 	__attribute__((__section__(PER_CPU_BASE_SECTION section)))	\
+-	PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name
++	PER_CPU_ATTRIBUTES PER_CPU_DEF_ATTRIBUTES			\
++	__typeof__(type) per_cpu__##name
+ 
+ /*
+  * Variant on the per-CPU variable declaration/definition theme used for
+_

Modified: dists/sid/linux-2.6/debian/patches/series/2
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/2	Sun Jul  5 21:27:43 2009	(r13880)
+++ dists/sid/linux-2.6/debian/patches/series/2	Sun Jul  5 21:39:10 2009	(r13881)
@@ -1,2 +1,3 @@
 - bugfix/all/0001-xfs-fix-freeing-memory-in-xfs_getbmap.patch
 + bugfix/all/stable/2.6.30.1.patch
++ bugfix/all/alpha-fix-percpu-build-breakage.patch



More information about the Kernel-svn-changes mailing list