diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/printk.c | 3 | ||||
-rw-r--r-- | kernel/time/tick-broadcast.c | 6 |
2 files changed, 7 insertions, 2 deletions
diff --git a/kernel/printk.c b/kernel/printk.c index 8fb01c32aa3b..028ed75d4864 100644 --- a/kernel/printk.c +++ b/kernel/printk.c | |||
@@ -121,6 +121,8 @@ struct console_cmdline | |||
121 | static struct console_cmdline console_cmdline[MAX_CMDLINECONSOLES]; | 121 | static struct console_cmdline console_cmdline[MAX_CMDLINECONSOLES]; |
122 | static int selected_console = -1; | 122 | static int selected_console = -1; |
123 | static int preferred_console = -1; | 123 | static int preferred_console = -1; |
124 | int console_set_on_cmdline; | ||
125 | EXPORT_SYMBOL(console_set_on_cmdline); | ||
124 | 126 | ||
125 | /* Flag: console code may call schedule() */ | 127 | /* Flag: console code may call schedule() */ |
126 | static int console_may_schedule; | 128 | static int console_may_schedule; |
@@ -890,6 +892,7 @@ static int __init console_setup(char *str) | |||
890 | *s = 0; | 892 | *s = 0; |
891 | 893 | ||
892 | __add_preferred_console(buf, idx, options, brl_options); | 894 | __add_preferred_console(buf, idx, options, brl_options); |
895 | console_set_on_cmdline = 1; | ||
893 | return 1; | 896 | return 1; |
894 | } | 897 | } |
895 | __setup("console=", console_setup); | 898 | __setup("console=", console_setup); |
diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c index 57a1f02e5ec0..67f80c261709 100644 --- a/kernel/time/tick-broadcast.c +++ b/kernel/time/tick-broadcast.c | |||
@@ -30,6 +30,7 @@ | |||
30 | struct tick_device tick_broadcast_device; | 30 | struct tick_device tick_broadcast_device; |
31 | static cpumask_t tick_broadcast_mask; | 31 | static cpumask_t tick_broadcast_mask; |
32 | static DEFINE_SPINLOCK(tick_broadcast_lock); | 32 | static DEFINE_SPINLOCK(tick_broadcast_lock); |
33 | static int tick_broadcast_force; | ||
33 | 34 | ||
34 | #ifdef CONFIG_TICK_ONESHOT | 35 | #ifdef CONFIG_TICK_ONESHOT |
35 | static void tick_broadcast_clear_oneshot(int cpu); | 36 | static void tick_broadcast_clear_oneshot(int cpu); |
@@ -232,10 +233,11 @@ static void tick_do_broadcast_on_off(void *why) | |||
232 | CLOCK_EVT_MODE_SHUTDOWN); | 233 | CLOCK_EVT_MODE_SHUTDOWN); |
233 | } | 234 | } |
234 | if (*reason == CLOCK_EVT_NOTIFY_BROADCAST_FORCE) | 235 | if (*reason == CLOCK_EVT_NOTIFY_BROADCAST_FORCE) |
235 | dev->features |= CLOCK_EVT_FEAT_DUMMY; | 236 | tick_broadcast_force = 1; |
236 | break; | 237 | break; |
237 | case CLOCK_EVT_NOTIFY_BROADCAST_OFF: | 238 | case CLOCK_EVT_NOTIFY_BROADCAST_OFF: |
238 | if (cpu_isset(cpu, tick_broadcast_mask)) { | 239 | if (!tick_broadcast_force && |
240 | cpu_isset(cpu, tick_broadcast_mask)) { | ||
239 | cpu_clear(cpu, tick_broadcast_mask); | 241 | cpu_clear(cpu, tick_broadcast_mask); |
240 | if (td->mode == TICKDEV_MODE_PERIODIC) | 242 | if (td->mode == TICKDEV_MODE_PERIODIC) |
241 | tick_setup_periodic(dev, 0); | 243 | tick_setup_periodic(dev, 0); |