diff options
| author | Olaf Hering <olh@suse.de> | 2005-08-04 13:26:42 -0400 | 
|---|---|---|
| committer | Paul Mackerras <paulus@samba.org> | 2005-08-28 20:53:37 -0400 | 
| commit | b13cfd173f73c3f6f9a307b7b6e64d45fbd756b2 (patch) | |
| tree | 47d9a6ab54c4b068e3300d026c4402c14f53d384 /arch | |
| parent | bef5686229810709091fb6e505071f4aa41e3760 (diff) | |
[PATCH] ppc64: allow xmon=off
If both CONFIG_XMON and CONFIG_XMON_DEFAULT is enabled in the .config,
there is no way to disable xmon again. setup_system calls first xmon_init,
later parse_early_param. So a new 'xmon=off' cmdline option will do the right
thing.
Signed-off-by: Olaf Hering <olh@suse.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/ppc64/kernel/setup.c | 8 | ||||
| -rw-r--r-- | arch/ppc64/xmon/start.c | 2 | ||||
| -rw-r--r-- | arch/ppc64/xmon/xmon.c | 28 | 
3 files changed, 25 insertions, 13 deletions
| diff --git a/arch/ppc64/kernel/setup.c b/arch/ppc64/kernel/setup.c index e9c24d2dbd91..b3ef8df12982 100644 --- a/arch/ppc64/kernel/setup.c +++ b/arch/ppc64/kernel/setup.c | |||
| @@ -627,7 +627,7 @@ void __init setup_system(void) | |||
| 627 | * Initialize xmon | 627 | * Initialize xmon | 
| 628 | */ | 628 | */ | 
| 629 | #ifdef CONFIG_XMON_DEFAULT | 629 | #ifdef CONFIG_XMON_DEFAULT | 
| 630 | xmon_init(); | 630 | xmon_init(1); | 
| 631 | #endif | 631 | #endif | 
| 632 | /* | 632 | /* | 
| 633 | * Register early console | 633 | * Register early console | 
| @@ -1343,11 +1343,13 @@ static int __init early_xmon(char *p) | |||
| 1343 | /* ensure xmon is enabled */ | 1343 | /* ensure xmon is enabled */ | 
| 1344 | if (p) { | 1344 | if (p) { | 
| 1345 | if (strncmp(p, "on", 2) == 0) | 1345 | if (strncmp(p, "on", 2) == 0) | 
| 1346 | xmon_init(); | 1346 | xmon_init(1); | 
| 1347 | if (strncmp(p, "off", 3) == 0) | ||
| 1348 | xmon_init(0); | ||
| 1347 | if (strncmp(p, "early", 5) != 0) | 1349 | if (strncmp(p, "early", 5) != 0) | 
| 1348 | return 0; | 1350 | return 0; | 
| 1349 | } | 1351 | } | 
| 1350 | xmon_init(); | 1352 | xmon_init(1); | 
| 1351 | debugger(NULL); | 1353 | debugger(NULL); | 
| 1352 | 1354 | ||
| 1353 | return 0; | 1355 | return 0; | 
| diff --git a/arch/ppc64/xmon/start.c b/arch/ppc64/xmon/start.c index a9265bcc79b2..f86b584acd76 100644 --- a/arch/ppc64/xmon/start.c +++ b/arch/ppc64/xmon/start.c | |||
| @@ -27,7 +27,7 @@ static void sysrq_handle_xmon(int key, struct pt_regs *pt_regs, | |||
| 27 | struct tty_struct *tty) | 27 | struct tty_struct *tty) | 
| 28 | { | 28 | { | 
| 29 | /* ensure xmon is enabled */ | 29 | /* ensure xmon is enabled */ | 
| 30 | xmon_init(); | 30 | xmon_init(1); | 
| 31 | debugger(pt_regs); | 31 | debugger(pt_regs); | 
| 32 | } | 32 | } | 
| 33 | 33 | ||
| diff --git a/arch/ppc64/xmon/xmon.c b/arch/ppc64/xmon/xmon.c index 05539439e6bc..45908b10acd3 100644 --- a/arch/ppc64/xmon/xmon.c +++ b/arch/ppc64/xmon/xmon.c | |||
| @@ -2496,15 +2496,25 @@ static void dump_stab(void) | |||
| 2496 | } | 2496 | } | 
| 2497 | } | 2497 | } | 
| 2498 | 2498 | ||
| 2499 | void xmon_init(void) | 2499 | void xmon_init(int enable) | 
| 2500 | { | 2500 | { | 
| 2501 | __debugger = xmon; | 2501 | if (enable) { | 
| 2502 | __debugger_ipi = xmon_ipi; | 2502 | __debugger = xmon; | 
| 2503 | __debugger_bpt = xmon_bpt; | 2503 | __debugger_ipi = xmon_ipi; | 
| 2504 | __debugger_sstep = xmon_sstep; | 2504 | __debugger_bpt = xmon_bpt; | 
| 2505 | __debugger_iabr_match = xmon_iabr_match; | 2505 | __debugger_sstep = xmon_sstep; | 
| 2506 | __debugger_dabr_match = xmon_dabr_match; | 2506 | __debugger_iabr_match = xmon_iabr_match; | 
| 2507 | __debugger_fault_handler = xmon_fault_handler; | 2507 | __debugger_dabr_match = xmon_dabr_match; | 
| 2508 | __debugger_fault_handler = xmon_fault_handler; | ||
| 2509 | } else { | ||
| 2510 | __debugger = NULL; | ||
| 2511 | __debugger_ipi = NULL; | ||
| 2512 | __debugger_bpt = NULL; | ||
| 2513 | __debugger_sstep = NULL; | ||
| 2514 | __debugger_iabr_match = NULL; | ||
| 2515 | __debugger_dabr_match = NULL; | ||
| 2516 | __debugger_fault_handler = NULL; | ||
| 2517 | } | ||
| 2508 | } | 2518 | } | 
| 2509 | 2519 | ||
| 2510 | void dump_segments(void) | 2520 | void dump_segments(void) | 
