|
@@ -483,7 +483,13 @@ mc_cpu_callback(struct notifier_block *nb, unsigned long action, void *hcpu)
|
|
sysfs_remove_group(&sys_dev->kobj, &mc_attr_group);
|
|
sysfs_remove_group(&sys_dev->kobj, &mc_attr_group);
|
|
pr_debug("CPU%d removed\n", cpu);
|
|
pr_debug("CPU%d removed\n", cpu);
|
|
break;
|
|
break;
|
|
- case CPU_DEAD:
|
|
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * When a CPU goes offline, don't free up or invalidate the copy of
|
|
|
|
+ * the microcode in kernel memory, so that we can reuse it when the
|
|
|
|
+ * CPU comes back online without unnecessarily requesting the userspace
|
|
|
|
+ * for it again.
|
|
|
|
+ */
|
|
case CPU_UP_CANCELED_FROZEN:
|
|
case CPU_UP_CANCELED_FROZEN:
|
|
/* The CPU refused to come up during a system resume */
|
|
/* The CPU refused to come up during a system resume */
|
|
microcode_fini_cpu(cpu);
|
|
microcode_fini_cpu(cpu);
|