# HG changeset patch
# User Keir Fraser <keir@xxxxxxx>
# Date 1294758683 0
# Node ID d03d7ebd513d617e7061fc69f7ea4d74825d4444
# Parent 5c0b28125957507fbf69d23da50b9f655a04c630
xen: add missing kobject_uevent() invocations for CPU hotplug code
Their counterparts in drivers/base/cpu.c:store_online() got added
around 2.6.12.
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
---
drivers/xen/core/cpu_hotplug.c | 17 ++++++++++-------
1 files changed, 10 insertions(+), 7 deletions(-)
diff -r 5c0b28125957 -r d03d7ebd513d drivers/xen/core/cpu_hotplug.c
--- a/drivers/xen/core/cpu_hotplug.c Mon Dec 20 09:24:55 2010 +0000
+++ b/drivers/xen/core/cpu_hotplug.c Tue Jan 11 15:11:23 2011 +0000
@@ -1,6 +1,7 @@
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/sched.h>
+#include <linux/kobject.h>
#include <linux/notifier.h>
#include <linux/cpu.h>
#include <xen/cpu_hotplug.h>
@@ -24,7 +25,7 @@ static int local_cpu_hotplug_request(voi
return (current->mm != NULL);
}
-static void vcpu_hotplug(unsigned int cpu)
+static void vcpu_hotplug(unsigned int cpu, struct sys_device *dev)
{
int err;
char dir[32], state[32];
@@ -41,10 +42,12 @@ static void vcpu_hotplug(unsigned int cp
if (strcmp(state, "online") == 0) {
cpu_set(cpu, xenbus_allowed_cpumask);
- (void)cpu_up(cpu);
+ if (!cpu_up(cpu) && dev)
+ kobject_uevent(&dev->kobj, KOBJ_ONLINE);
} else if (strcmp(state, "offline") == 0) {
cpu_clear(cpu, xenbus_allowed_cpumask);
- (void)cpu_down(cpu);
+ if (!cpu_down(cpu) && dev)
+ kobject_uevent(&dev->kobj, KOBJ_OFFLINE);
} else {
printk(KERN_ERR "XENBUS: unknown state(%s) on CPU%d\n",
state, cpu);
@@ -60,7 +63,7 @@ static void handle_vcpu_hotplug_event(
if ((cpustr = strstr(node, "cpu/")) != NULL) {
sscanf(cpustr, "cpu/%u", &cpu);
- vcpu_hotplug(cpu);
+ vcpu_hotplug(cpu, get_cpu_sysdev(cpu));
}
}
@@ -93,7 +96,7 @@ static int setup_cpu_watcher(struct noti
if (!is_initial_xendomain()) {
for_each_possible_cpu(i)
- vcpu_hotplug(i);
+ vcpu_hotplug(i, get_cpu_sysdev(i));
printk(KERN_INFO "Brought up %ld CPUs\n",
(long)num_online_cpus());
}
@@ -132,7 +135,7 @@ int smp_suspend(void)
printk(KERN_CRIT "Failed to take all CPUs "
"down: %d.\n", err);
for_each_possible_cpu(cpu)
- vcpu_hotplug(cpu);
+ vcpu_hotplug(cpu, NULL);
return err;
}
}
@@ -147,7 +150,7 @@ void smp_resume(void)
for_each_possible_cpu(cpu) {
if (cpu == 0)
continue;
- vcpu_hotplug(cpu);
+ vcpu_hotplug(cpu, NULL);
}
}
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|