mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
debug: add parameters to prevent entering debug mode on errors
On non-developer devices kgdb prevents CONFIG_PANIC_TIMEOUT from rebooting the device after a panic. Add module parameters debug_core.break_on_exception and debug_core.break_on_panic to allow skipping debug on panics and exceptions respectively. Both default to true to preserve existing behavior. Change-Id: I75dce7263e96cee069a9750920cce83dc6f98e8c Signed-off-by: Colin Cross <ccross@android.com>
This commit is contained in:
parent
2eec7c9f3f
commit
5459bf85d8
1 changed files with 12 additions and 0 deletions
|
@ -85,6 +85,10 @@ static int kgdb_use_con;
|
|||
bool dbg_is_early = true;
|
||||
/* Next cpu to become the master debug core */
|
||||
int dbg_switch_cpu;
|
||||
/* Flag for entering kdb when a panic occurs */
|
||||
static bool break_on_panic = true;
|
||||
/* Flag for entering kdb when an exception occurs */
|
||||
static bool break_on_exception = true;
|
||||
|
||||
/* Use kdb or gdbserver mode */
|
||||
int dbg_kdb_mode = 1;
|
||||
|
@ -99,6 +103,8 @@ early_param("kgdbcon", opt_kgdb_con);
|
|||
|
||||
module_param(kgdb_use_con, int, 0644);
|
||||
module_param(kgdbreboot, int, 0644);
|
||||
module_param(break_on_panic, bool, 0644);
|
||||
module_param(break_on_exception, bool, 0644);
|
||||
|
||||
/*
|
||||
* Holds information about breakpoints in a kernel. These breakpoints are
|
||||
|
@ -673,6 +679,9 @@ kgdb_handle_exception(int evector, int signo, int ecode, struct pt_regs *regs)
|
|||
struct kgdb_state kgdb_var;
|
||||
struct kgdb_state *ks = &kgdb_var;
|
||||
|
||||
if (unlikely(signo != SIGTRAP && !break_on_exception))
|
||||
return 1;
|
||||
|
||||
ks->cpu = raw_smp_processor_id();
|
||||
ks->ex_vector = evector;
|
||||
ks->signo = signo;
|
||||
|
@ -759,6 +768,9 @@ static int kgdb_panic_event(struct notifier_block *self,
|
|||
unsigned long val,
|
||||
void *data)
|
||||
{
|
||||
if (!break_on_panic)
|
||||
return NOTIFY_DONE;
|
||||
|
||||
if (dbg_kdb_mode)
|
||||
kdb_printf("PANIC: %s\n", (char *)data);
|
||||
kgdb_breakpoint();
|
||||
|
|
Loading…
Reference in a new issue