Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a08adc98 authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "arm64: Call idle notifiers in CPU idle"

parents b0d26bf6 e5414a42
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -88,6 +88,16 @@ void arch_cpu_idle(void)
	trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, smp_processor_id());
}

void arch_cpu_idle_enter(void)
{
	idle_notifier_call_chain(IDLE_START);
}

void arch_cpu_idle_exit(void)
{
	idle_notifier_call_chain(IDLE_END);
}

#ifdef CONFIG_HOTPLUG_CPU
void arch_cpu_idle_dead(void)
{
+7 −0
Original line number Diff line number Diff line
@@ -189,4 +189,11 @@ static inline void cpu_smt_check_topology_early(void) { }
static inline void cpu_smt_check_topology(void) { }
#endif

#define IDLE_START 1
#define IDLE_END 2

void idle_notifier_register(struct notifier_block *n);
void idle_notifier_unregister(struct notifier_block *n);
void idle_notifier_call_chain(unsigned long val);

#endif /* _LINUX_CPU_H_ */
+20 −0
Original line number Diff line number Diff line
@@ -2291,3 +2291,23 @@ void __init boot_cpu_hotplug_init(void)
#endif
	this_cpu_write(cpuhp_state.state, CPUHP_ONLINE);
}

static ATOMIC_NOTIFIER_HEAD(idle_notifier);

void idle_notifier_register(struct notifier_block *n)
{
	atomic_notifier_chain_register(&idle_notifier, n);
}
EXPORT_SYMBOL_GPL(idle_notifier_register);

void idle_notifier_unregister(struct notifier_block *n)
{
	atomic_notifier_chain_unregister(&idle_notifier, n);
}
EXPORT_SYMBOL_GPL(idle_notifier_unregister);

void idle_notifier_call_chain(unsigned long val)
{
	atomic_notifier_call_chain(&idle_notifier, val, NULL);
}
EXPORT_SYMBOL_GPL(idle_notifier_call_chain);