login
Header Space

 
 

Re: [patch 04/14] ia64: Remove the __SMALL_ADDR_AREA attribute for per cpu access

Previous thread: [patch 01/14] Modules: Handle symbols that have a zero value by Christoph Lameter on Monday, November 26, 2007 - 8:14 pm. (1 message)

Next thread: [patch 03/14] Modules: Fold percpu_modcopy into module.c and get rid of the macro from hell by Christoph Lameter on Monday, November 26, 2007 - 8:14 pm. (1 message)
To: <akpm@...>
Cc: <linux-kernel@...>, <linux-ia64@...>, <tony.luck@...>
Date: Monday, November 26, 2007 - 8:14 pm

The model(small) attribute is not supported by gcc 4.X. The tests
will always be negative today.

Cc: linux-ia64@vger.kernel.org
Cc: tony.luck@intel.com
Signed-off-by: Christoph Lameter &lt;clameter@sgi.com&gt;

---
 arch/ia64/scripts/check-model.c   |    1 -
 arch/ia64/scripts/toolchain-flags |    6 ------
 include/asm-ia64/percpu.h         |   12 +++---------
 3 files changed, 3 insertions(+), 16 deletions(-)

Index: linux-2.6/include/asm-ia64/percpu.h
===================================================================
--- linux-2.6.orig/include/asm-ia64/percpu.h	2007-11-22 15:55:47.634454755 -0800
+++ linux-2.6/include/asm-ia64/percpu.h	2007-11-22 15:56:15.974704716 -0800
@@ -15,24 +15,18 @@
 
 #include &lt;linux/threads.h&gt;
 
-#ifdef HAVE_MODEL_SMALL_ATTRIBUTE
-# define __SMALL_ADDR_AREA	__attribute__((__model__ (__small__)))
-#else
-# define __SMALL_ADDR_AREA
-#endif
-
 #define DECLARE_PER_CPU(type, name)				\
-	extern __SMALL_ADDR_AREA __typeof__(type) per_cpu__##name
+	extern __typeof__(type) per_cpu__##name
 
 /* Separate out the type, so (int[3], foo) works. */
 #define DEFINE_PER_CPU(type, name)				\
 	__attribute__((__section__(".data.percpu")))		\
-	__SMALL_ADDR_AREA __typeof__(type) per_cpu__##name
+	__typeof__(type) per_cpu__##name
 
 #ifdef CONFIG_SMP
 #define DEFINE_PER_CPU_SHARED_ALIGNED(type, name)			\
 	__attribute__((__section__(".data.percpu.shared_aligned")))	\
-	__SMALL_ADDR_AREA __typeof__(type) per_cpu__##name		\
+	__typeof__(type) per_cpu__##name				\
 	____cacheline_aligned_in_smp
 #else
 #define DEFINE_PER_CPU_SHARED_ALIGNED(type, name)	\
Index: linux-2.6/arch/ia64/scripts/check-model.c
===================================================================
--- linux-2.6.orig/arch/ia64/scripts/check-model.c	2007-11-22 15:56:40.890455063 -0800
+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-int __attribute__ ((__model__ (__small__))) x;
Index: linux-2.6/arch/ia64/scripts/toolchain-flags
==================================...
To: Christoph Lameter <clameter@...>
Cc: <akpm@...>, <linux-kernel@...>, <linux-ia64@...>, <tony.luck@...>
Date: Tuesday, November 27, 2007 - 5:30 am

Which gcc 4.X are you talking about?

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."
-
To: Andreas Schwab <schwab@...>
Cc: <akpm@...>, <linux-kernel@...>, <linux-ia64@...>, <tony.luck@...>
Date: Tuesday, November 27, 2007 - 2:17 pm

All. Last gcc that supported this was 3.4.

-
To: Christoph Lameter <clameter@...>
Cc: <akpm@...>, <linux-kernel@...>, <linux-ia64@...>, <tony.luck@...>
Date: Tuesday, November 27, 2007 - 5:24 pm

Strange.  Works fine here.

