[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [linux-2.6.18-xen] xen: add missing kobject_uevent() invocations for CPU hotplug code
# 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |