x86/mce: Fix CPU hotplug and suspend regression related to MCE
authorSrivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Sat, 14 Jan 2012 02:41:31 +0000 (08:11 +0530)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 14 Jan 2012 03:11:35 +0000 (19:11 -0800)
Commit 8a25a2fd126c ("cpu: convert 'cpu' and 'machinecheck' sysdev_class
to a regular subsystem") changed how things are dealt with in the MCE
subsystem.  Some of the things that got broken due to this are CPU
hotplug and suspend/hibernate.

MCE uses per_cpu allocations of struct device.  So, when a CPU goes
offline and comes back online, in order to ensure that we start from a
clean slate with respect to the MCE subsystem, zero out the entire
per_cpu device structure to 0 before using it.

Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/x86/kernel/cpu/mcheck/mce.c

index f22a9f7f6390a62ce3d028df8dba0723b232b28a..29ba3297e48006bea5987678bb4806d3c534fc2c 100644 (file)
@@ -2011,7 +2011,7 @@ static __cpuinit int mce_device_create(unsigned int cpu)
        if (!mce_available(&boot_cpu_data))
                return -EIO;
 
-       memset(&dev->kobj, 0, sizeof(struct kobject));
+       memset(dev, 0, sizeof(struct device));
        dev->id  = cpu;
        dev->bus = &mce_subsys;