diff options
Diffstat (limited to 'kernel/printk/printk.c')
-rw-r--r-- | kernel/printk/printk.c | 53 |
1 files changed, 18 insertions, 35 deletions
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 879edfc5ee52..c099b082cd02 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c | |||
@@ -2017,24 +2017,6 @@ int add_preferred_console(char *name, int idx, char *options) | |||
2017 | return __add_preferred_console(name, idx, options, NULL); | 2017 | return __add_preferred_console(name, idx, options, NULL); |
2018 | } | 2018 | } |
2019 | 2019 | ||
2020 | int update_console_cmdline(char *name, int idx, char *name_new, int idx_new, char *options) | ||
2021 | { | ||
2022 | struct console_cmdline *c; | ||
2023 | int i; | ||
2024 | |||
2025 | for (i = 0, c = console_cmdline; | ||
2026 | i < MAX_CMDLINECONSOLES && c->name[0]; | ||
2027 | i++, c++) | ||
2028 | if (strcmp(c->name, name) == 0 && c->index == idx) { | ||
2029 | strlcpy(c->name, name_new, sizeof(c->name)); | ||
2030 | c->options = options; | ||
2031 | c->index = idx_new; | ||
2032 | return i; | ||
2033 | } | ||
2034 | /* not found */ | ||
2035 | return -1; | ||
2036 | } | ||
2037 | |||
2038 | bool console_suspend_enabled = true; | 2020 | bool console_suspend_enabled = true; |
2039 | EXPORT_SYMBOL(console_suspend_enabled); | 2021 | EXPORT_SYMBOL(console_suspend_enabled); |
2040 | 2022 | ||
@@ -2436,9 +2418,6 @@ void register_console(struct console *newcon) | |||
2436 | if (preferred_console < 0 || bcon || !console_drivers) | 2418 | if (preferred_console < 0 || bcon || !console_drivers) |
2437 | preferred_console = selected_console; | 2419 | preferred_console = selected_console; |
2438 | 2420 | ||
2439 | if (newcon->early_setup) | ||
2440 | newcon->early_setup(); | ||
2441 | |||
2442 | /* | 2421 | /* |
2443 | * See if we want to use this console driver. If we | 2422 | * See if we want to use this console driver. If we |
2444 | * didn't select a console we take the first one | 2423 | * didn't select a console we take the first one |
@@ -2464,23 +2443,27 @@ void register_console(struct console *newcon) | |||
2464 | for (i = 0, c = console_cmdline; | 2443 | for (i = 0, c = console_cmdline; |
2465 | i < MAX_CMDLINECONSOLES && c->name[0]; | 2444 | i < MAX_CMDLINECONSOLES && c->name[0]; |
2466 | i++, c++) { | 2445 | i++, c++) { |
2467 | BUILD_BUG_ON(sizeof(c->name) != sizeof(newcon->name)); | 2446 | if (!newcon->match || |
2468 | if (strcmp(c->name, newcon->name) != 0) | 2447 | newcon->match(newcon, c->name, c->index, c->options) != 0) { |
2469 | continue; | 2448 | /* default matching */ |
2470 | if (newcon->index >= 0 && | 2449 | BUILD_BUG_ON(sizeof(c->name) != sizeof(newcon->name)); |
2471 | newcon->index != c->index) | 2450 | if (strcmp(c->name, newcon->name) != 0) |
2472 | continue; | 2451 | continue; |
2473 | if (newcon->index < 0) | 2452 | if (newcon->index >= 0 && |
2474 | newcon->index = c->index; | 2453 | newcon->index != c->index) |
2454 | continue; | ||
2455 | if (newcon->index < 0) | ||
2456 | newcon->index = c->index; | ||
2475 | 2457 | ||
2476 | if (_braille_register_console(newcon, c)) | 2458 | if (_braille_register_console(newcon, c)) |
2477 | return; | 2459 | return; |
2460 | |||
2461 | if (newcon->setup && | ||
2462 | newcon->setup(newcon, c->options) != 0) | ||
2463 | break; | ||
2464 | } | ||
2478 | 2465 | ||
2479 | if (newcon->setup && | ||
2480 | newcon->setup(newcon, console_cmdline[i].options) != 0) | ||
2481 | break; | ||
2482 | newcon->flags |= CON_ENABLED; | 2466 | newcon->flags |= CON_ENABLED; |
2483 | newcon->index = c->index; | ||
2484 | if (i == selected_console) { | 2467 | if (i == selected_console) { |
2485 | newcon->flags |= CON_CONSDEV; | 2468 | newcon->flags |= CON_CONSDEV; |
2486 | preferred_console = selected_console; | 2469 | preferred_console = selected_console; |