1
0
Fork 0

[ARM] 4258/2: Support for dynticks in idle loop

And, wrap timer_tick() and sysdev suspend/resume in
!GENERIC_CLOCKEVENTS since clockevent layer takes care
of these.

Signed-off-by: Kevin Hilman <khilman@mvista.com>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
hifive-unleashed-5.1
Kevin Hilman 2007-03-14 17:33:24 +01:00 committed by Russell King
parent 0567a0c022
commit 9e4559ddff
2 changed files with 6 additions and 1 deletions

View File

@ -27,6 +27,7 @@
#include <linux/cpu.h> #include <linux/cpu.h>
#include <linux/elfcore.h> #include <linux/elfcore.h>
#include <linux/pm.h> #include <linux/pm.h>
#include <linux/tick.h>
#include <asm/leds.h> #include <asm/leds.h>
#include <asm/processor.h> #include <asm/processor.h>
@ -159,9 +160,11 @@ void cpu_idle(void)
if (!idle) if (!idle)
idle = default_idle; idle = default_idle;
leds_event(led_idle_start); leds_event(led_idle_start);
tick_nohz_stop_sched_tick();
while (!need_resched()) while (!need_resched())
idle(); idle();
leds_event(led_idle_end); leds_event(led_idle_end);
tick_nohz_restart_sched_tick();
preempt_enable_no_resched(); preempt_enable_no_resched();
schedule(); schedule();
preempt_disable(); preempt_disable();

View File

@ -327,6 +327,7 @@ void restore_time_delta(struct timespec *delta, struct timespec *rtc)
} }
EXPORT_SYMBOL(restore_time_delta); EXPORT_SYMBOL(restore_time_delta);
#ifndef CONFIG_GENERIC_CLOCKEVENTS
/* /*
* Kernel system timer support. * Kernel system timer support.
*/ */
@ -340,8 +341,9 @@ void timer_tick(void)
update_process_times(user_mode(get_irq_regs())); update_process_times(user_mode(get_irq_regs()));
#endif #endif
} }
#endif
#ifdef CONFIG_PM #if defined(CONFIG_PM) && !defined(CONFIG_GENERIC_CLOCKEVENTS)
static int timer_suspend(struct sys_device *dev, pm_message_t state) static int timer_suspend(struct sys_device *dev, pm_message_t state)
{ {
struct sys_timer *timer = container_of(dev, struct sys_timer, dev); struct sys_timer *timer = container_of(dev, struct sys_timer, dev);