diff options
author | Stephen Rothwell <sfr@canb.auug.org.au> | 2008-06-13 13:39:00 +1000 |
---|---|---|
committer | Stephen Rothwell <sfr@canb.auug.org.au> | 2008-06-13 13:39:00 +1000 |
commit | f2603c77e8cd7777742da9eb8feea06fbd85c267 (patch) | |
tree | a2ecf7df8e2aed5db5fd58987390bb7ca65715d5 /kernel/time/tick-broadcast.c | |
parent | 9546e899e803ea8e738911b36bfcfe020031eefe (diff) | |
parent | 0536899878853e1963e516c322d4578dc5b4fcd0 (diff) |
Merge commit 'x86/auto-x86-next'
Conflicts:
arch/x86/kernel/io_apic_32.c
arch/x86/kernel/nmi_32.c
arch/x86/kernel/process_32.c
arch/x86/kernel/process_64.c
Diffstat (limited to 'kernel/time/tick-broadcast.c')
-rw-r--r-- | kernel/time/tick-broadcast.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c index 2d0a96346259..963dd30a2e0b 100644 --- a/kernel/time/tick-broadcast.c +++ b/kernel/time/tick-broadcast.c @@ -30,6 +30,7 @@ struct tick_device tick_broadcast_device; static cpumask_t tick_broadcast_mask; static DEFINE_SPINLOCK(tick_broadcast_lock); +static int tick_broadcast_force; #ifdef CONFIG_TICK_ONESHOT static void tick_broadcast_clear_oneshot(int cpu); @@ -232,10 +233,11 @@ static void tick_do_broadcast_on_off(void *why) CLOCK_EVT_MODE_SHUTDOWN); } if (*reason == CLOCK_EVT_NOTIFY_BROADCAST_FORCE) - dev->features |= CLOCK_EVT_FEAT_DUMMY; + tick_broadcast_force = 1; break; case CLOCK_EVT_NOTIFY_BROADCAST_OFF: - if (cpu_isset(cpu, tick_broadcast_mask)) { + if (!tick_broadcast_force && + cpu_isset(cpu, tick_broadcast_mask)) { cpu_clear(cpu, tick_broadcast_mask); if (td->mode == TICKDEV_MODE_PERIODIC) tick_setup_periodic(dev, 0); |