WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] Move idle-vcpu allocation logic to a comm

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] Move idle-vcpu allocation logic to a common function.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 02 Jun 2006 16:10:17 +0000
Delivery-date: Fri, 02 Jun 2006 09:56:48 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# 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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] Move idle-vcpu allocation logic to a common function., Xen patchbot-unstable <=