60 lines
2.2 KiB
Diff
60 lines
2.2 KiB
Diff
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
Date: Thu, 2 Feb 2012 10:36:33 -0800
|
|
Subject: driver core: cpu: remove kernel warning when removing a cpu
|
|
|
|
commit 2885e25c422fb68208f677f944a45fce8eda2a3c upstream.
|
|
|
|
With the movement of the cpu sysdev code to be real stuct devices, now
|
|
when we remove a cpu from the system, the driver core rightfully
|
|
complains that there is not a release method for this device.
|
|
|
|
For now, paper over this issue by quieting the driver core, but comment
|
|
this in detail. This will be resolved in future kernels to be solved
|
|
properly.
|
|
|
|
Reported-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
|
Tested-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
[bwh: Adjust context for textual conflict with commit
|
|
fad12ac8c8c2591c7f4e61d19b6a9d76cd49fafa]
|
|
---
|
|
drivers/base/cpu.c | 20 ++++++++++++++++++++
|
|
1 file changed, 20 insertions(+)
|
|
|
|
--- a/drivers/base/cpu.c
|
|
+++ b/drivers/base/cpu.c
|
|
@@ -209,6 +209,25 @@
|
|
}
|
|
static DEVICE_ATTR(offline, 0444, print_cpus_offline, NULL);
|
|
|
|
+static void cpu_device_release(struct device *dev)
|
|
+{
|
|
+ /*
|
|
+ * This is an empty function to prevent the driver core from spitting a
|
|
+ * warning at us. Yes, I know this is directly opposite of what the
|
|
+ * documentation for the driver core and kobjects say, and the author
|
|
+ * of this code has already been publically ridiculed for doing
|
|
+ * something as foolish as this. However, at this point in time, it is
|
|
+ * the only way to handle the issue of statically allocated cpu
|
|
+ * devices. The different architectures will have their cpu device
|
|
+ * code reworked to properly handle this in the near future, so this
|
|
+ * function will then be changed to correctly free up the memory held
|
|
+ * by the cpu device.
|
|
+ *
|
|
+ * Never copy this way of doing things, or you too will be made fun of
|
|
+ * on the linux-kerenl list, you have been warned.
|
|
+ */
|
|
+}
|
|
+
|
|
/*
|
|
* register_cpu - Setup a sysfs device for a CPU.
|
|
* @cpu - cpu->hotpluggable field set to 1 will generate a control file in
|
|
@@ -224,6 +243,7 @@
|
|
cpu->node_id = cpu_to_node(num);
|
|
cpu->dev.id = num;
|
|
cpu->dev.bus = &cpu_subsys;
|
|
+ cpu->dev.release = cpu_device_release;
|
|
#ifdef CONFIG_ARCH_HAS_CPU_AUTOPROBE
|
|
cpu->dev.bus->uevent = arch_cpu_uevent;
|
|
#endif
|