projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Pull trivial2 into release branch
[powerpc.git]
/
arch
/
ia64
/
kernel
/
traps.c
diff --git
a/arch/ia64/kernel/traps.c
b/arch/ia64/kernel/traps.c
index
5539190
..
7c1ddc8
100644
(file)
--- a/
arch/ia64/kernel/traps.c
+++ b/
arch/ia64/kernel/traps.c
@@
-16,6
+16,7
@@
#include <linux/module.h> /* for EXPORT_SYMBOL */
#include <linux/hardirq.h>
#include <linux/kprobes.h>
#include <linux/module.h> /* for EXPORT_SYMBOL */
#include <linux/hardirq.h>
#include <linux/kprobes.h>
+#include <linux/delay.h> /* for ssleep() */
#include <asm/fpswa.h>
#include <asm/ia32.h>
#include <asm/fpswa.h>
#include <asm/ia32.h>
@@
-29,19
+30,19
@@
extern spinlock_t timerlist_lock;
fpswa_interface_t *fpswa_interface;
EXPORT_SYMBOL(fpswa_interface);
fpswa_interface_t *fpswa_interface;
EXPORT_SYMBOL(fpswa_interface);
-
struct notifier_block *ia64die_chain
;
+
ATOMIC_NOTIFIER_HEAD(ia64die_chain)
;
int
register_die_notifier(struct notifier_block *nb)
{
int
register_die_notifier(struct notifier_block *nb)
{
- return notifier_chain_register(&ia64die_chain, nb);
+ return
atomic_
notifier_chain_register(&ia64die_chain, nb);
}
EXPORT_SYMBOL_GPL(register_die_notifier);
int
unregister_die_notifier(struct notifier_block *nb)
{
}
EXPORT_SYMBOL_GPL(register_die_notifier);
int
unregister_die_notifier(struct notifier_block *nb)
{
- return notifier_chain_unregister(&ia64die_chain, nb);
+ return
atomic_
notifier_chain_unregister(&ia64die_chain, nb);
}
EXPORT_SYMBOL_GPL(unregister_die_notifier);
}
EXPORT_SYMBOL_GPL(unregister_die_notifier);
@@
-116,6
+117,13
@@
die (const char *str, struct pt_regs *regs, long err)
bust_spinlocks(0);
die.lock_owner = -1;
spin_unlock_irq(&die.lock);
bust_spinlocks(0);
die.lock_owner = -1;
spin_unlock_irq(&die.lock);
+
+ if (panic_on_oops) {
+ printk(KERN_EMERG "Fatal exception: panic in 5 seconds\n");
+ ssleep(5);
+ panic("Fatal exception");
+ }
+
do_exit(SIGSEGV);
}
do_exit(SIGSEGV);
}