2009-10-02 11:42:17

by Aaro Koskinen

[permalink] [raw]
Subject: [PATCH] panic: call bust_spinlocks(0) before dying

Commit ffd71da4e3f323b7673b061e6f7e0d0c12dc2b49 moved bust_spinlocks(0)
to the end of the function, which in practice is never reached. As a
result console_unblank() is not called, and on some systems the user
may not see the panic message.

Signed-off-by: Aaro Koskinen <[email protected]>
---
kernel/panic.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/kernel/panic.c b/kernel/panic.c
index bcdef26..96b45d0 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -90,6 +90,8 @@ NORET_TYPE void panic(const char * fmt, ...)

atomic_notifier_call_chain(&panic_notifier_list, 0, buf);

+ bust_spinlocks(0);
+
if (!panic_blink)
panic_blink = no_blink;

@@ -136,7 +138,6 @@ NORET_TYPE void panic(const char * fmt, ...)
mdelay(1);
i++;
}
- bust_spinlocks(0);
}

EXPORT_SYMBOL(panic);
--
1.5.4.3


2009-10-02 12:07:53

by Frederic Weisbecker

[permalink] [raw]
Subject: Re: [PATCH] panic: call bust_spinlocks(0) before dying

2009/10/2 Aaro Koskinen <[email protected]>:
> Commit ffd71da4e3f323b7673b061e6f7e0d0c12dc2b49 moved bust_spinlocks(0)
> to the end of the function, which in practice is never reached. As a
> result console_unblank() is not called, and on some systems the user
> may not see the panic message.


Indeed.


> Signed-off-by: Aaro Koskinen <[email protected]>
> ---
> ?kernel/panic.c | ? ?3 ++-
> ?1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/kernel/panic.c b/kernel/panic.c
> index bcdef26..96b45d0 100644
> --- a/kernel/panic.c
> +++ b/kernel/panic.c
> @@ -90,6 +90,8 @@ NORET_TYPE void panic(const char * fmt, ...)
>
> ? ? ? ?atomic_notifier_call_chain(&panic_notifier_list, 0, buf);
>
> + ? ? ? bust_spinlocks(0);
> +

And it looks like the right place to do that. The rest that is going
to be displayed
is messages about countdown before reboot. The most important messages
have been printk'ed already.

Reviewed-by: Frederic Weisbecker <[email protected]>


> ? ? ? ?if (!panic_blink)
> ? ? ? ? ? ? ? ?panic_blink = no_blink;
>
> @@ -136,7 +138,6 @@ NORET_TYPE void panic(const char * fmt, ...)
> ? ? ? ? ? ? ? ?mdelay(1);
> ? ? ? ? ? ? ? ?i++;
> ? ? ? ?}
> - ? ? ? bust_spinlocks(0);
> ?}
>
> ?EXPORT_SYMBOL(panic);
> --
> 1.5.4.3
>
>

2009-10-02 12:34:43

by Aaro Koskinen

[permalink] [raw]
Subject: [tip:core/urgent] panic: Fix panic message visibility by calling bust_spinlocks(0) before dying

Commit-ID: 1f6dff52344945f665524f547a27f3cc0388cb90
Gitweb: http://git.kernel.org/tip/1f6dff52344945f665524f547a27f3cc0388cb90
Author: Aaro Koskinen <[email protected]>
AuthorDate: Fri, 2 Oct 2009 14:41:20 +0300
Committer: Ingo Molnar <[email protected]>
CommitDate: Fri, 2 Oct 2009 14:23:12 +0200

panic: Fix panic message visibility by calling bust_spinlocks(0) before dying

Commit ffd71da4e3f ("panic: decrease oops_in_progress only after
having done the panic") moved bust_spinlocks(0) to the end of the
function, which in practice is never reached.

As a result console_unblank() is not called, and on some systems
the user may not see the panic message.

Move it back up to before the unblanking.

Signed-off-by: Aaro Koskinen <[email protected]>
Reviewed-by: Frederic Weisbecker <[email protected]>
LKML-Reference: <[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>


---
kernel/panic.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/kernel/panic.c b/kernel/panic.c
index 512ab73..bc4dcb6 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -90,6 +90,8 @@ NORET_TYPE void panic(const char * fmt, ...)

atomic_notifier_call_chain(&panic_notifier_list, 0, buf);

+ bust_spinlocks(0);
+
if (!panic_blink)
panic_blink = no_blink;

@@ -136,7 +138,6 @@ NORET_TYPE void panic(const char * fmt, ...)
mdelay(1);
i++;
}
- bust_spinlocks(0);
}

EXPORT_SYMBOL(panic);

2009-10-05 19:12:35

by Aaro Koskinen

[permalink] [raw]
Subject: [tip:core/urgent] panic: Fix panic message visibility by calling bust_spinlocks(0) before dying

Commit-ID: d014e8894dfc523dd9d2f2a17b6dcb94facea810
Gitweb: http://git.kernel.org/tip/d014e8894dfc523dd9d2f2a17b6dcb94facea810
Author: Aaro Koskinen <[email protected]>
AuthorDate: Fri, 2 Oct 2009 14:41:20 +0300
Committer: Ingo Molnar <[email protected]>
CommitDate: Mon, 5 Oct 2009 21:08:09 +0200

panic: Fix panic message visibility by calling bust_spinlocks(0) before dying

Commit ffd71da4e3f ("panic: decrease oops_in_progress only after
having done the panic") moved bust_spinlocks(0) to the end of the
function, which in practice is never reached.

As a result console_unblank() is not called, and on some systems
the user may not see the panic message.

Move it back up to before the unblanking.

Signed-off-by: Aaro Koskinen <[email protected]>
Reviewed-by: Frederic Weisbecker <[email protected]>
LKML-Reference: <[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>


---
kernel/panic.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/kernel/panic.c b/kernel/panic.c
index 512ab73..bc4dcb6 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -90,6 +90,8 @@ NORET_TYPE void panic(const char * fmt, ...)

atomic_notifier_call_chain(&panic_notifier_list, 0, buf);

+ bust_spinlocks(0);
+
if (!panic_blink)
panic_blink = no_blink;

@@ -136,7 +138,6 @@ NORET_TYPE void panic(const char * fmt, ...)
mdelay(1);
i++;
}
- bust_spinlocks(0);
}

EXPORT_SYMBOL(panic);