mirror of
https://github.com/torvalds/linux.git
synced 2024-11-17 09:31:50 +00:00
tick/broadcast: Split __tick_broadcast_oneshot_control() into a helper
In preparation for adding support for per-cpu wakeup timers, split _tick_broadcast_oneshot_control() into a helper function which deals only with the broadcast timer management across idle transitions. Signed-off-by: Will Deacon <will@kernel.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/r/20210524221818.15850-3-will@kernel.org
This commit is contained in:
parent
c2d4fee3f6
commit
e5007c288e
@ -717,24 +717,16 @@ static void broadcast_shutdown_local(struct clock_event_device *bc,
|
||||
clockevents_switch_state(dev, CLOCK_EVT_STATE_SHUTDOWN);
|
||||
}
|
||||
|
||||
int __tick_broadcast_oneshot_control(enum tick_broadcast_state state)
|
||||
static int ___tick_broadcast_oneshot_control(enum tick_broadcast_state state,
|
||||
struct tick_device *td,
|
||||
int cpu)
|
||||
{
|
||||
struct clock_event_device *bc, *dev;
|
||||
int cpu, ret = 0;
|
||||
struct clock_event_device *bc, *dev = td->evtdev;
|
||||
int ret = 0;
|
||||
ktime_t now;
|
||||
|
||||
/*
|
||||
* If there is no broadcast device, tell the caller not to go
|
||||
* into deep idle.
|
||||
*/
|
||||
if (!tick_broadcast_device.evtdev)
|
||||
return -EBUSY;
|
||||
|
||||
dev = this_cpu_ptr(&tick_cpu_device)->evtdev;
|
||||
|
||||
raw_spin_lock(&tick_broadcast_lock);
|
||||
bc = tick_broadcast_device.evtdev;
|
||||
cpu = smp_processor_id();
|
||||
|
||||
if (state == TICK_BROADCAST_ENTER) {
|
||||
/*
|
||||
@ -863,6 +855,21 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
int __tick_broadcast_oneshot_control(enum tick_broadcast_state state)
|
||||
{
|
||||
struct tick_device *td = this_cpu_ptr(&tick_cpu_device);
|
||||
int cpu = smp_processor_id();
|
||||
|
||||
if (tick_broadcast_device.evtdev)
|
||||
return ___tick_broadcast_oneshot_control(state, td, cpu);
|
||||
|
||||
/*
|
||||
* If there is no broadcast device, tell the caller not
|
||||
* to go into deep idle.
|
||||
*/
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
/*
|
||||
* Reset the one shot broadcast for a cpu
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user