Re: + spin_lock_irq-enable-interrupts-while-spinning-i386-implementation.patch added to -mm tree

Daniel Walker
2007-01-07T13:25:50Z

On Sat, 2007-01-06 at 23:26 -0800, Andrew Morton wrote:

> diff -puN include/asm-i386/spinlock.h~spin_lock_irq-enable-interrupts-while-spinning-i386-implementation-fix include/asm-i386/spinlock.h
> --- a/include/asm-i386/spinlock.h~spin_lock_irq-enable-interrupts-while-spinning-i386-implementation-fix
> +++ a/include/asm-i386/spinlock.h
> @@ -86,17 +86,19 @@ static inline void __raw_spin_lock_flags
> static inline void __raw_spin_lock_irq(raw_spinlock_t *lock)
> {
> asm volatile("\n1:\t"
> - LOCK_PREFIX " ; decb %0\n\t"
> + LOCK_PREFIX " ; decb %[slock]\n\t"
> "jns 3f\n"
> STI_STRING "\n"
> "2:\t"
> "rep;nop\n\t"
> - "cmpb $0,%0\n\t"
> + "cmpb $0,%[slock]\n\t"
> "jle 2b\n\t"
> CLI_STRING "\n"
> "jmp 1b\n"
> "3:\n\t"
> - : "+m" (lock->slock) : : "memory");
> + : [slock] "+m" (lock->slock)
> + : __CLI_STI_INPUT_ARGS
> + : "memory" CLI_STI_CLOBBERS);
> }
> #endif

Now it fails with CONFIG_PARAVIRT off .

scripts/kconfig/conf -s arch/i386/Kconfig
CHK include/linux/version.h
CHK include/linux/compile.h
CHK include/linux/utsrelease.h
UPD include/linux/compile.h
CC arch/i386/kernel/asm-offsets.s
In file included from include/linux/spinlock.h:88,
from include/linux/module.h:10,
from include/linux/crypto.h:22,
from arch/i386/kernel/asm-offsets.c:8:
include/asm/spinlock.h: In function '__raw_spin_lock_irq':
include/asm/spinlock.h:100: error: expected string literal before '__CLI_STI_INPUT_ARGS'
distcc[2386] ERROR: compile arch/i386/kernel/asm-offsets.c on dwalker2/140 failed
make[1]: *** [arch/i386/kernel/asm-offsets.s] Error 1
make: *** [prepare0] Error 2

And I get this same error when compiling
arch/i386/boot/compressed/misc.c when CONFIG_PARAVIRT is on. misc.c has
an undef CONFIG_PARAVIRT at the top so I think they are the same issue.

Daniel