|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] [xen-unstable] x86: Add sysctl for cpu online/offline
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1222096024 -3600
# Node ID 0c8d2e44126d2562dbc71732889051076728034b
# Parent 415c3da25b26296335a3c6cf0511957f48dfd601
x86: Add sysctl for cpu online/offline
Signed-off-by: Shan Haitao <haitao.shan@xxxxxxxxx>
---
xen/arch/x86/sysctl.c | 25 +++++++++++++++++++++++++
xen/include/public/sysctl.h | 13 +++++++++++++
2 files changed, 38 insertions(+)
diff -r 415c3da25b26 -r 0c8d2e44126d xen/arch/x86/sysctl.c
--- a/xen/arch/x86/sysctl.c Mon Sep 22 15:56:12 2008 +0100
+++ b/xen/arch/x86/sysctl.c Mon Sep 22 16:07:04 2008 +0100
@@ -28,6 +28,12 @@
#include <xsm/xsm.h>
#define get_xen_guest_handle(val, hnd) do { val = (hnd).p; } while (0)
+
+static long cpu_down_helper(void *data)
+{
+ int cpu = (unsigned long)data;
+ return cpu_down(cpu);
+}
long arch_do_sysctl(
struct xen_sysctl *sysctl, XEN_GUEST_HANDLE(xen_sysctl_t) u_sysctl)
@@ -92,6 +98,25 @@ long arch_do_sysctl(
}
break;
+ case XEN_SYSCTL_cpu_hotplug:
+ {
+ unsigned int cpu = sysctl->u.cpu_hotplug.cpu;
+
+ switch ( sysctl->u.cpu_hotplug.op )
+ {
+ case XEN_SYSCTL_CPU_HOTPLUG_ONLINE:
+ ret = cpu_up(cpu);
+ break;
+ case XEN_SYSCTL_CPU_HOTPLUG_OFFLINE:
+ ret = continue_hypercall_on_cpu(
+ 0, cpu_down_helper, (void *)(unsigned long)cpu);
+ break;
+ default:
+ ret = -EINVAL;
+ break;
+ }
+ }
+ break;
default:
ret = -ENOSYS;
diff -r 415c3da25b26 -r 0c8d2e44126d xen/include/public/sysctl.h
--- a/xen/include/public/sysctl.h Mon Sep 22 15:56:12 2008 +0100
+++ b/xen/include/public/sysctl.h Mon Sep 22 16:07:04 2008 +0100
@@ -262,6 +262,18 @@ typedef struct xen_sysctl_get_pmstat xen
typedef struct xen_sysctl_get_pmstat xen_sysctl_get_pmstat_t;
DEFINE_XEN_GUEST_HANDLE(xen_sysctl_get_pmstat_t);
+#define XEN_SYSCTL_cpu_hotplug 11
+struct xen_sysctl_cpu_hotplug {
+ /* IN variables */
+ uint32_t cpu; /* Physical cpu. */
+#define XEN_SYSCTL_CPU_HOTPLUG_ONLINE 0
+#define XEN_SYSCTL_CPU_HOTPLUG_OFFLINE 1
+ uint32_t op; /* hotplug opcode */
+};
+typedef struct xen_sysctl_cpu_hotplug xen_sysctl_cpu_hotplug_t;
+DEFINE_XEN_GUEST_HANDLE(xen_sysctl_cpu_hotplug_t);
+
+
struct xen_sysctl {
uint32_t cmd;
uint32_t interface_version; /* XEN_SYSCTL_INTERFACE_VERSION */
@@ -276,6 +288,7 @@ struct xen_sysctl {
struct xen_sysctl_getcpuinfo getcpuinfo;
struct xen_sysctl_availheap availheap;
struct xen_sysctl_get_pmstat get_pmstat;
+ struct xen_sysctl_cpu_hotplug cpu_hotplug;
uint8_t pad[128];
} u;
};
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] [xen-unstable] x86: Add sysctl for cpu online/offline,
Xen patchbot-unstable <=
|
|
|
|
|