mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-30 05:06:44 +07:00
[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>
This commit is contained in:
parent
0567a0c022
commit
9e4559ddff
@ -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();
|
||||||
|
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user