public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Build breakage ...
@ 2006-11-26 22:49 Ralf Baechle
  2006-11-26 23:05 ` Russell King
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Ralf Baechle @ 2006-11-26 22:49 UTC (permalink / raw)
  To: Linus Torvalds, linux-kernel; +Cc: Alexey Dobriyan

ee3ce191e8eaa4cc15c51a28b34143b36404c4f5 breaks MIPS completely:

In file included from include/linux/bitops.h:9,
                 from include/linux/thread_info.h:20,
                 from include/linux/preempt.h:9,
                 from include/linux/spinlock.h:49,
                 from include/linux/capability.h:45,
                 from include/linux/sched.h:46,
                 from arch/mips/kernel/asm-offsets.c:13:
include/asm/bitops.h: In function ‘set_bit’:
include/asm/bitops.h:100: warning: implicit declaration of function ‘BUILD_BUG_ON’
include/asm/bitops.h:100: warning: implicit declaration of function ‘typecheck’
include/asm/bitops.h:100: error: expected expression before ‘unsigned’
include/asm/bitops.h:102: error: expected expression before ‘unsigned’
include/asm/bitops.h: In function ‘clear_bit’:
include/asm/bitops.h:148: error: expected expression before ‘unsigned’
include/asm/bitops.h:150: error: expected expression before ‘unsigned’
include/asm/bitops.h: In function ‘change_bit’:
include/asm/bitops.h:198: error: expected expression before ‘unsigned’
include/asm/bitops.h:200: error: expected expression before ‘unsigned’

That sort of patches really should go to /dev/null so short before a release.

  Ralf

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Build breakage ...
  2006-11-26 22:49 Build breakage Ralf Baechle
@ 2006-11-26 23:05 ` Russell King
  2006-11-26 23:09   ` Russell King
  2006-11-26 23:06 ` Linus Torvalds
  2006-11-26 23:47 ` Kyle McMartin
  2 siblings, 1 reply; 13+ messages in thread
From: Russell King @ 2006-11-26 23:05 UTC (permalink / raw)
  To: Linus Torvalds, linux-kernel, Alexey Dobriyan

On Sun, Nov 26, 2006 at 10:49:28PM +0000, Ralf Baechle wrote:
> ee3ce191e8eaa4cc15c51a28b34143b36404c4f5 breaks MIPS completely:
> 
> In file included from include/linux/bitops.h:9,
>                  from include/linux/thread_info.h:20,
>                  from include/linux/preempt.h:9,
>                  from include/linux/spinlock.h:49,
>                  from include/linux/capability.h:45,
>                  from include/linux/sched.h:46,
>                  from arch/mips/kernel/asm-offsets.c:13:
> include/asm/bitops.h: In function ???set_bit???:
> include/asm/bitops.h:100: warning: implicit declaration of function ???BUILD_BUG_ON???
> include/asm/bitops.h:100: warning: implicit declaration of function ???typecheck???
> include/asm/bitops.h:100: error: expected expression before ???unsigned???
> include/asm/bitops.h:102: error: expected expression before ???unsigned???
> include/asm/bitops.h: In function ???clear_bit???:
> include/asm/bitops.h:148: error: expected expression before ???unsigned???
> include/asm/bitops.h:150: error: expected expression before ???unsigned???
> include/asm/bitops.h: In function ???change_bit???:
> include/asm/bitops.h:198: error: expected expression before ???unsigned???
> include/asm/bitops.h:200: error: expected expression before ???unsigned???
> 
> That sort of patches really should go to /dev/null so short before a release.

Ditto on ARM.  This level of breakage is simply not acceptable soo
close to a release, and needs the change reverting.

Note that on ARM, "allmodconfig" is really meaningless since it only
tests one configuration.  Ditto for the other all*config options.
kautobuild (or building a range of defconfigs) is the only real way
to check for breakage on ARM.

arch/arm/mach-sa1100/leds-assabet.c:34: warning: implicit declaration of function 'BUILD_BUG_ON'
arch/arm/mach-sa1100/leds-assabet.c:34: warning: implicit declaration of function 'typecheck'
arch/arm/mach-sa1100/leds-assabet.c:34: error: syntax error before 'unsigned'
arch/arm/mach-sa1100/leds-assabet.c:113: error: syntax error before 'unsigned'
arch/arm/mach-sa1100/leds-cerf.c:31: warning: implicit declaration of function 'BUILD_BUG_ON'
arch/arm/mach-sa1100/leds-cerf.c:31: warning: implicit declaration of function 'typecheck'
arch/arm/mach-sa1100/leds-cerf.c:31: error: syntax error before 'unsigned'
arch/arm/mach-sa1100/leds-cerf.c:109: error: syntax error before 'unsigned'
arch/arm/mach-sa1100/leds-hackkit.c:35: warning: implicit declaration of function 'BUILD_BUG_ON'
arch/arm/mach-sa1100/leds-hackkit.c:35: warning: implicit declaration of function 'typecheck'
arch/arm/mach-sa1100/leds-hackkit.c:35: error: syntax error before 'unsigned'
arch/arm/mach-sa1100/leds-hackkit.c:111: error: syntax error before 'unsigned'
arch/arm/mach-sa1100/leds-lart.c:34: warning: implicit declaration of function 'BUILD_BUG_ON'
arch/arm/mach-sa1100/leds-lart.c:34: warning: implicit declaration of function 'typecheck'
arch/arm/mach-sa1100/leds-lart.c:34: error: syntax error before 'unsigned'
arch/arm/mach-sa1100/leds-lart.c:100: error: syntax error before 'unsigned'
arch/arm/mach-pxa/leds-idp.c:36: warning: implicit declaration of function 'BUILD_BUG_ON'
arch/arm/mach-pxa/leds-idp.c:36: warning: implicit declaration of function 'typecheck'
arch/arm/mach-pxa/leds-idp.c:36: error: syntax error before 'unsigned'
arch/arm/mach-pxa/leds-idp.c:115: error: syntax error before 'unsigned'
arch/arm/mach-pxa/leds-lubbock.c:50: warning: implicit declaration of function 'BUILD_BUG_ON'
arch/arm/mach-pxa/leds-lubbock.c:50: warning: implicit declaration of function 'typecheck'
arch/arm/mach-pxa/leds-lubbock.c:50: error: syntax error before 'unsigned'
arch/arm/mach-pxa/leds-lubbock.c:124: error: syntax error before 'unsigned'
arch/arm/mach-pxa/leds-mainstone.c:45: warning: implicit declaration of function 'BUILD_BUG_ON'
arch/arm/mach-pxa/leds-mainstone.c:45: warning: implicit declaration of function 'typecheck'
arch/arm/mach-pxa/leds-mainstone.c:45: error: syntax error before 'unsigned'
arch/arm/mach-pxa/leds-mainstone.c:119: error: syntax error before 'unsigned'
arch/arm/mach-pxa/leds-trizeps4.c:39: warning: implicit declaration of function 'BUILD_BUG_ON'
arch/arm/mach-pxa/leds-trizeps4.c:39: warning: implicit declaration of function 'typecheck'
arch/arm/mach-pxa/leds-trizeps4.c:39: error: syntax error before 'unsigned'
arch/arm/mach-pxa/leds-trizeps4.c:132: error: syntax error before 'unsigned'


-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Build breakage ...
  2006-11-26 22:49 Build breakage Ralf Baechle
  2006-11-26 23:05 ` Russell King
