Re: [patch] 2.6.6-rc2 Allow architectures to reenable interrupts oncontended spinlocks

From: Linus Torvalds
Date: Tue Apr 27 2004 - 11:02:32 EST




On Tue, 27 Apr 2004, Keith Owens wrote:
>
> This patch consists of an ia64 specific change (David Mosberger is
> happy with it) and an architecture independent change. The latter has
> no effect unless the architecture implements this feature and defines
> __HAVE_ARCH_RAW_SPIN_LOCK_FLAGS. IOW, this change has no effect on
> anything except ia64, unless the other architecture maintainers want to
> implement this feature for their architecture.

Aargh. Ugly ugly. Can you instead _first_ do all the infrastructure, and
just add the unused "flags" argument to all architectures, ie take this
part of the patch:

> Index: 2.6.6-rc2/include/linux/spinlock.h
> ===================================================================
> --- 2.6.6-rc2.orig/include/linux/spinlock.h Thu Dec 18 13:58:49 2003
> +++ 2.6.6-rc2/include/linux/spinlock.h Tue Apr 27 11:48:03 2004
> @@ -184,6 +184,12 @@
>
> #endif /* !SMP */
>
> +#ifdef __HAVE_ARCH_RAW_SPIN_LOCK_FLAGS
> +#define _raw_spin_lock(lock) _raw_spin_lock_flags(lock, 0)
> +#else
> +#define _raw_spin_lock_flags(lock, flags) do { (void)flags; _raw_spin_lock(lock); } while(0)
> +#endif
> +
> /*
> * Define the various spin_lock and rw_lock methods. Note we define these
> * regardless of whether CONFIG_SMP or CONFIG_PREEMPT are set. The various
> @@ -257,7 +263,7 @@
> do { \
> local_irq_save(flags); \
> preempt_disable(); \
> - _raw_spin_lock(lock); \
> + _raw_spin_lock_flags(lock, flags); \
> } while (0)
>
> #define spin_lock_irq(lock) \

And remove the need for "__HAVE_ARCH_RAW_SPIN_LOCK_FLAGS", and instead
create a patch where _all_ architectures have that

_raw_spin_lock_flags()

define, it's just that they ignore the "flags" value.

I think the patch makes sense, but I'd rather make the infrastructure
clean, than have another silly architecture flag.

Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/