From: Peter Zijlstra <peterz@infradead.org>
To: Petr Tesarik <ptesarik@suse.cz>
Cc: linux-kernel@vger.kernel.org, linux-ia64@vger.kernel.org,
tee@sgi.com, Robin Holt <holt@sgi.com>
Subject: Re: [PATCH V2 1/3] Factor out #ifdef's from kernel/spinlock.c to
Date: Thu, 27 Nov 2008 15:32:47 +0000 [thread overview]
Message-ID: <1227799967.4454.1711.camel@twins> (raw)
In-Reply-To: <1224777961.11530.64.camel@elijah.suse.cz>
On Thu, 2008-10-23 at 18:06 +0200, Petr Tesarik wrote:
> The new macro LOCK_CONTENDED_FLAGS expands to the correct implementation
> depending on the config options, so that IRQ's are re-enabled when
> possible, but they remain disabled if CONFIG_LOCKDEP is set.
>
> Signed-off-by: Petr Tesarik <ptesarik@suse.cz>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Sorry, got lost in the inbox...
> ---
> include/linux/lockdep.h | 17 +++++++++++++++++
> kernel/spinlock.c | 12 ++----------
> 2 files changed, 19 insertions(+), 10 deletions(-)
>
> diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h
> index 331e5f1..1e6e578 100644
> --- a/include/linux/lockdep.h
> +++ b/include/linux/lockdep.h
> @@ -376,6 +376,23 @@ do
> { \
>
> #endif /* CONFIG_LOCK_STAT */
>
> +#ifdef CONFIG_LOCKDEP
> +
> +/*
> + * On lockdep we dont want the hand-coded irq-enable of
> + * _raw_*_lock_flags() code, because lockdep assumes
> + * that interrupts are not re-enabled during lock-acquire:
> + */
> +#define LOCK_CONTENDED_FLAGS(_lock, try, lock, lockfl, flags) \
> + LOCK_CONTENDED((_lock), (try), (lock))
> +
> +#else /* CONFIG_LOCKDEP */
> +
> +#define LOCK_CONTENDED_FLAGS(_lock, try, lock, lockfl, flags) \
> + lockfl((_lock), (flags))
> +
> +#endif /* CONFIG_LOCKDEP */
> +
> #if defined(CONFIG_TRACE_IRQFLAGS) && defined(CONFIG_GENERIC_HARDIRQS)
> extern void early_init_irq_lock_class(void);
> #else
> diff --git a/kernel/spinlock.c b/kernel/spinlock.c
> index 29ab207..cf41b87 100644
> --- a/kernel/spinlock.c
> +++ b/kernel/spinlock.c
> @@ -299,16 +299,8 @@ unsigned long __lockfunc
> _spin_lock_irqsave_nested(spinlock_t *lock, int subclas
> local_irq_save(flags);
> preempt_disable();
> spin_acquire(&lock->dep_map, subclass, 0, _RET_IP_);
> - /*
> - * On lockdep we dont want the hand-coded irq-enable of
> - * _raw_spin_lock_flags() code, because lockdep assumes
> - * that interrupts are not re-enabled during lock-acquire:
> - */
> -#ifdef CONFIG_LOCKDEP
> - LOCK_CONTENDED(lock, _raw_spin_trylock, _raw_spin_lock);
> -#else
> - _raw_spin_lock_flags(lock, &flags);
> -#endif
> + LOCK_CONTENDED_FLAGS(lock, _raw_spin_trylock, _raw_spin_lock,
> + _raw_spin_lock_flags, &flags);
> return flags;
> }
> EXPORT_SYMBOL(_spin_lock_irqsave_nested);
>
>
WARNING: multiple messages have this Message-ID (diff)
From: Peter Zijlstra <peterz@infradead.org>
To: Petr Tesarik <ptesarik@suse.cz>
Cc: linux-kernel@vger.kernel.org, linux-ia64@vger.kernel.org,
tee@sgi.com, Robin Holt <holt@sgi.com>
Subject: Re: [PATCH V2 1/3] Factor out #ifdef's from kernel/spinlock.c to LOCK_CONTENDED_FLAGS
Date: Thu, 27 Nov 2008 16:32:47 +0100 [thread overview]
Message-ID: <1227799967.4454.1711.camel@twins> (raw)
In-Reply-To: <1224777961.11530.64.camel@elijah.suse.cz>
On Thu, 2008-10-23 at 18:06 +0200, Petr Tesarik wrote:
> The new macro LOCK_CONTENDED_FLAGS expands to the correct implementation
> depending on the config options, so that IRQ's are re-enabled when
> possible, but they remain disabled if CONFIG_LOCKDEP is set.
>
> Signed-off-by: Petr Tesarik <ptesarik@suse.cz>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Sorry, got lost in the inbox...
> ---
> include/linux/lockdep.h | 17 +++++++++++++++++
> kernel/spinlock.c | 12 ++----------
> 2 files changed, 19 insertions(+), 10 deletions(-)
>
> diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h
> index 331e5f1..1e6e578 100644
> --- a/include/linux/lockdep.h
> +++ b/include/linux/lockdep.h
> @@ -376,6 +376,23 @@ do
> { \
>
> #endif /* CONFIG_LOCK_STAT */
>
> +#ifdef CONFIG_LOCKDEP
> +
> +/*
> + * On lockdep we dont want the hand-coded irq-enable of
> + * _raw_*_lock_flags() code, because lockdep assumes
> + * that interrupts are not re-enabled during lock-acquire:
> + */
> +#define LOCK_CONTENDED_FLAGS(_lock, try, lock, lockfl, flags) \
> + LOCK_CONTENDED((_lock), (try), (lock))
> +
> +#else /* CONFIG_LOCKDEP */
> +
> +#define LOCK_CONTENDED_FLAGS(_lock, try, lock, lockfl, flags) \
> + lockfl((_lock), (flags))
> +
> +#endif /* CONFIG_LOCKDEP */
> +
> #if defined(CONFIG_TRACE_IRQFLAGS) && defined(CONFIG_GENERIC_HARDIRQS)
> extern void early_init_irq_lock_class(void);
> #else
> diff --git a/kernel/spinlock.c b/kernel/spinlock.c
> index 29ab207..cf41b87 100644
> --- a/kernel/spinlock.c
> +++ b/kernel/spinlock.c
> @@ -299,16 +299,8 @@ unsigned long __lockfunc
> _spin_lock_irqsave_nested(spinlock_t *lock, int subclas
> local_irq_save(flags);
> preempt_disable();
> spin_acquire(&lock->dep_map, subclass, 0, _RET_IP_);
> - /*
> - * On lockdep we dont want the hand-coded irq-enable of
> - * _raw_spin_lock_flags() code, because lockdep assumes
> - * that interrupts are not re-enabled during lock-acquire:
> - */
> -#ifdef CONFIG_LOCKDEP
> - LOCK_CONTENDED(lock, _raw_spin_trylock, _raw_spin_lock);
> -#else
> - _raw_spin_lock_flags(lock, &flags);
> -#endif
> + LOCK_CONTENDED_FLAGS(lock, _raw_spin_trylock, _raw_spin_lock,
> + _raw_spin_lock_flags, &flags);
> return flags;
> }
> EXPORT_SYMBOL(_spin_lock_irqsave_nested);
>
>
next prev parent reply other threads:[~2008-11-27 15:32 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-23 15:57 [PATCH V2 0/2] enable irqs when waiting for rwlocks Petr Tesarik
2008-10-23 15:57 ` Petr Tesarik
2008-10-23 16:06 ` [PATCH V2 1/3] Factor out #ifdef's from kernel/spinlock.c to Petr Tesarik
2008-10-23 16:06 ` [PATCH V2 1/3] Factor out #ifdef's from kernel/spinlock.c to LOCK_CONTENDED_FLAGS Petr Tesarik
2008-11-27 15:32 ` Peter Zijlstra [this message]
2008-11-27 15:32 ` Peter Zijlstra
2008-10-23 16:06 ` [PATCH V2 2/3] Allow rwlocks to re-enable interrupts Petr Tesarik
2008-10-23 16:06 ` Petr Tesarik
2008-11-27 15:33 ` Peter Zijlstra
2008-11-27 15:33 ` Peter Zijlstra
2008-10-31 8:52 ` [PATCH V2 0/2] enable irqs when waiting for rwlocks Petr Tesarik
2008-10-31 8:52 ` Petr Tesarik
2008-10-31 20:22 ` Luck, Tony
2008-10-31 20:22 ` Luck, Tony
2008-11-03 11:46 ` Robin Holt
2008-11-03 11:46 ` Robin Holt
2008-11-03 21:47 ` Luck, Tony
2008-11-03 21:47 ` Luck, Tony
2008-11-05 9:54 ` Petr Tesarik
2008-11-05 9:54 ` Petr Tesarik
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1227799967.4454.1711.camel@twins \
--to=peterz@infradead.org \
--cc=holt@sgi.com \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ptesarik@suse.cz \
--cc=tee@sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.