@ 2006-11-26 23:06 ` Linus Torvalds
  2006-11-26 23:12   ` Linus Torvalds
  2006-11-27  0:08   ` Ralf Baechle
  2006-11-26 23:47 ` Kyle McMartin
  2 siblings, 2 replies; 13+ messages in thread
From: Linus Torvalds @ 2006-11-26 23:06 UTC (permalink / raw)
  To: Ralf Baechle; +Cc: Linux Kernel Mailing List, Alexey Dobriyan



On Sun, 26 Nov 2006, Ralf Baechle wrote:
> 
> That sort of patches really should go to /dev/null so short before a release.

Yeah, I don't think it was worth it.

That said, Alexey did check it more than most patches like this get 
checked (ie checking allmodconfig on i386, x86_64, alpha, arm), so it's a 
bit unlucky that MIPS got bitten by this - it was not a badly tested 
patch per se.

Does the obvious fix (to include <linux/kernel.h> in irqflags.h) fix it 
for you?

		Linus

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Build breakage ...
  2006-11-26 23:05 ` Russell King
@ 2006-11-26 23:09   ` Russell King
  0 siblings, 0 replies; 13+ messages in thread
From: Russell King @ 2006-11-26 23:09 UTC (permalink / raw)
  To: Linus Torvalds, linux-kernel, Alexey Dobriyan

