Merge tag 'smp-core-2020-03-30' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull core SMP updates from Thomas Gleixner: "CPU (hotplug) updates: - Support for locked CSD objects in smp_call_function_single_async() which allows to simplify callsites in the scheduler core and MIPS - Treewide consolidation of CPU hotplug functions which ensures the consistency between the sysfs interface and kernel state. The low level functions cpu_up/down() are now confined to the core code and not longer accessible from random code" * tag 'smp-core-2020-03-30' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (22 commits) cpu/hotplug: Ignore pm_wakeup_pending() for disable_nonboot_cpus() cpu/hotplug: Hide cpu_up/down() cpu/hotplug: Move bringup of secondary CPUs out of smp_init() torture: Replace cpu_up/down() with add/remove_cpu() firmware: psci: Replace cpu_up/down() with add/remove_cpu() xen/cpuhotplug: Replace cpu_up/down() with device_online/offline() parisc: Replace cpu_up/down() with add/remove_cpu() sparc: Replace cpu_up/down() with add/remove_cpu() powerpc: Replace cpu_up/down() with add/remove_cpu() x86/smp: Replace cpu_up/down() with add/remove_cpu() arm64: hibernate: Use bringup_hibernate_cpu() cpu/hotplug: Provide bringup_hibernate_cpu() arm64: Use reboot_cpu instead of hardconding it to 0 arm64: Don't use disable_nonboot_cpus() ARM: Use reboot_cpu instead of hardcoding it to 0 ARM: Don't use disable_nonboot_cpus() ia64: Replace cpu_down() with smp_shutdown_nonboot_cpus() cpu/hotplug: Create a new function to shutdown nonboot cpus cpu/hotplug: Add new {add,remove}_cpu() functions sched/core: Remove rq.hrtick_csd_pending ...
This commit is contained in:
@@ -59,39 +59,29 @@ __setup("cpu0_hotplug", enable_cpu0_hotplug);
|
||||
*/
|
||||
int _debug_hotplug_cpu(int cpu, int action)
|
||||
{
|
||||
struct device *dev = get_cpu_device(cpu);
|
||||
int ret;
|
||||
|
||||
if (!cpu_is_hotpluggable(cpu))
|
||||
return -EINVAL;
|
||||
|
||||
lock_device_hotplug();
|
||||
|
||||
switch (action) {
|
||||
case 0:
|
||||
ret = cpu_down(cpu);
|
||||
if (!ret) {
|
||||
ret = remove_cpu(cpu);
|
||||
if (!ret)
|
||||
pr_info("DEBUG_HOTPLUG_CPU0: CPU %u is now offline\n", cpu);
|
||||
dev->offline = true;
|
||||
kobject_uevent(&dev->kobj, KOBJ_OFFLINE);
|
||||
} else
|
||||
else
|
||||
pr_debug("Can't offline CPU%d.\n", cpu);
|
||||
break;
|
||||
case 1:
|
||||
ret = cpu_up(cpu);
|
||||
if (!ret) {
|
||||
dev->offline = false;
|
||||
kobject_uevent(&dev->kobj, KOBJ_ONLINE);
|
||||
} else {
|
||||
ret = add_cpu(cpu);
|
||||
if (ret)
|
||||
pr_debug("Can't online CPU%d.\n", cpu);
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
}
|
||||
|
||||
unlock_device_hotplug();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user