Skip to contentSkip to conversation

ia64: minor Makefile simplification through use of cc-ifversion

PATCH In review Frans Pop 4 participants 6 messages Jul 23, 2009 – Jul 24, 2009 Kbuild

lore
Share & tools
lore

Frans Pop

author
#0 lore raw

PATCH 1/1 ia64: minor Makefile simplification through use of cc-ifversion

---

Change was suggested by Sam Ravnborg; see http://lkml.org/lkml/2009/7/18/15.
Untested.

arch/ia64/Makefile +2 -4
index 58a7e46..2bf6107 100644
@@ -41,10 +41,8 @@ $(error Sorry, you need a newer version of the assember, one that is built from
 		ftp://ftp.hpl.hp.com/pub/linux-ia64/gas-030124.tar.gz)
 endif
 
-ifeq ($(call cc-version),0304)
-	cflags-$(CONFIG_ITANIUM)	+= -mtune=merced
-	cflags-$(CONFIG_MCKINLEY)	+= -mtune=mckinley
-endif
+cflags-$(CONFIG_ITANIUM)  += $(call cc-ifversion, -eq, 0304, -mtune=merced)
+cflags-$(CONFIG_MCKINLEY) += $(call cc-ifversion, -eq, 0304, -mtune=mckinley)
 
 KBUILD_CFLAGS += $(cflags-y)
 head-y := arch/ia64/kernel/head.o arch/ia64/kernel/init_task.o
Acked-by on v1 1/1
#1 lore raw
Quoted 11 lines · Frans Pop

---

Change was suggested by Sam Ravnborg; see http://lkml.org/lkml/2009/7/18/15.
Untested.

arch/ia64/Makefile +0 -0
index 58a7e46..2bf6107 100644

arch/ia64/Makefile $(error Sorry, you need a newer version of the assember, one that is built from · line 45

Quoted 9 lines
arch/ia64/Makefile +2 -4
@@ -41,10 +41,8 @@ $(error Sorry, you need a newer version of the assember, one that is built from
 		ftp://ftp.hpl.hp.com/pub/linux-ia64/gas-030124.tar.gz)
 endif
 
-ifeq ($(call cc-version),0304)
-	cflags-$(CONFIG_ITANIUM)	+= -mtune=merced
-	cflags-$(CONFIG_MCKINLEY)	+= -mtune=mckinley
-endif
+cflags-$(CONFIG_ITANIUM)  += $(call cc-ifversion, -eq, 0304, -mtune=merced)
+cflags-$(CONFIG_MCKINLEY) += $(call cc-ifversion, -eq, 0304, -mtune=mckinley)

The above change is correct.
But I really wonder if the original code was correct?
Do we really only want to use the -mtune options for this specific gcc version? If this is indeed the case this deserves a comment explaning this.

So the patch has my:

But the code that this patch highligt (but does not chage) looks questionable.

Sam

#2 lore raw
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Sam" == Sam Ravnborg <[email protected]> writes:

Sam> On Thu, Jul 23, 2009 at 08:56:50PM +0200, Frans Pop wrote:

Sam> The above change is correct. But I really wonder if the original Sam> code was correct? Do we really only want to use the -mtune Sam> options for this specific gcc version? If this is indeed the Sam> case this deserves a comment explaning this.

I suspect it should be all compilers after this one. -mtune=mckinley didn't work very well in the early gcc 3 compilers and didn't exist in version 2.
--
Dr Peter Chubb http://www.gelato.unsw.edu.au [email protected]
http://www.ertos.nicta.com.au ERTOS within National ICT Australia

author
#3 lore raw
Quoted 9 lines · Peter Chubb
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Sam" = Sam Ravnborg <[email protected]> writes:

Sam> The above change is correct. But I really wonder if the original Sam> code was correct? Do we really only want to use the -mtune Sam> options for this specific gcc version? If this is indeed the Sam> case this deserves a comment explaning this.

I suspect it should be all compilers after this one. -mtune=mckinley didn't work very well in the early gcc 3 compilers and didn't exist in version 2.

How would you like to handle that? As it is essentially a separate issue, my suggestion would be: apply my patch as is and then (if needed) commit a separate patch to fix the incorrect comparisons on top.

Cheers,
FJP

#4 lore raw
Quoted 7 lines · Frans Pop
Quoted 6 lines · Peter Chubb
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Sam" = Sam Ravnborg <[email protected]> writes:

Sam> The above change is correct. But I really wonder if the original Sam> code was correct? Do we really only want to use the -mtune Sam> options for this specific gcc version? If this is indeed the Sam> case this deserves a comment explaning this.

Quoted 7 lines
Quoted 3 lines

I suspect it should be all compilers after this one. -mtune=mckinley didn't work very well in the early gcc 3 compilers and didn't exist in version 2.

How would you like to handle that? As it is essentially a separate issue, my suggestion would be: apply my patch as is and then (if needed) commit a separate patch to fix the incorrect comparisons on top.

Between GCC version 3.4.0 and 4.3.3 (including 3.4.0 and 4.3.3), -mtune=merced is implemented in GCC. Starting from 4.4.0, -mtune=merced is deprecated.

Even implemented in versions between 3.4.0 and 4.3.3, the -mtune=merced feature has been broken in some of the versions. For example, GCC 4.1.2 reports interanl tuning function errors during kernel building with -mtune=merced. Or GCC Bugzilla 16130 reports another -mtune=merced issue on GCC 3.4.1.

So I would remove the -mtune=merced from IA64 kernel build. Without this option, kernel on Merced will remain the same except losing an unstable and out-of-date performance tunning feature.

Since GCC version 3.4.0, -mtune=mckinley has been implemented. The -mtune=mckinley option functions the same as mtune=itanium2. And mtune=itanium2 is the default option. So we don't need to add mtune=mckinley either since its been the default option in any GCC version which implements this option.

---
 arch/ia64/Makefile |    5 -----
 1 files changed, 5 deletions(-)
arch/ia64/Makefile +0 -5
index 58a7e46..e7cbaa0 100644
@@ -41,11 +41,6 @@ $(error Sorry, you need a newer version of the assember, one that is built from
 		ftp://ftp.hpl.hp.com/pub/linux-ia64/gas-030124.tar.gz)
 endif
 
-ifeq ($(call cc-version),0304)
-	cflags-$(CONFIG_ITANIUM)	+= -mtune=merced
-	cflags-$(CONFIG_MCKINLEY)	+= -mtune=mckinley
-endif
-
 KBUILD_CFLAGS += $(cflags-y)
 head-y := arch/ia64/kernel/head.o arch/ia64/kernel/init_task.o
 
author
#5 lore raw
Quoted 14 lines · Fenghua Yu

Between GCC version 3.4.0 and 4.3.3 (including 3.4.0 and 4.3.3), -mtune=merced is implemented in GCC. Starting from 4.4.0, -mtune=merced is deprecated.

Even implemented in versions between 3.4.0 and 4.3.3, the -mtune=merced feature has been broken in some of the versions. For example, GCC 4.1.2 reports interanl tuning function errors during kernel building with -mtune=merced. Or GCC Bugzilla 16130 reports another -mtune=merced issue on GCC 3.4.1.

So I would remove the -mtune=merced from IA64 kernel build. Without this option, kernel on Merced will remain the same except losing an unstable and out-of-date performance tunning feature.

Quoted 7 lines

Since GCC version 3.4.0, -mtune=mckinley has been implemented. The -mtune=mckinley option functions the same as mtune=itanium2. And mtune=itanium2 is the default option. So we don't need to add mtune=mckinley either since its been the default option in any GCC version which implements this option.

Fine by me, but you'll probably want to give the commit a different subject :-)