On Sun, Nov 26, 2006 at 11:05:16PM +0000, Russell King wrote:
> Ditto on ARM.  This level of breakage is simply not acceptable soo
> close to a release, and needs the change reverting.
> 
> Note that on ARM, "allmodconfig" is really meaningless since it only
> tests one configuration.  Ditto for the other all*config options.
> kautobuild (or building a range of defconfigs) is the only real way
> to check for breakage on ARM.

BTW, it should be pointed out that ARM has for the last I don't know
how many months been checking the type of "flags" passed into
local_irq_save() and friends...  If a generic solution is adopted
(during the merge phase _only_ please) then the ARM specific version
should probably be removed.

-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Build breakage ...
  2006-11-26 23:06 ` Linus Torvalds
@ 2006-11-26 23:12   ` Linus Torvalds
  2006-11-26 23:21     ` Russell King
  2006-11-27  0:08   ` Ralf Baechle
  1 sibling, 1 reply; 13+ messages in thread
From: Linus Torvalds @ 2006-11-26 23:12 UTC (permalink / raw)
  To: Ralf Baechle, Russell King; +Cc: Linux Kernel Mailing List, Alexey Dobriyan



On Sun, 26 Nov 2006, Linus Torvalds wrote:
> 
> Does the obvious fix (to include <linux/kernel.h> in irqflags.h) fix it 
> for you?

Btw, Alexey, why did you do _both a BUILD_BUG_ON and a "typecheck()"?

If there are any broken users, we shouldn't break the build, but a 
_warning_ is certainly appropriate.

I think I'll just commit this..

Ralf, Russell, does this work for you guys?

		Linus
---
diff --git a/include/linux/irqflags.h b/include/linux/irqflags.h
index 4fe740b..8c5d9d1 100644
--- a/include/linux/irqflags.h
+++ b/include/linux/irqflags.h
@@ -11,11 +11,10 @@
 #ifndef _LINUX_TRACE_IRQFLAGS_H
 #define _LINUX_TRACE_IRQFLAGS_H
 
-#define BUILD_CHECK_IRQ_FLAGS(flags)					\
-	do {								\
-		BUILD_BUG_ON(sizeof(flags) != sizeof(unsigned long));	\
-		typecheck(unsigned long, flags);			\
-	} while (0)
+#include <linux/kernel.h>
+
+#define BUILD_CHECK_IRQ_FLAGS(flags) \
+	typecheck(unsigned long, flags)
 
 #ifdef CONFIG_TRACE_IRQFLAGS
   extern void trace_hardirqs_on(void);

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: Build breakage ...
  2006-11-26 23:12   ` Linus Torvalds
@ 2006-11-26 23:21     ` Russell King
  2006-11-27  0:29       ` Linus Torvalds
  0 siblings, 1 reply; 13+ messages in thread
From: Russell King @ 2006-11-26 23:21 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Ralf Baechle, Linux Kernel Mailing List, Alexey Dobriyan

On Sun, Nov 26, 2006 at 03:12:54PM -0800, Linus Torvalds wrote:
> 
> 
> On Sun, 26 Nov 2006, Linus Torvalds wrote:
> > 
> > Does the obvious fix (to include <linux/kernel.h> in irqflags.h) fix it 
> > for you?
> 
> Btw, Alexey, why did you do _both a BUILD_BUG_ON and a "typecheck()"?
> 
> If there are any broken users, we shouldn't break the build, but a 
> _warning_ is certainly appropriate.
> 
> I think I'll just commit this..
> 
> Ralf, Russell, does this work for you guys?

Not at all.  It creates even more problems for me, with this circular
dependency:

  linux/bitops.h -> asm-arm/bitops.h -> asm-arm/system.h
   -> linux/irqflags.h -> linux/kernel.h -> linux/bitops.h

We really need, as a priority, to sort out these include files ASAP,
and stop bunging random stuff into unrelated random headers.  Shouldn't
stuff like roundup_pow_of_two() and long_log2() live somewhere else
other than such a generic run-of-the-mill include such as linux/kernel.h ?

  CHK     include/linux/version.h
make[2]: `include/asm-arm/mach-types.h' is up to date.
  Using /home/rmk/git/linux-2.6-rmk as source for kernel
  GEN     /home/rmk/git/build/assabet/Makefile
  CHK     include/linux/utsrelease.h
  CC      arch/arm/kernel/asm-offsets.s
