From: "Luís Henriques" <luis.henriques@canonical.com>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: stable@vger.kernel.org,
Heiko Carstens <heiko.carstens@de.ibm.com>,
Finn Thain <fthain@telegraphics.com.au>,
Thomas Gleixner <tglx@linutronix.de>,
Linux Kernel Development <linux-kernel@vger.kernel.org>,
Linux/m68k <linux-m68k@vger.kernel.org>
Subject: Re: Boot crash fix for 68030
Date: Mon, 7 Apr 2014 11:37:50 +0100 [thread overview]
Message-ID: <20140407103750.GB3796@hercules> (raw)
In-Reply-To: <alpine.DEB.2.02.1404061132530.6867@ayla.of.borg>
On Sun, Apr 06, 2014 at 11:34:46AM +0200, Geert Uytterhoeven wrote:
> Please queue the two commits below for stable:
> - The second commit fixes a boot crash on 68030,
> - The first commit is a prerequisite for the second.
>
> This fix is needed on all versions that contain commit
> e4f2dfbb5e92be4e46c0625f4f8eb101110f756f ("m68k: implement futex.h to support
> userspace robust futexes and PI mutexes"), i.e. v3.10 until v3.14.
>
> The first commit only applies cleanly to v3.14.
> I appended a backported version for v3.10..v3.13 at the bottom of this email.
>
> Thanks for applying!
Thank you Geert, I'll queue both patches for the 3.11 kernel.
Cheers,
--
Luís
> commit 03b8c7b623c80af264c4c8d6111e5c6289933666
> Author: Heiko Carstens <heiko.carstens@de.ibm.com>
> Date: Sun Mar 2 13:09:47 2014 +0100
>
> futex: Allow architectures to skip futex_atomic_cmpxchg_inatomic() test
>
> If an architecture has futex_atomic_cmpxchg_inatomic() implemented and there
> is no runtime check necessary, allow to skip the test within futex_init().
>
> This allows to get rid of some code which would always give the same result,
> and also allows the compiler to optimize a couple of if statements away.
>
> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
> Cc: Finn Thain <fthain@telegraphics.com.au>
> Cc: Geert Uytterhoeven <geert@linux-m68k.org>
> Link: http://lkml.kernel.org/r/20140302120947.GA3641@osiris
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
>
> commit e571c58f313d35c56e0018470e3375ddd1fd320e
> Author: Finn Thain <fthain@telegraphics.com.au>
> Date: Thu Mar 6 10:29:27 2014 +1100
>
> m68k: Skip futex_atomic_cmpxchg_inatomic() test
>
> Skip the futex_atomic_cmpxchg_inatomic() test in futex_init(). It causes a
> fatal exception on 68030 (and presumably 68020 also).
>
> Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
> Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
> Link: http://lkml.kernel.org/r/alpine.LNX.2.00.1403061006440.5525@nippy.intranet
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
>
> ---
> From 4ff4cbd563da5ff27b61abb31cb6efaf9498cf07 Mon Sep 17 00:00:00 2001
> From: Heiko Carstens <heiko.carstens@de.ibm.com>
> Date: Sun, 2 Mar 2014 13:09:47 +0100
> Subject: [PATCH] futex: Allow architectures to skip
> futex_atomic_cmpxchg_inatomic() test
>
> If an architecture has futex_atomic_cmpxchg_inatomic() implemented and there
> is no runtime check necessary, allow to skip the test within futex_init().
>
> This allows to get rid of some code which would always give the same result,
> and also allows the compiler to optimize a couple of if statements away.
>
> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
> Cc: Finn Thain <fthain@telegraphics.com.au>
> Cc: Geert Uytterhoeven <geert@linux-m68k.org>
> Link: http://lkml.kernel.org/r/20140302120947.GA3641@osiris
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> [geert: Backported to v3.10..v3.13]
> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> ---
> arch/s390/Kconfig | 1 +
> include/linux/futex.h | 4 ++++
> init/Kconfig | 7 +++++++
> kernel/futex.c | 14 ++++++++++++--
> 4 files changed, 24 insertions(+), 2 deletions(-)
>
> diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
> index e9f312532526..c8d8283cb20e 100644
> --- a/arch/s390/Kconfig
> +++ b/arch/s390/Kconfig
> @@ -117,6 +117,7 @@ config S390
> select HAVE_FUNCTION_GRAPH_TRACER
> select HAVE_FUNCTION_TRACER
> select HAVE_FUNCTION_TRACE_MCOUNT_TEST
> + select HAVE_FUTEX_CMPXCHG if FUTEX
> select HAVE_KERNEL_BZIP2
> select HAVE_KERNEL_GZIP
> select HAVE_KERNEL_LZ4
> diff --git a/include/linux/futex.h b/include/linux/futex.h
> index b0d95cac826e..6435f46d6e13 100644
> --- a/include/linux/futex.h
> +++ b/include/linux/futex.h
> @@ -55,7 +55,11 @@ union futex_key {
> #ifdef CONFIG_FUTEX
> extern void exit_robust_list(struct task_struct *curr);
> extern void exit_pi_state_list(struct task_struct *curr);
> +#ifdef CONFIG_HAVE_FUTEX_CMPXCHG
> +#define futex_cmpxchg_enabled 1
> +#else
> extern int futex_cmpxchg_enabled;
> +#endif
> #else
> static inline void exit_robust_list(struct task_struct *curr)
> {
> diff --git a/init/Kconfig b/init/Kconfig
> index 4e5d96ab2034..66e6759e4436 100644
> --- a/init/Kconfig
> +++ b/init/Kconfig
> @@ -1399,6 +1399,13 @@ config FUTEX
> support for "fast userspace mutexes". The resulting kernel may not
> run glibc-based applications correctly.
>
> +config HAVE_FUTEX_CMPXCHG
> + bool
> + help
> + Architectures should select this if futex_atomic_cmpxchg_inatomic()
> + is implemented and always working. This removes a couple of runtime
> + checks.
> +
> config EPOLL
> bool "Enable eventpoll support" if EXPERT
> default y
> diff --git a/kernel/futex.c b/kernel/futex.c
> index f6ff0191ecf7..0d74e3aecb0b 100644
> --- a/kernel/futex.c
> +++ b/kernel/futex.c
> @@ -68,7 +68,9 @@
>
> #include "locking/rtmutex_common.h"
>
> +#ifndef CONFIG_HAVE_FUTEX_CMPXCHG
> int __read_mostly futex_cmpxchg_enabled;
> +#endif
>
> #define FUTEX_HASHBITS (CONFIG_BASE_SMALL ? 4 : 8)
>
> @@ -2731,10 +2733,10 @@ SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val,
> return do_futex(uaddr, op, val, tp, uaddr2, val2, val3);
> }
>
> -static int __init futex_init(void)
> +static void __init futex_detect_cmpxchg(void)
> {
> +#ifndef CONFIG_HAVE_FUTEX_CMPXCHG
> u32 curval;
> - int i;
>
> /*
> * This will fail and we want it. Some arch implementations do
> @@ -2748,6 +2750,14 @@ static int __init futex_init(void)
> */
> if (cmpxchg_futex_value_locked(&curval, NULL, 0, 0) == -EFAULT)
> futex_cmpxchg_enabled = 1;
> +#endif
> +}
> +
> +static int __init futex_init(void)
> +{
> + int i;
> +
> + futex_detect_cmpxchg();
>
> for (i = 0; i < ARRAY_SIZE(futex_queues); i++) {
> plist_head_init(&futex_queues[i].chain);
> --
> 1.7.9.5
>
> Gr{oetje,eeting}s,
>
> Geert
>
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
>
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
> -- Linus Torvalds
> --
> To unsubscribe from this list: send the line "unsubscribe stable" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: "Luís Henriques" <luis.henriques@canonical.com>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: stable@vger.kernel.org,
Heiko Carstens <heiko.carstens@de.ibm.com>,
Finn Thain <fthain@telegraphics.com.au>,
Thomas Gleixner <tglx@linutronix.de>,
Linux Kernel Development <linux-kernel@vger.kernel.org>,
Linux/m68k <linux-m68k@vger.kernel.org>
Subject: Re: Boot crash fix for 68030
Date: Mon, 7 Apr 2014 11:37:50 +0100 [thread overview]
Message-ID: <20140407103750.GB3796@hercules> (raw)
In-Reply-To: <alpine.DEB.2.02.1404061132530.6867@ayla.of.borg>
On Sun, Apr 06, 2014 at 11:34:46AM +0200, Geert Uytterhoeven wrote:
> Please queue the two commits below for stable:
> - The second commit fixes a boot crash on 68030,
> - The first commit is a prerequisite for the second.
>
> This fix is needed on all versions that contain commit
> e4f2dfbb5e92be4e46c0625f4f8eb101110f756f ("m68k: implement futex.h to support
> userspace robust futexes and PI mutexes"), i.e. v3.10 until v3.14.
>
> The first commit only applies cleanly to v3.14.
> I appended a backported version for v3.10..v3.13 at the bottom of this email.
>
> Thanks for applying!
Thank you Geert, I'll queue both patches for the 3.11 kernel.
Cheers,
--
Lu�s
> commit 03b8c7b623c80af264c4c8d6111e5c6289933666
> Author: Heiko Carstens <heiko.carstens@de.ibm.com>
> Date: � Sun Mar 2 13:09:47 2014 +0100
>
> � � futex: Allow architectures to skip futex_atomic_cmpxchg_inatomic() test
> � �
> � � If an architecture has futex_atomic_cmpxchg_inatomic() implemented and there
> � � is no runtime check necessary, allow to skip the test within futex_init().
> � �
> � � This allows to get rid of some code which would always give the same result,
> � � and also allows the compiler to optimize a couple of if statements away.
> � �
> � � Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
> � � Cc: Finn Thain <fthain@telegraphics.com.au>
> � � Cc: Geert Uytterhoeven <geert@linux-m68k.org>
> � � Link: http://lkml.kernel.org/r/20140302120947.GA3641@osiris
> � � Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
>
> commit e571c58f313d35c56e0018470e3375ddd1fd320e
> Author: Finn Thain <fthain@telegraphics.com.au>
> Date: � Thu Mar 6 10:29:27 2014 +1100
>
> � � m68k: Skip futex_atomic_cmpxchg_inatomic() test
> � �
> � � Skip the futex_atomic_cmpxchg_inatomic() test in futex_init(). It causes a
> � � fatal exception on 68030 (and presumably 68020 also).
> � �
> � � Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
> � � Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
> � � Link: http://lkml.kernel.org/r/alpine.LNX.2.00.1403061006440.5525@nippy.intranet
> � � Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
>
> ---
> From 4ff4cbd563da5ff27b61abb31cb6efaf9498cf07 Mon Sep 17 00:00:00 2001
> From: Heiko Carstens <heiko.carstens@de.ibm.com>
> Date: Sun, 2 Mar 2014 13:09:47 +0100
> Subject: [PATCH] futex: Allow architectures to skip
> futex_atomic_cmpxchg_inatomic() test
>
> If an architecture has futex_atomic_cmpxchg_inatomic() implemented and there
> is no runtime check necessary, allow to skip the test within futex_init().
>
> This allows to get rid of some code which would always give the same result,
> and also allows the compiler to optimize a couple of if statements away.
>
> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
> Cc: Finn Thain <fthain@telegraphics.com.au>
> Cc: Geert Uytterhoeven <geert@linux-m68k.org>
> Link: http://lkml.kernel.org/r/20140302120947.GA3641@osiris
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> [geert: Backported to v3.10..v3.13]
> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> ---
> arch/s390/Kconfig | 1 +
> include/linux/futex.h | 4 ++++
> init/Kconfig | 7 +++++++
> kernel/futex.c | 14 ++++++++++++--
> 4 files changed, 24 insertions(+), 2 deletions(-)
>
> diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
> index e9f312532526..c8d8283cb20e 100644
> --- a/arch/s390/Kconfig
> +++ b/arch/s390/Kconfig
> @@ -117,6 +117,7 @@ config S390
> select HAVE_FUNCTION_GRAPH_TRACER
> select HAVE_FUNCTION_TRACER
> select HAVE_FUNCTION_TRACE_MCOUNT_TEST
> + select HAVE_FUTEX_CMPXCHG if FUTEX
> select HAVE_KERNEL_BZIP2
> select HAVE_KERNEL_GZIP
> select HAVE_KERNEL_LZ4
> diff --git a/include/linux/futex.h b/include/linux/futex.h
> index b0d95cac826e..6435f46d6e13 100644
> --- a/include/linux/futex.h
> +++ b/include/linux/futex.h
> @@ -55,7 +55,11 @@ union futex_key {
> #ifdef CONFIG_FUTEX
> extern void exit_robust_list(struct task_struct *curr);
> extern void exit_pi_state_list(struct task_struct *curr);
> +#ifdef CONFIG_HAVE_FUTEX_CMPXCHG
> +#define futex_cmpxchg_enabled 1
> +#else
> extern int futex_cmpxchg_enabled;
> +#endif
> #else
> static inline void exit_robust_list(struct task_struct *curr)
> {
> diff --git a/init/Kconfig b/init/Kconfig
> index 4e5d96ab2034..66e6759e4436 100644
> --- a/init/Kconfig
> +++ b/init/Kconfig
> @@ -1399,6 +1399,13 @@ config FUTEX
> support for "fast userspace mutexes". The resulting kernel may not
> run glibc-based applications correctly.
>
> +config HAVE_FUTEX_CMPXCHG
> + bool
> + help
> + Architectures should select this if futex_atomic_cmpxchg_inatomic()
> + is implemented and always working. This removes a couple of runtime
> + checks.
> +
> config EPOLL
> bool "Enable eventpoll support" if EXPERT
> default y
> diff --git a/kernel/futex.c b/kernel/futex.c
> index f6ff0191ecf7..0d74e3aecb0b 100644
> --- a/kernel/futex.c
> +++ b/kernel/futex.c
> @@ -68,7 +68,9 @@
>
> #include "locking/rtmutex_common.h"
>
> +#ifndef CONFIG_HAVE_FUTEX_CMPXCHG
> int __read_mostly futex_cmpxchg_enabled;
> +#endif
>
> #define FUTEX_HASHBITS (CONFIG_BASE_SMALL ? 4 : 8)
>
> @@ -2731,10 +2733,10 @@ SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val,
> return do_futex(uaddr, op, val, tp, uaddr2, val2, val3);
> }
>
> -static int __init futex_init(void)
> +static void __init futex_detect_cmpxchg(void)
> {
> +#ifndef CONFIG_HAVE_FUTEX_CMPXCHG
> u32 curval;
> - int i;
>
> /*
> * This will fail and we want it. Some arch implementations do
> @@ -2748,6 +2750,14 @@ static int __init futex_init(void)
> */
> if (cmpxchg_futex_value_locked(&curval, NULL, 0, 0) == -EFAULT)
> futex_cmpxchg_enabled = 1;
> +#endif
> +}
> +
> +static int __init futex_init(void)
> +{
> + int i;
> +
> + futex_detect_cmpxchg();
>
> for (i = 0; i < ARRAY_SIZE(futex_queues); i++) {
> plist_head_init(&futex_queues[i].chain);
> --
> 1.7.9.5
>
> Gr{oetje,eeting}s,
>
> Geert
>
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
>
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
> -- Linus Torvalds
> --
> To unsubscribe from this list: send the line "unsubscribe stable" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2014-04-07 10:37 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-06 9:34 Boot crash fix for 68030 Geert Uytterhoeven
2014-04-06 9:34 ` Geert Uytterhoeven
2014-04-07 10:37 ` Luís Henriques [this message]
2014-04-07 10:37 ` Luís Henriques
-- strict thread matches above, loose matches on Subject: below --
2014-04-06 9:34 Geert Uytterhoeven
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=20140407103750.GB3796@hercules \
--to=luis.henriques@canonical.com \
--cc=fthain@telegraphics.com.au \
--cc=geert@linux-m68k.org \
--cc=heiko.carstens@de.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-m68k@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=tglx@linutronix.de \
/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.