aboutsummaryrefslogtreecommitdiffstats
path: root/arch/m68k/amiga/config.c
diff options
context:
space:
mode:
authorGeert Uytterhoeven <geert@linux-m68k.org>2013-12-01 05:14:51 -0500
committerGeert Uytterhoeven <geert@linux-m68k.org>2013-12-08 05:03:21 -0500
commit8a09cec25fa19a3a7e9f21b4186fecc69085a60f (patch)
tree09099f3d883d9e8736e8ba363ffc79560038a976 /arch/m68k/amiga/config.c
parentc6188d0f5756e3b20c216483cc7982d097c7b9de (diff)
m68k/amiga,atari: Fix specifying multiple debug= parameters
Since commit d6713b4091a99fa2af2fabdcd2f3fb97f32ecf2e ("m68k: early parameter support"), the user can specify multiple debug consoles using the "debug=" kernel command line parameter. However, as there's only a single struct console object, which is reused, it would actually register the same console object multiple times, causing the following warning: WARNING: CPU: 0 PID: 0 at kernel/printk/printk.c:2233 register_console+0x36/ console 'debug0' already registered Make sure to register the console object only once, to avoid the warning. Note that still only one console (the one corresponding to the last "debug=" parameter) will be active at the same time, as the .write() method of the already registered console object is overwritten by a subsequent "debug=" parameter. Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Diffstat (limited to 'arch/m68k/amiga/config.c')
-rw-r--r--arch/m68k/amiga/config.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/arch/m68k/amiga/config.c b/arch/m68k/amiga/config.c
index c425fa6c2795..9625b7132227 100644
--- a/arch/m68k/amiga/config.c
+++ b/arch/m68k/amiga/config.c
@@ -620,6 +620,8 @@ static void amiga_mem_console_write(struct console *co, const char *s,
620 620
621static int __init amiga_savekmsg_setup(char *arg) 621static int __init amiga_savekmsg_setup(char *arg)
622{ 622{
623 bool registered;
624
623 if (!MACH_IS_AMIGA || strcmp(arg, "mem")) 625 if (!MACH_IS_AMIGA || strcmp(arg, "mem"))
624 return 0; 626 return 0;
625 627
@@ -636,8 +638,10 @@ static int __init amiga_savekmsg_setup(char *arg)
636 savekmsg->magicptr = ZTWO_PADDR(savekmsg); 638 savekmsg->magicptr = ZTWO_PADDR(savekmsg);
637 savekmsg->size = 0; 639 savekmsg->size = 0;
638 640
641 registered = !!amiga_console_driver.write;
639 amiga_console_driver.write = amiga_mem_console_write; 642 amiga_console_driver.write = amiga_mem_console_write;
640 register_console(&amiga_console_driver); 643 if (!registered)
644 register_console(&amiga_console_driver);
641 return 0; 645 return 0;
642} 646}
643 647
@@ -719,11 +723,16 @@ void amiga_serial_gets(struct console *co, char *s, int len)
719 723
720static int __init amiga_debug_setup(char *arg) 724static int __init amiga_debug_setup(char *arg)
721{ 725{
722 if (MACH_IS_AMIGA && !strcmp(arg, "ser")) { 726 bool registered;
723 /* no initialization required (?) */ 727
724 amiga_console_driver.write = amiga_serial_console_write; 728 if (!MACH_IS_AMIGA || strcmp(arg, "ser"))
729 return 0;
730
731 /* no initialization required (?) */
732 registered = !!amiga_console_driver.write;
733 amiga_console_driver.write = amiga_serial_console_write;
734 if (!registered)
725 register_console(&amiga_console_driver); 735 register_console(&amiga_console_driver);
726 }
727 return 0; 736 return 0;
728} 737}
729 738