In file included from /home/rmk/git/linux-2.6-rmk/include/linux/irqflags.h:14,
                 from include2/asm/system.h:214,
                 from include2/asm/bitops.h:23,
                 from /home/rmk/git/linux-2.6-rmk/include/linux/bitops.h:9,
                 from /home/rmk/git/linux-2.6-rmk/include/linux/thread_info.h:20,
                 from /home/rmk/git/linux-2.6-rmk/include/linux/preempt.h:9,
                 from /home/rmk/git/linux-2.6-rmk/include/linux/spinlock.h:49,
                 from /home/rmk/git/linux-2.6-rmk/include/linux/capability.h:45,
                 from /home/rmk/git/linux-2.6-rmk/include/linux/sched.h:46,
                 from /home/rmk/git/linux-2.6-rmk/arch/arm/kernel/asm-offsets.c:13:
/home/rmk/git/linux-2.6-rmk/include/linux/kernel.h: In function `roundup_pow_of_two':
/home/rmk/git/linux-2.6-rmk/include/linux/kernel.h:169: warning: implicit declaration of function `fls_long'
In file included from /home/rmk/git/linux-2.6-rmk/include/linux/thread_info.h:20,
                 from /home/rmk/git/linux-2.6-rmk/include/linux/preempt.h:9,
                 from /home/rmk/git/linux-2.6-rmk/include/linux/spinlock.h:49,
                 from /home/rmk/git/linux-2.6-rmk/include/linux/capability.h:45,
                 from /home/rmk/git/linux-2.6-rmk/include/linux/sched.h:46,
                 from /home/rmk/git/linux-2.6-rmk/arch/arm/kernel/asm-offsets.c:13:
/home/rmk/git/linux-2.6-rmk/include/linux/bitops.h: At top level:
/home/rmk/git/linux-2.6-rmk/include/linux/bitops.h:57: error: conflicting types for 'fls_long'
/home/rmk/git/linux-2.6-rmk/include/linux/kernel.h:169: error: previous implicit declaration of 'fls_long' was here
make[2]: *** [arch/arm/kernel/asm-offsets.s] Error 1
make[1]: *** [prepare0] Error 2
make: *** [_all] Error 2

-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Build breakage ...
  2006-11-26 22:49 Build breakage Ralf Baechle
  2006-11-26 23:05 ` Russell King
  2006-11-26 23:06 ` Linus Torvalds
@ 2006-11-26 23:47 ` Kyle McMartin
  2006-11-26 23:56   ` [PARISC] Fix incorrent type of flags in <asm/semaphore.h> Kyle McMartin
  2 siblings, 1 reply; 13+ messages in thread
From: Kyle McMartin @ 2006-11-26 23:47 UTC (permalink / raw)
  To: Ralf Baechle; +Cc: Linus Torvalds, linux-kernel, Alexey Dobriyan

On Sun, Nov 26, 2006 at 10:49:28PM +0000, Ralf Baechle wrote:
> ee3ce191e8eaa4cc15c51a28b34143b36404c4f5 breaks MIPS completely:
> 

Ack on parisc.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PARISC] Fix incorrent type of flags in <asm/semaphore.h>
  2006-11-26 23:47 ` Kyle McMartin
@ 2006-11-26 23:56   ` Kyle McMartin
  0 siblings, 0 replies; 13+ messages in thread
From: Kyle McMartin @ 2006-11-26 23:56 UTC (permalink / raw)
  To: Kyle McMartin; +Cc: Ralf Baechle, Linus Torvalds, linux-kernel, Alexey Dobriyan

