From 5f2361f3afb5c8d15e0a5f262a0f8a7942084563 Mon Sep 17 00:00:00 2001 From: Andreas Sandberg Date: Mon, 22 Apr 2013 13:20:31 -0400 Subject: arm: Enable support for triggering a sim panic on kernel panics Add the options 'panic_on_panic' and 'panic_on_oops' to the LinuxArmSystem SimObject. When these option are enabled, the simulator panics when the guest kernel panics or oopses. Enable panic on panic and panic on oops in ARM-based test cases. --- src/arch/arm/linux/system.cc | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/arch/arm/linux/system.cc') diff --git a/src/arch/arm/linux/system.cc b/src/arch/arm/linux/system.cc index de4c27d8b..e714cc913 100644 --- a/src/arch/arm/linux/system.cc +++ b/src/arch/arm/linux/system.cc @@ -62,11 +62,22 @@ using namespace Linux; LinuxArmSystem::LinuxArmSystem(Params *p) : ArmSystem(p), - enableContextSwitchStatsDump(p->enable_context_switch_stats_dump) + enableContextSwitchStatsDump(p->enable_context_switch_stats_dump), + kernelPanicEvent(NULL), kernelOopsEvent(NULL) { + if (p->panic_on_panic) { + kernelPanicEvent = addKernelFuncEventOrPanic( + "panic", "Kernel panic in simulated kernel"); + } else { #ifndef NDEBUG - kernelPanicEvent = addKernelFuncEventOrPanic("panic"); + kernelPanicEvent = addKernelFuncEventOrPanic("panic"); #endif + } + + if (p->panic_on_oops) { + kernelOopsEvent = addKernelFuncEventOrPanic( + "oops_exit", "Kernel oops in guest"); + } // With ARM udelay() is #defined to __udelay uDelaySkipEvent = addKernelFuncEventOrPanic( -- cgit v1.2.3