x86/cpuid: Move the hotplug callbacks to online
authorThomas Gleixner <tglx@linutronix.de>
Mon, 21 Nov 2016 12:07:34 +0000 (13:07 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 22 Nov 2016 22:34:39 +0000 (23:34 +0100)
No point to have this file around before the cpu is online and no point to
have it around until the cpu is dead. Get rid of the explicit state.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Sebastian Siewior <bigeasy@linutronix.de>
arch/x86/kernel/cpuid.c
include/linux/cpuhotplug.h

index fd85e93e069195f4716df4e8c89977a2483939c9..373e372a0e1c256976be3923ab38431be317a4c2 100644 (file)
@@ -45,6 +45,7 @@
 #include <asm/msr.h>
 
 static struct class *cpuid_class;
+static enum cpuhp_state cpuhp_cpuid_state;
 
 struct cpuid_regs {
        u32 eax, ebx, ecx, edx;
@@ -152,11 +153,12 @@ static int __init cpuid_init(void)
        }
        cpuid_class->devnode = cpuid_devnode;
 
-       err = cpuhp_setup_state(CPUHP_X86_CPUID_PREPARE, "x86/cpuid:prepare",
+       err = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "x86/cpuid:online",
                                cpuid_device_create, cpuid_device_destroy);
-       if (err)
+       if (err < 0)
                goto out_class;
 
+       cpuhp_cpuid_state = err;
        return 0;
 
 out_class:
@@ -165,15 +167,14 @@ out_chrdev:
        __unregister_chrdev(CPUID_MAJOR, 0, NR_CPUS, "cpu/cpuid");
        return err;
 }
+module_init(cpuid_init);
 
 static void __exit cpuid_exit(void)
 {
-       cpuhp_remove_state(CPUHP_X86_CPUID_PREPARE);
+       cpuhp_remove_state(cpuhp_cpuid_state);
        class_destroy(cpuid_class);
        __unregister_chrdev(CPUID_MAJOR, 0, NR_CPUS, "cpu/cpuid");
 }
-
-module_init(cpuid_init);
 module_exit(cpuid_exit);
 
 MODULE_AUTHOR("H. Peter Anvin <hpa@zytor.com>");
index bc340ef2f2009b23acb69414a1113b0b46d5083c..79b96f647d643e1c715e90cd69d1160cd2f40452 100644 (file)
@@ -59,7 +59,6 @@ enum cpuhp_state {
        CPUHP_BLK_MQ_PREPARE,
        CPUHP_NET_FLOW_PREPARE,
        CPUHP_TOPOLOGY_PREPARE,
-       CPUHP_X86_CPUID_PREPARE,
        CPUHP_TIMERS_DEAD,
        CPUHP_NOTF_ERR_INJ_PREPARE,
        CPUHP_MIPS_SOC_PREPARE,