I still think using BUILD_BUG_ON() is unacceptable, especially given how
vague the error message was.

Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
---
diff --git a/include/asm-parisc/semaphore.h b/include/asm-parisc/semaphore.h
index c9ee41c..d45827a 100644
--- a/include/asm-parisc/semaphore.h
+++ b/include/asm-parisc/semaphore.h
@@ -115,7 +115,8 @@ extern __inline__ int down_interruptible
  */
 extern __inline__ int down_trylock(struct semaphore * sem)
 {
-	int flags, count;
+	unsigned long flags;
+	int count;
 
 	spin_lock_irqsave(&sem->sentry, flags);
 	count = sem->count - 1;
@@ -131,7 +132,8 @@ extern __inline__ int down_trylock(struc
  */
 extern __inline__ void up(struct semaphore * sem)
 {
-	int flags;
+	unsigned long flags;
+
 	spin_lock_irqsave(&sem->sentry, flags);
 	if (sem->count < 0) {
 		__up(sem);

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: Build breakage ...
  2006-11-26 23:06 ` Linus Torvalds
  2006-11-26 23:12   ` Linus Torvalds
@ 2006-11-27  0:08   ` Ralf Baechle
  1 sibling, 0 replies; 13+ messages in thread
From: Ralf Baechle @ 2006-11-27  0:08 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Linux Kernel Mailing List, Alexey Dobriyan

On Sun, Nov 26, 2006 at 03:06:10PM -0800, Linus Torvalds wrote:

> That said, Alexey did check it more than most patches like this get 
> checked (ie checking allmodconfig on i386, x86_64, alpha, arm), so it's a 
> bit unlucky that MIPS got bitten by this - it was not a badly tested 
> patch per se.
> 
> Does the obvious fix (to include <linux/kernel.h> in irqflags.h) fix it 
> for you?

It changes the sympthoms:

  CC      arch/mips/kernel/asm-offsets.s
In file included from include/linux/irqflags.h:14,
                 from include/asm/bitops.h:34,
                 from include/linux/bitops.h:9,
                 from include/linux/thread_info.h:20,
                 from include/linux/preempt.h:9,
                 from include/linux/spinlock.h:49,
                 from include/linux/capability.h:45,
                 from include/linux/sched.h:46,
                 from arch/mips/kernel/asm-offsets.c:13:
include/linux/kernel.h: In function ‘roundup_pow_of_two’:
include/linux/kernel.h:169: warning: implicit declaration of function ‘fls_long’
In file included from include/linux/thread_info.h:20,
                 from include/linux/preempt.h:9,
                 from include/linux/spinlock.h:49,
                 from include/linux/capability.h:45,
                 from include/linux/sched.h:46,
                 from arch/mips/kernel/asm-offsets.c:13:
include/linux/bitops.h: At top level:
include/linux/bitops.h:57: error: conflicting types for ‘fls_long’
include/linux/kernel.h:169: error: previous implicit declaration of ‘fls_long’ was here

So the new problem is circular includes:

   ... <linux/bitops.h> -> <asm/bitops.h> -> <linux/irqflags.h> ->
  <linux/kernel.h> -> <linux/bitops.h> ...

include/asm-mips/bitops.h needs to include irqflags because some older
MIPS variants do not have any atomic instructions.  So the fix needs to
to break that loop.

  Ralf

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Build breakage ...
  2006-11-26 23:21     ` Russell King
@ 2006-11-27  0:29       ` Linus Torvalds
  2006-11-27  0:41         ` Russell King
  2006-11-27 16:43         ` Ralf Baechle
  0 siblings, 2 replies; 13+ messages in thread
From: Linus Torvalds @ 2006-11-27  0:29 UTC (permalink / raw)
  To: Russell King, Kyle McMartin
  Cc: Ralf Baechle, Linux Kernel Mailing List, Alexey Dobriyan



On Sun, 26 Nov 2006, Russell King wrote:
> > 
> > Ralf, Russell, does this work for you guys?
> 
> Not at all.  It creates even more problems for me, with this circular
> dependency:

Ok. I just reverted it then. 

Pls verify that this is all good, and I didn't mess anything up due to the 
manual conflict resolution.

		Linus

---
commit b8e6ec865fd1d8838b6ce9516977b65e9f08f876
Author: Linus Torvalds <torvalds@woody.osdl.org>
Date:   Sun Nov 26 16:27:17 2006 -0800

    Revert "[PATCH] Enforce "unsigned long flags;" when spinlocking"
    
    This reverts commit ee3ce191e8eaa4cc15c51a28b34143b36404c4f5, since it
    broke on at least ARM, MIPS and PA-RISC due to complicated header file
    dependencies.
    
    Conflicts in include/linux/spinlock.h (due to the "nested" variety
    fixes) fixed up by hand.
    
    Cc: Alexey Dobriyan <adobriyan@gmail.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Kyle McMartin <kyle@parisc-linux.org>
    Cc: Russell King <rmk+lkml@arm.linux.org.uk>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>

diff --git a/include/linux/irqflags.h b/include/linux/irqflags.h
index 4fe740b..412e025 100644
--- a/include/linux/irqflags.h
+++ b/include/linux/irqflags.h
@@ -11,12 +11,6 @@
 #ifndef _LINUX_TRACE_IRQFLAGS_H
 #define _LINUX_TRACE_IRQFLAGS_H
 
-#define BUILD_CHECK_IRQ_FLAGS(flags)					\
-	do {								\
-		BUILD_BUG_ON(sizeof(flags) != sizeof(unsigned long));	\
-		typecheck(unsigned long, flags);			\
-	} while (0)
-
 #ifdef CONFIG_TRACE_IRQFLAGS
   extern void trace_hardirqs_on(void);
   extern void trace_hardirqs_off(void);
@@ -56,15 +50,10 @@
 #define local_irq_disable() \
 	do { raw_local_irq_disable(); trace_hardirqs_off(); } while (0)
 #define local_irq_save(flags) \
-	do {					\
-		BUILD_CHECK_IRQ_FLAGS(flags);	\
-		raw_local_irq_save(flags);	\
-		trace_hardirqs_off();		\
-	} while (0)
+	do { raw_local_irq_save(flags); trace_hardirqs_off(); } while (0)
 
 #define local_irq_restore(flags)				\
 	do {							\
-		BUILD_CHECK_IRQ_FLAGS(flags);			\
 		if (raw_irqs_disabled_flags(flags)) {		\
 			raw_local_irq_restore(flags);		\
 			trace_hardirqs_off();			\
@@ -80,16 +69,8 @@
  */
 # define raw_local_irq_disable()	local_irq_disable()
 # define raw_local_irq_enable()		local_irq_enable()
-# define raw_local_irq_save(flags)		\
-	do {					\
-		BUILD_CHECK_IRQ_FLAGS(flags);	\
-		local_irq_save(flags);		\
-	} while (0)
-# define raw_local_irq_restore(flags)		\
-	do {					\
-		BUILD_CHECK_IRQ_FLAGS(flags);	\
-		local_irq_restore(flags);	\
-	} while (0)
+# define raw_local_irq_save(flags)	local_irq_save(flags)
+# define raw_local_irq_restore(flags)	local_irq_restore(flags)
 #endif /* CONFIG_TRACE_IRQFLAGS_SUPPORT */
 
 #ifdef CONFIG_TRACE_IRQFLAGS_SUPPORT
@@ -99,11 +80,7 @@
 		raw_safe_halt();				\
 	} while (0)
 
-#define local_save_flags(flags)			\
-	do {					\
-		BUILD_CHECK_IRQ_FLAGS(flags);	\
-		raw_local_save_flags(flags);	\
-	} while (0)
+#define local_save_flags(flags)		raw_local_save_flags(flags)
 
 #define irqs_disabled()						\
 ({								\
@@ -113,11 +90,7 @@
 	raw_irqs_disabled_flags(flags);				\
 })
 
-#define irqs_disabled_flags(flags)	\
-({					\
-	BUILD_CHECK_IRQ_FLAGS(flags);	\
-	raw_irqs_disabled_flags(flags);	\
-})
+#define irqs_disabled_flags(flags)	raw_irqs_disabled_flags(flags)
 #endif		/* CONFIG_X86 */
 
 #endif
diff --git a/include/linux/spinlock.h b/include/linux/spinlock.h
index 57f670d..8451052 100644
--- a/include/linux/spinlock.h
+++ b/include/linux/spinlock.h
@@ -52,7 +52,6 @@
 #include <linux/thread_info.h>
 #include <linux/kernel.h>
 #include <linux/stringify.h>
-#include <linux/irqflags.h>
 
 #include <asm/system.h>
 
@@ -184,52 +183,24 @@ do {								\
 #define read_lock(lock)			_read_lock(lock)
 
 #if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK)
-#define spin_lock_irqsave(lock, flags)			\
-	do {						\
-		BUILD_CHECK_IRQ_FLAGS(flags);		\
-		flags = _spin_lock_irqsave(lock);	\
-	} while (0)
-#define read_lock_irqsave(lock, flags)			\
-	do {						\
-		BUILD_CHECK_IRQ_FLAGS(flags);		\
-		flags = _read_lock_irqsave(lock);	\
-	} while (0)
-#define write_lock_irqsave(lock, flags)			\
-	do {						\
-		BUILD_CHECK_IRQ_FLAGS(flags);		\
-		flags = _write_lock_irqsave(lock);	\
-	} while (0)
+
+#define spin_lock_irqsave(lock, flags)	flags = _spin_lock_irqsave(lock)
+#define read_lock_irqsave(lock, flags)	flags = _read_lock_irqsave(lock)
+#define write_lock_irqsave(lock, flags)	flags = _write_lock_irqsave(lock)
 
 #ifdef CONFIG_DEBUG_LOCK_ALLOC
-#define spin_lock_irqsave_nested(lock, flags, subclass)			\
-	do {								\
-		BUILD_CHECK_IRQ_FLAGS(flags);				\
-		flags = _spin_lock_irqsave_nested(lock, subclass);	\
-	} while (0)
+#define spin_lock_irqsave_nested(lock, flags, subclass) \
+	flags = _spin_lock_irqsave_nested(lock, subclass)
 #else
-#define spin_lock_irqsave_nested(lock, flags, subclass)			\
-	do {								\
-		BUILD_CHECK_IRQ_FLAGS(flags);				\
-		flags = _spin_lock_irqsave(lock);			\
-	} while (0)
+#define spin_lock_irqsave_nested(lock, flags, subclass) \
+	flags = _spin_lock_irqsave(lock)
 #endif
 
 #else
-#define spin_lock_irqsave(lock, flags)			\
-	do {						\
-		BUILD_CHECK_IRQ_FLAGS(flags);		\
-		_spin_lock_irqsave(lock, flags);	\
-	} while (0)
-#define read_lock_irqsave(lock, flags)			\
-	do {						\
-		BUILD_CHECK_IRQ_FLAGS(flags);		\
-		_read_lock_irqsave(lock, flags);	\
-	} while (0)
-#define write_lock_irqsave(lock, flags)			\
-	do {						\
-		BUILD_CHECK_IRQ_FLAGS(flags);		\
-		_write_lock_irqsave(lock, flags);	\
-	} while (0)
+
+#define spin_lock_irqsave(lock, flags)	_spin_lock_irqsave(lock, flags)
+#define read_lock_irqsave(lock, flags)	_read_lock_irqsave(lock, flags)
+#define write_lock_irqsave(lock, flags)	_write_lock_irqsave(lock, flags)
 #define spin_lock_irqsave_nested(lock, flags, subclass)	\
 	spin_lock_irqsave(lock, flags)
 
@@ -268,24 +239,15 @@ do {								\
 #endif
 
 #define spin_unlock_irqrestore(lock, flags) \
-	do {						\
-		BUILD_CHECK_IRQ_FLAGS(flags);		\
-		_spin_unlock_irqrestore(lock, flags);	\
-	} while (0)
+					_spin_unlock_irqrestore(lock, flags)
 #define spin_unlock_bh(lock)		_spin_unlock_bh(lock)
 
 #define read_unlock_irqrestore(lock, flags) \
-	do {						\
-		BUILD_CHECK_IRQ_FLAGS(flags);		\
-		_read_unlock_irqrestore(lock, flags);	\
-	} while (0)
+					_read_unlock_irqrestore(lock, flags)
 #define read_unlock_bh(lock)		_read_unlock_bh(lock)
 
 #define write_unlock_irqrestore(lock, flags) \
-	do {						\
-		BUILD_CHECK_IRQ_FLAGS(flags);		\
-		_write_unlock_irqrestore(lock, flags);	\
-	} while (0)
+					_write_unlock_irqrestore(lock, flags)
 #define write_unlock_bh(lock)		_write_unlock_bh(lock)
 
 #define spin_trylock_bh(lock)	__cond_lock(lock, _spin_trylock_bh(lock))
@@ -299,7 +261,6 @@ do {								\
 
 #define spin_trylock_irqsave(lock, flags) \
 ({ \
-	BUILD_CHECK_IRQ_FLAGS(flags); \
 	local_irq_save(flags); \
 	spin_trylock(lock) ? \
 	1 : ({ local_irq_restore(flags); 0; }); \

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: Build breakage ...
  2006-11-27  0:29       ` Linus Torvalds
@ 2006-11-27  0:41         ` Russell King
  2006-11-27 16:43         ` Ralf Baechle
  1 sibling, 0 replies; 13+ messages in thread
From: Russell King @ 2006-11-27  0:41 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Kyle McMartin, Ralf Baechle, Linux Kernel Mailing List,
	Alexey Dobriyan

On Sun, Nov 26, 2006 at 04:29:00PM -0800, Linus Torvalds wrote:
> On Sun, 26 Nov 2006, Russell King wrote:
> > > 
> > > Ralf, Russell, does this work for you guys?
> > 
> > Not at all.  It creates even more problems for me, with this circular
> > dependency:
> 
> Ok. I just reverted it then. 
> 
> Pls verify that this is all good, and I didn't mess anything up due to the 
> manual conflict resolution.

That fixes the ARM assabet build, which should mean the other ARM builds
are also fixed.  Thanks.

-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Build breakage ...
  2006-11-27  0:29       ` Linus Torvalds
  2006-11-27  0:41         ` Russell King
@ 2006-11-27 16:43         ` Ralf Baechle
  2006-11-27 19:56           ` Alexey Dobriyan
  1 sibling, 1 reply; 13+ messages in thread
From: Ralf Baechle @ 2006-11-27 16:43 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Russell King, Kyle McMartin, Linux Kernel Mailing List,
	Alexey Dobriyan

On Sun, Nov 26, 2006 at 04:29:00PM -0800, Linus Torvalds wrote:

> > > Ralf, Russell, does this work for you guys?
> > 
> > Not at all.  It creates even more problems for me, with this circular
> > dependency:
> 
> Ok. I just reverted it then. 
> 
> Pls verify that this is all good, and I didn't mess anything up due to the 
> manual conflict resolution.

Thanks, 2ea5814472c3c910aed5c5b60f1f3b1000e353f1 builds again for MIPS.

If you deciede to put the patch back in after 2.6.19 I'm considering to
replace the local_irq_{save,restore} calls in the various atomic operations
in <asm/{atomic,bitops,system}.h with their raw_* equivalents.

What I dislike about Alexey's patch is that is finally tries to cast
unsigned long as the data type for the flags into stone.  The natural
data type to use on MIPS and several other architectures is a 32-bit
integer - or just a single bit on a stingy day ;-).  Time for flags_t
maybe?

  Ralf

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Build breakage ...
  2006-11-27 16:43         ` Ralf Baechle
@ 2006-11-27 19:56           ` Alexey Dobriyan
  0 siblings, 0 replies; 13+ messages in thread
From: Alexey Dobriyan @ 2006-11-27 19:56 UTC (permalink / raw)
  To: Ralf Baechle
  Cc: Linus Torvalds, Russell King, Kyle McMartin,
	Linux Kernel Mailing List

On Mon, Nov 27, 2006 at 04:43:32PM +0000, Ralf Baechle wrote:
> On Sun, Nov 26, 2006 at 04:29:00PM -0800, Linus Torvalds wrote:
> > > > Ralf, Russell, does this work for you guys?
> > >
> > > Not at all.  It creates even more problems for me, with this circular
> > > dependency:
> >
> > Ok. I just reverted it then.
> >
> > Pls verify that this is all good, and I didn't mess anything up due to the
> > manual conflict resolution.
>
> Thanks, 2ea5814472c3c910aed5c5b60f1f3b1000e353f1 builds again for MIPS.
>
> If you deciede to put the patch back in after 2.6.19 I'm considering to
> replace the local_irq_{save,restore} calls in the various atomic operations
> in <asm/{atomic,bitops,system}.h with their raw_* equivalents.
>
> What I dislike about Alexey's patch is that is finally tries to cast
> unsigned long as the data type for the flags into stone.  The natural
> data type to use on MIPS and several other architectures is a 32-bit
> integer - or just a single bit on a stingy day ;-).  Time for flags_t
> maybe?

Hey, I've even posted RFC about that! IMO, flags_t is way too generic.

I can do

1) typedef unsigned long __bitwise__ irq_flags_t;
2) very core locking functions switched to irq_flags_t +
   additional small patch to keep level of compiler warnings the same
2) conversion to irq_flags_t: can be done slowly, only sparse sees new
   warnigns
3) irq_flags_t forked and became arch specific type
4) arch maintatiners choose better than "unsigned long" type if they want


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2006-11-27 19:56 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-11-26 22:49 Build breakage Ralf Baechle
2006-11-26 23:05 ` Russell King
2006-11-26 23:09   ` Russell King
2006-11-26 23:06 ` Linus Torvalds
2006-11-26 23:12   ` Linus Torvalds
2006-11-26 23:21     ` Russell King
2006-11-27  0:29       ` Linus Torvalds
2006-11-27  0:41         ` Russell King
2006-11-27 16:43         ` Ralf Baechle
2006-11-27 19:56           ` Alexey Dobriyan
2006-11-27  0:08   ` Ralf Baechle
2006-11-26 23:47 ` Kyle McMartin
2006-11-26 23:56   ` [PARISC] Fix incorrent type of flags in <asm/semaphore.h> Kyle McMartin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox