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

[Xen-changelog] vlapic_init alloc memory for struct vlapic, so it should do a memset on



# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID b180310a0d2ce3b76ca435269c7c99da62f8beec
# Parent  2e880b1fbe84645841e3b024940150d0b5a9c09a
vlapic_init alloc memory for struct vlapic, so it should do a memset on
it, not vlapic_reset.

Signed-off-by: Xin Li <xin.b.li@xxxxxxxxx>

diff -r 2e880b1fbe84 -r b180310a0d2c xen/arch/x86/vmx_vlapic.c
--- a/xen/arch/x86/vmx_vlapic.c Sat Nov  5 09:55:38 2005
+++ b/xen/arch/x86/vmx_vlapic.c Sat Nov  5 10:23:02 2005
@@ -659,7 +659,7 @@
         vlapic->spurious_vec = val & 0x1ff;
         if (!(vlapic->spurious_vec & 0x100)) {
             int i = 0;
-            for (i=0; i < VLAPIC_LVT_NUM; i++) 
+            for (i = 0; i < VLAPIC_LVT_NUM; i++)
                 vlapic->lvt[i] |= 0x10000;
             vlapic->status |= VLAPIC_SOFTWARE_DISABLE_MASK;
         }
@@ -723,10 +723,12 @@
         vlapic->timer_current = val;
         vlapic->timer_current_update = NOW();
 
-        VMX_DBG_LOG(DBG_LEVEL_VLAPIC,
-          "timer_init %x timer_current %x timer_current_update %08x%08x",
-          vlapic->timer_initial, vlapic->timer_current, 
(uint32_t)(vlapic->timer_current_update>>32), 
(uint32_t)vlapic->timer_current_update);
-        vlapic_begin_timer(vlapic);
+        VMX_DBG_LOG(DBG_LEVEL_VLAPIC, "timer_init %x timer_current %x"
+                    "timer_current_update %08x%08x",
+                    vlapic->timer_initial, vlapic->timer_current,
+                    (uint32_t)(vlapic->timer_current_update >> 32),
+                    (uint32_t)vlapic->timer_current_update);
+                    vlapic_begin_timer(vlapic);
         break;
 
     case APIC_TDCR:
@@ -920,19 +922,22 @@
 
 static int vlapic_reset(struct vlapic *vlapic)
 {
-    struct vcpu *v = vlapic->vcpu;
-    int apic_id = v->vcpu_id, i;
-
-    if (!v || !vlapic)
-        return 0;
-
-    memset(vlapic, 0,sizeof(struct vlapic));
-
-    v->arch.arch_vmx.vlapic = vlapic;
+    struct vcpu *v;
+    int apic_id, i;
+
+    ASSERT( vlapic != NULL );
+
+    v = vlapic->vcpu;
+
+    ASSERT( v != NULL );
+
+    apic_id = v->vcpu_id;
 
     vlapic->domain = v->domain;
 
     vlapic->id = apic_id;
+
+    vlapic->vcpu_id = v->vcpu_id;
 
     vlapic->version = VLAPIC_VERSION;
 
@@ -940,6 +945,7 @@
 
     if (apic_id == 0)
         vlapic->apic_base_msr |= MSR_IA32_APICBASE_BSP;
+
     vlapic->base_address = vlapic_get_base_address(vlapic);
 
     for (i = 0; i < VLAPIC_LVT_NUM; i++)
@@ -949,9 +955,8 @@
 
     vlapic->spurious_vec = 0xff;
 
-
     init_ac_timer(&vlapic->vlapic_timer,
-      vlapic_timer_fn, vlapic, v->processor);
+                  vlapic_timer_fn, vlapic, v->processor);
 
 #ifdef VLAPIC_NO_BIOS
     /*
@@ -966,10 +971,10 @@
 #endif
 
     VMX_DBG_LOG(DBG_LEVEL_VLAPIC, "vlapic_reset: "
-      "vcpu=%p id=%d vlapic_apic_base_msr=%08x%08x "
-      "vlapic_base_address=%0lx",
-      v, vlapic->id, (uint32_t)(vlapic->apic_base_msr >> 32),
-      (uint32_t)vlapic->apic_base_msr, vlapic->base_address);
+                "vcpu=%p id=%d vlapic_apic_base_msr=%08x%08x "
+                "vlapic_base_address=%0lx",
+                v, vlapic->id, (uint32_t)(vlapic->apic_base_msr >> 32),
+                (uint32_t)vlapic->apic_base_msr, vlapic->base_address);
 
     return 1;
 }
@@ -978,15 +983,20 @@
 {
     struct vlapic *vlapic = NULL;
 
+    ASSERT( v != NULL );
+
     VMX_DBG_LOG(DBG_LEVEL_VLAPIC, "vlapic_init %d", v->vcpu_id);
 
     vlapic = xmalloc_bytes(sizeof(struct vlapic));
-
     if (!vlapic) {
         printk("malloc vlapic error for vcpu %x\n", v->vcpu_id);
         return -ENOMEM;
     }
 
+    memset(vlapic, 0, sizeof(struct vlapic));
+
+    VLAPIC(v) = vlapic;
+
     vlapic->vcpu = v;
 
     vlapic_reset(vlapic);

_______________________________________________
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®.