$ arch/ia64/scripts/toolchain-flags gcc objdump readelf
-DHAVE_WORKING_TEXT_ALIGN -DHAVE_MODEL_SMALL_ATTRIBUTE -DHAVE_SERIALIZE_DIRECTIVE
$ gcc --version | head -n 1
gcc (GCC) 4.2.1 (SUSE Linux)
$ grep ia64_handle_model_attribute config/ia64/*.c
config/ia64/ia64.c:static tree ia64_handle_model_attribute (tree *, tree, tree, int, bool *);
config/ia64/ia64.c:  { "model",	       1, 1, true, false, false, ia64_handle_model_attribute },
config/ia64/ia64.c:ia64_handle_model_attribute (tree *node, tree name, tree args,
$ grep small_addr_symbolic_operand config/ia64/*.md
config/ia64/constraints.md:  (match_operand 0 "small_addr_symbolic_operand"))
config/ia64/predicates.md:(define_predicate "small_addr_symbolic_operand" 

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."
-
To: Andreas Schwab <schwab@...>
Cc: <akpm@...>, <linux-kernel@...>, <linux-ia64@...>, <tony.luck@...>
Date: Tuesday, November 27, 2007 - 5:38 pm

Hmmm...

http://www.ohse.de/uwe/articles/gcc-attributes.html

says:

model (MODEL-NAME)
    Found in versions: 2.8-3.4

But true my compiler still takes it. Ok, I am going to add an option to 
add attributes to percpu definitions.

-
To: Christoph Lameter <clameter@...>
Cc: Andreas Schwab <schwab@...>, <akpm@...>, <linux-kernel@...>, <linux-ia64@...>, <tony.luck@...>
Date: Tuesday, November 27, 2007 - 6:14 pm

This site says at the top it used gcc versions up to 3.4, so it 
obviously can't find anything in gcc &gt;= 4.0 ...

cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed

-
To: Christoph Lameter <clameter@...>
Cc: <akpm@...>, <linux-kernel@...>, <linux-ia64@...>, <tony.luck@...>
Date: Tuesday, November 27, 2007 - 1:20 am

What was the rationale for removing this attribute?

  --david
-
To: David Mosberger-Tang <dmosberger@...>
Cc: <akpm@...>, <linux-kernel@...>, <linux-ia64@...>, <tony.luck@...>
Date: Tuesday, November 27, 2007 - 2:15 pm

The code is then similar across all architectures and can be moved into 
generic code.

-
To: Christoph Lameter <clameter@...>
Cc: <akpm@...>, <linux-kernel@...>, <linux-ia64@...>, <tony.luck@...>
Date: Tuesday, November 27, 2007 - 5:10 pm

Uniformity for the sake of uniformity?  The small data addressing is
really elegant and I don't think it should be dropped just for the
sake of uniformity.

  --david
-
To: David Mosberger-Tang <dmosberger@...>
Cc: <akpm@...>, <linux-kernel@...>, <linux-ia64@...>, <tony.luck@...>
Date: Tuesday, November 27, 2007 - 5:18 pm

Uniformity for the sake of code size reduction and easier maintenance. 

Yes I think it would be great to have this feature on all arches if 
possible. If someone could work with the gcc /linker folks to get this 
done that would be great.

But the feature has been removed from gcc and so its not usable for IA64 
with a current compiler anymore. This is basically removing useless code.


-
To: Christoph Lameter <clameter@...>
Cc: <akpm@...>, <linux-kernel@...>, <linux-ia64@...>, <tony.luck@...>
Date: Tuesday, November 27, 2007 - 5:27 pm

Code-size reduction?  You must be talking *source* code size
reduction.  Surely the small-data access-method decreases object code
size.

  --david
-
To: David Mosberger-Tang <dmosberger@...>
Cc: <akpm@...>, <linux-kernel@...>, <linux-ia64@...>, <tony.luck@...>
Date: Tuesday, November 27, 2007 - 6:02 pm

Yes source code reduction. I just added the attribute back but in such a 
way that any arch can add attributes to per cpu definitions.

-
Previous thread: [patch 01/14] Modules: Handle symbols that have a zero value by Christoph Lameter on Monday, November 26, 2007 - 8:14 pm. (1 message)

Next thread: [patch 03/14] Modules: Fold percpu_modcopy into module.c and get rid of the macro from hell by Christoph Lameter on Monday, November 26, 2007 - 8:14 pm. (1 message)
speck-geostationary