mirror of https://github.com/OpenIPC/firmware.git
49 lines
1.4 KiB
Diff
49 lines
1.4 KiB
Diff
diff -drupN a/kernel/cpu.c b/kernel/cpu.c
|
|
--- a/kernel/cpu.c 2018-08-06 17:23:04.000000000 +0300
|
|
+++ b/kernel/cpu.c 2022-06-12 05:28:14.000000000 +0300
|
|
@@ -1169,6 +1169,7 @@ void __weak arch_enable_nonboot_cpus_end
|
|
void enable_nonboot_cpus(void)
|
|
{
|
|
int cpu, error;
|
|
+ struct device *cpu_device;
|
|
|
|
/* Allow everyone to use the CPU hotplug again */
|
|
cpu_maps_update_begin();
|
|
@@ -1186,6 +1187,12 @@ void enable_nonboot_cpus(void)
|
|
trace_suspend_resume(TPS("CPU_ON"), cpu, false);
|
|
if (!error) {
|
|
pr_info("CPU%d is up\n", cpu);
|
|
+ cpu_device = get_cpu_device(cpu);
|
|
+ if (!cpu_device)
|
|
+ pr_err("%s: failed to get cpu%d device\n",
|
|
+ __func__, cpu);
|
|
+ else
|
|
+ kobject_uevent(&cpu_device->kobj, KOBJ_ONLINE);
|
|
continue;
|
|
}
|
|
pr_warn("Error taking CPU%d up: %d\n", cpu, error);
|
|
@@ -1948,3 +1955,23 @@ void __init boot_cpu_state_init(void)
|
|
{
|
|
per_cpu_ptr(&cpuhp_state, smp_processor_id())->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);
|