[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] Move idle-vcpu allocation logic to a common function.



# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 4122e88b6c752f22a859e10cdb5f0333496b3cf5
# Parent  e67432187b88ee60433779ad0f004b532ed378c8
Move idle-vcpu allocation logic to a common function.
Signed-off-by: Kevin Tian <kevin.tian@xxxxxxxxx>
---
 xen/arch/ia64/linux-xen/smpboot.c |    2 +-
 xen/arch/ia64/xen/xensetup.c      |    2 --
 xen/arch/x86/setup.c              |    2 --
 xen/arch/x86/smpboot.c            |   14 +-------------
 xen/common/domain.c               |   25 +++++++++++++++++++++++++
 xen/include/xen/domain.h          |    1 +
 6 files changed, 28 insertions(+), 18 deletions(-)

diff -r e67432187b88 -r 4122e88b6c75 xen/arch/ia64/linux-xen/smpboot.c
--- a/xen/arch/ia64/linux-xen/smpboot.c Fri Jun 02 09:20:58 2006 +0100
+++ b/xen/arch/ia64/linux-xen/smpboot.c Fri Jun 02 09:31:35 2006 +0100
@@ -488,7 +488,7 @@ do_rest:
 #else
        struct vcpu *v;
 
-       v = idle_vcpu[cpu] = alloc_vcpu(idle_vcpu[0]->domain, cpu, cpu);
+       v = alloc_idle_vcpu(cpu);
        BUG_ON(v == NULL);
 
        //printf ("do_boot_cpu: cpu=%d, domain=%p, vcpu=%p\n", cpu, idle, v);
diff -r e67432187b88 -r 4122e88b6c75 xen/arch/ia64/xen/xensetup.c
--- a/xen/arch/ia64/xen/xensetup.c      Fri Jun 02 09:20:58 2006 +0100
+++ b/xen/arch/ia64/xen/xensetup.c      Fri Jun 02 09:31:35 2006 +0100
@@ -35,8 +35,6 @@ char saved_command_line[COMMAND_LINE_SIZ
 char saved_command_line[COMMAND_LINE_SIZE];
 char dom0_command_line[COMMAND_LINE_SIZE];
 
-struct vcpu *idle_vcpu[NR_CPUS];
-
 cpumask_t cpu_present_map;
 
 extern unsigned long domain0_ready;
diff -r e67432187b88 -r 4122e88b6c75 xen/arch/x86/setup.c
--- a/xen/arch/x86/setup.c      Fri Jun 02 09:20:58 2006 +0100
+++ b/xen/arch/x86/setup.c      Fri Jun 02 09:31:35 2006 +0100
@@ -85,8 +85,6 @@ extern void early_cpu_init(void);
 
 struct tss_struct init_tss[NR_CPUS];
 
-struct vcpu *idle_vcpu[NR_CPUS];
-
 extern unsigned long cpu0_stack[];
 
 struct cpuinfo_x86 boot_cpu_data = { 0, 0, 0, 0, -1, 1, 0, 0, -1 };
diff -r e67432187b88 -r 4122e88b6c75 xen/arch/x86/smpboot.c
--- a/xen/arch/x86/smpboot.c    Fri Jun 02 09:20:58 2006 +0100
+++ b/xen/arch/x86/smpboot.c    Fri Jun 02 09:31:35 2006 +0100
@@ -887,25 +887,13 @@ static int __devinit do_boot_cpu(int api
        int timeout;
        unsigned long start_eip;
        unsigned short nmi_high = 0, nmi_low = 0;
-       struct domain *d;
        struct vcpu *v;
-       int vcpu_id;
 
        ++cpucount;
 
        booting_cpu = cpu;
 
-       if ((vcpu_id = cpu % MAX_VIRT_CPUS) == 0) {
-               d = domain_create(IDLE_DOMAIN_ID, cpu);
-               BUG_ON(d == NULL);
-               v = d->vcpu[0];
-       } else {
-               d = idle_vcpu[cpu - vcpu_id]->domain;
-               BUG_ON(d == NULL);
-               v = alloc_vcpu(d, vcpu_id, cpu);
-       }
-
-       idle_vcpu[cpu] = v;
+       v = alloc_idle_vcpu(cpu);
        BUG_ON(v == NULL);
 
        v->arch.monitor_table = pagetable_from_paddr(__pa(idle_pg_table));
diff -r e67432187b88 -r 4122e88b6c75 xen/common/domain.c
--- a/xen/common/domain.c       Fri Jun 02 09:20:58 2006 +0100
+++ b/xen/common/domain.c       Fri Jun 02 09:31:35 2006 +0100
@@ -32,6 +32,8 @@ struct domain *domain_list;
 
 struct domain *dom0;
 
+struct vcpu *idle_vcpu[NR_CPUS];
+
 struct domain *alloc_domain(domid_t domid)
 {
     struct domain *d;
@@ -104,6 +106,29 @@ struct vcpu *alloc_vcpu(
     return v;
 }
 
+struct vcpu *alloc_idle_vcpu(unsigned int cpu_id)
+{
+    struct domain *d;
+    struct vcpu *v;
+    unsigned int vcpu_id;
+
+    if ((vcpu_id = cpu_id % MAX_VIRT_CPUS) == 0)
+    {
+        d = domain_create(IDLE_DOMAIN_ID, cpu_id);
+        BUG_ON(d == NULL);
+        v = d->vcpu[0];
+    }
+    else
+    {
+        d = idle_vcpu[cpu_id - vcpu_id]->domain;
+        BUG_ON(d == NULL);
+        v = alloc_vcpu(d, vcpu_id, cpu_id);
+    }
+
+    idle_vcpu[cpu_id] = v;
+
+    return v;
+}
 
 struct domain *domain_create(domid_t domid, unsigned int cpu)
 {
diff -r e67432187b88 -r 4122e88b6c75 xen/include/xen/domain.h
--- a/xen/include/xen/domain.h  Fri Jun 02 09:20:58 2006 +0100
+++ b/xen/include/xen/domain.h  Fri Jun 02 09:31:35 2006 +0100
@@ -6,6 +6,7 @@ struct vcpu *alloc_vcpu(
     struct domain *d, unsigned int vcpu_id, unsigned int cpu_id);
 int boot_vcpu(
     struct domain *d, int vcpuid, struct vcpu_guest_context *ctxt);
+struct vcpu *alloc_idle_vcpu(unsigned int cpu_id);
 
 struct domain *alloc_domain(domid_t domid);
 void free_domain(struct domain *d);

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.