Skip to contentSkip to conversation

xen viridian: cleanup

PATCH In review Christoph Egger 3 participants 3 messages Oct 11, 2011 – Oct 13, 2011

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 xen viridian: cleanup

Simplify accesses into viridian structures.

Signature · 6 lines
---to satisfy European Law for business letters:
Advanced Micro Devices GmbH
Einsteinring 24, 85689 Dornach b. Muenchen
Geschaeftsfuehrer: Alberto Bozzo, Andrew Bowd
Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen
Registergericht Muenchen, HRB Nr. 43632
xen/arch/x86/hvm/viridian.c +34 -22
diff -r 04fbcc0c1ec5 xen/arch/x86/hvm/viridian.c
@@ -98,37 +98,43 @@ int cpuid_viridian_leaves(unsigned int l
 
 void dump_guest_os_id(struct domain *d)
 {
+    struct viridian_domain *vd = &d->arch.hvm_domain.viridian;
+
     gdprintk(XENLOG_INFO, "GUEST_OS_ID:\n");
     gdprintk(XENLOG_INFO, "\tvendor: %x\n",
-            d->arch.hvm_domain.viridian.guest_os_id.fields.vendor);
+            vd->guest_os_id.fields.vendor);
     gdprintk(XENLOG_INFO, "\tos: %x\n",
-            d->arch.hvm_domain.viridian.guest_os_id.fields.os);
+            vd->guest_os_id.fields.os);
     gdprintk(XENLOG_INFO, "\tmajor: %x\n",
-            d->arch.hvm_domain.viridian.guest_os_id.fields.major);
+            vd->guest_os_id.fields.major);
     gdprintk(XENLOG_INFO, "\tminor: %x\n",
-            d->arch.hvm_domain.viridian.guest_os_id.fields.minor);
+            vd->guest_os_id.fields.minor);
     gdprintk(XENLOG_INFO, "\tsp: %x\n",
-            d->arch.hvm_domain.viridian.guest_os_id.fields.service_pack);
+            vd->guest_os_id.fields.service_pack);
     gdprintk(XENLOG_INFO, "\tbuild: %x\n",
-            d->arch.hvm_domain.viridian.guest_os_id.fields.build_number);
+            vd->guest_os_id.fields.build_number);
 }
 
 void dump_hypercall(struct domain *d)
 {
+    struct viridian_domain *vd = &d->arch.hvm_domain.viridian;
+
     gdprintk(XENLOG_INFO, "HYPERCALL:\n");
     gdprintk(XENLOG_INFO, "\tenabled: %x\n",
-            d->arch.hvm_domain.viridian.hypercall_gpa.fields.enabled);
+            vd->hypercall_gpa.fields.enabled);
     gdprintk(XENLOG_INFO, "\tpfn: %lx\n",
-            (unsigned long)d->arch.hvm_domain.viridian.hypercall_gpa.fields.pfn);
+            (unsigned long)vd->hypercall_gpa.fields.pfn);
 }
 
 void dump_apic_assist(struct vcpu *v)
 {
+    struct viridian_vcpu *vv = &v->arch.hvm_vcpu.viridian;
+
     gdprintk(XENLOG_INFO, "APIC_ASSIST[%d]:\n", v->vcpu_id);
     gdprintk(XENLOG_INFO, "\tenabled: %x\n",
-            v->arch.hvm_vcpu.viridian.apic_assist.fields.enabled);
+            vv->apic_assist.fields.enabled);
     gdprintk(XENLOG_INFO, "\tpfn: %lx\n",
-            (unsigned long)v->arch.hvm_vcpu.viridian.apic_assist.fields.pfn);
+            (unsigned long)vv->apic_assist.fields.pfn);
 }
 
 static void enable_hypercall_page(struct domain *d)
@@ -201,6 +207,8 @@ int wrmsr_viridian_regs(uint32_t idx, ui
 {
     struct vcpu *v = current;
     struct domain *d = v->domain;
+    struct viridian_domain *vd = &d->arch.hvm_domain.viridian;
+    struct viridian_vcpu *vv = &v->arch.hvm_vcpu.viridian;
 
     if ( !is_viridian_domain(d) )
         return 0;
@@ -209,15 +217,15 @@ int wrmsr_viridian_regs(uint32_t idx, ui
     {
     case VIRIDIAN_MSR_GUEST_OS_ID:
         perfc_incr(mshv_wrmsr_osid);
-        d->arch.hvm_domain.viridian.guest_os_id.raw = val;
+        vd->guest_os_id.raw = val;
         dump_guest_os_id(d);
         break;
 
     case VIRIDIAN_MSR_HYPERCALL:
         perfc_incr(mshv_wrmsr_hc_page);
-        d->arch.hvm_domain.viridian.hypercall_gpa.raw = val;
+        vd->hypercall_gpa.raw = val;
         dump_hypercall(d);
-        if ( d->arch.hvm_domain.viridian.hypercall_gpa.fields.enabled )
+        if ( vd->hypercall_gpa.fields.enabled )
             enable_hypercall_page(d);
         break;
 
@@ -249,9 +257,9 @@ int wrmsr_viridian_regs(uint32_t idx, ui
 
     case VIRIDIAN_MSR_APIC_ASSIST:
         perfc_incr(mshv_wrmsr_apic_msr);
-        v->arch.hvm_vcpu.viridian.apic_assist.raw = val;
+        vv->apic_assist.raw = val;
         dump_apic_assist(v);
-        if (v->arch.hvm_vcpu.viridian.apic_assist.fields.enabled)
+        if (vv->apic_assist.fields.enabled)
             initialize_apic_assist(v);
         break;
 
@@ -266,6 +274,8 @@ int rdmsr_viridian_regs(uint32_t idx, ui
 {
     struct vcpu *v = current;
     struct domain *d = v->domain;
+    struct viridian_domain *vd = &d->arch.hvm_domain.viridian;
+    struct viridian_vcpu *vv = &v->arch.hvm_vcpu.viridian;
     
     if ( !is_viridian_domain(d) )
         return 0;
@@ -274,12 +284,12 @@ int rdmsr_viridian_regs(uint32_t idx, ui
     {
     case VIRIDIAN_MSR_GUEST_OS_ID:
         perfc_incr(mshv_rdmsr_osid);
-        *val = d->arch.hvm_domain.viridian.guest_os_id.raw;
+        *val = vd->guest_os_id.raw;
         break;
 
     case VIRIDIAN_MSR_HYPERCALL:
         perfc_incr(mshv_rdmsr_hc_page);
-        *val = d->arch.hvm_domain.viridian.hypercall_gpa.raw;
+        *val = vd->hypercall_gpa.raw;
         break;
 
     case VIRIDIAN_MSR_VP_INDEX:
@@ -300,7 +310,7 @@ int rdmsr_viridian_regs(uint32_t idx, ui
 
     case VIRIDIAN_MSR_APIC_ASSIST:
         perfc_incr(mshv_rdmsr_apic_msr);
-        *val = v->arch.hvm_vcpu.viridian.apic_assist.raw;
+        *val = vv->apic_assist.raw;
         break;
 
     default:
@@ -390,12 +400,13 @@ out:
 static int viridian_save_domain_ctxt(struct domain *d, hvm_domain_context_t *h)
 {
     struct hvm_viridian_domain_context ctxt;
+    struct viridian_domain *vd = &d->arch.hvm_domain.viridian;
 
     if ( !is_viridian_domain(d) )
         return 0;
 
-    ctxt.hypercall_gpa = d->arch.hvm_domain.viridian.hypercall_gpa.raw;
-    ctxt.guest_os_id   = d->arch.hvm_domain.viridian.guest_os_id.raw;
+    ctxt.hypercall_gpa = vd->hypercall_gpa.raw;
+    ctxt.guest_os_id   = vd->guest_os_id.raw;
 
     return (hvm_save_entry(VIRIDIAN_DOMAIN, 0, h, &ctxt) != 0);
 }
@@ -403,12 +414,13 @@ static int viridian_save_domain_ctxt(str
 static int viridian_load_domain_ctxt(struct domain *d, hvm_domain_context_t *h)
 {
     struct hvm_viridian_domain_context ctxt;
+    struct viridian_domain *vd = &d->arch.hvm_domain.viridian;
 
     if ( hvm_load_entry(VIRIDIAN_DOMAIN, h, &ctxt) != 0 )
         return -EINVAL;
 
-    d->arch.hvm_domain.viridian.hypercall_gpa.raw = ctxt.hypercall_gpa;
-    d->arch.hvm_domain.viridian.guest_os_id.raw   = ctxt.guest_os_id;
+    vd->hypercall_gpa.raw = ctxt.hypercall_gpa;
+    vd->guest_os_id.raw   = ctxt.guest_os_id;
 
     return 0;
 }

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel

#1 lore raw
Quoted 2 lines · Christoph Egger

Simplify accesses into viridian structures.

I'm afraid this looks like a bunch of code churn for not much benefit; unless anyone else wants it I don't think I'll apply it.

Cheers,

Tim.

Quoted 9 lines
Signature · 6 lines
---to satisfy European Law for business letters:
Advanced Micro Devices GmbH
Einsteinring 24, 85689 Dornach b. Muenchen
Geschaeftsfuehrer: Alberto Bozzo, Andrew Bowd
Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen
Registergericht Muenchen, HRB Nr. 43632

Content-Description: xen_viridian.diff

Quoted 167 lines

diff -r 04fbcc0c1ec5 xen/arch/x86/hvm/viridian.c

xen/arch/x86/hvm/viridian.c +34 -22
@@ -98,37 +98,43 @@ int cpuid_viridian_leaves(unsigned int l
 
 void dump_guest_os_id(struct domain *d)
 {
+    struct viridian_domain *vd = &d->arch.hvm_domain.viridian;
+
     gdprintk(XENLOG_INFO, "GUEST_OS_ID:\n");
     gdprintk(XENLOG_INFO, "\tvendor: %x\n",
-            d->arch.hvm_domain.viridian.guest_os_id.fields.vendor);
+            vd->guest_os_id.fields.vendor);
     gdprintk(XENLOG_INFO, "\tos: %x\n",
-            d->arch.hvm_domain.viridian.guest_os_id.fields.os);
+            vd->guest_os_id.fields.os);
     gdprintk(XENLOG_INFO, "\tmajor: %x\n",
-            d->arch.hvm_domain.viridian.guest_os_id.fields.major);
+            vd->guest_os_id.fields.major);
     gdprintk(XENLOG_INFO, "\tminor: %x\n",
-            d->arch.hvm_domain.viridian.guest_os_id.fields.minor);
+            vd->guest_os_id.fields.minor);
     gdprintk(XENLOG_INFO, "\tsp: %x\n",
-            d->arch.hvm_domain.viridian.guest_os_id.fields.service_pack);
+            vd->guest_os_id.fields.service_pack);
     gdprintk(XENLOG_INFO, "\tbuild: %x\n",
-            d->arch.hvm_domain.viridian.guest_os_id.fields.build_number);
+            vd->guest_os_id.fields.build_number);
 }
 
 void dump_hypercall(struct domain *d)
 {
+    struct viridian_domain *vd = &d->arch.hvm_domain.viridian;
+
     gdprintk(XENLOG_INFO, "HYPERCALL:\n");
     gdprintk(XENLOG_INFO, "\tenabled: %x\n",
-            d->arch.hvm_domain.viridian.hypercall_gpa.fields.enabled);
+            vd->hypercall_gpa.fields.enabled);
     gdprintk(XENLOG_INFO, "\tpfn: %lx\n",
-            (unsigned long)d->arch.hvm_domain.viridian.hypercall_gpa.fields.pfn);
+            (unsigned long)vd->hypercall_gpa.fields.pfn);
 }
 
 void dump_apic_assist(struct vcpu *v)
 {
+    struct viridian_vcpu *vv = &v->arch.hvm_vcpu.viridian;
+
     gdprintk(XENLOG_INFO, "APIC_ASSIST[%d]:\n", v->vcpu_id);
     gdprintk(XENLOG_INFO, "\tenabled: %x\n",
-            v->arch.hvm_vcpu.viridian.apic_assist.fields.enabled);
+            vv->apic_assist.fields.enabled);
     gdprintk(XENLOG_INFO, "\tpfn: %lx\n",
-            (unsigned long)v->arch.hvm_vcpu.viridian.apic_assist.fields.pfn);
+            (unsigned long)vv->apic_assist.fields.pfn);
 }
 
 static void enable_hypercall_page(struct domain *d)
@@ -201,6 +207,8 @@ int wrmsr_viridian_regs(uint32_t idx, ui
 {
     struct vcpu *v = current;
     struct domain *d = v->domain;
+    struct viridian_domain *vd = &d->arch.hvm_domain.viridian;
+    struct viridian_vcpu *vv = &v->arch.hvm_vcpu.viridian;
 
     if ( !is_viridian_domain(d) )
         return 0;
@@ -209,15 +217,15 @@ int wrmsr_viridian_regs(uint32_t idx, ui
     {
     case VIRIDIAN_MSR_GUEST_OS_ID:
         perfc_incr(mshv_wrmsr_osid);
-        d->arch.hvm_domain.viridian.guest_os_id.raw = val;
+        vd->guest_os_id.raw = val;
         dump_guest_os_id(d);
         break;
 
     case VIRIDIAN_MSR_HYPERCALL:
         perfc_incr(mshv_wrmsr_hc_page);
-        d->arch.hvm_domain.viridian.hypercall_gpa.raw = val;
+        vd->hypercall_gpa.raw = val;
         dump_hypercall(d);
-        if ( d->arch.hvm_domain.viridian.hypercall_gpa.fields.enabled )
+        if ( vd->hypercall_gpa.fields.enabled )
             enable_hypercall_page(d);
         break;
 
@@ -249,9 +257,9 @@ int wrmsr_viridian_regs(uint32_t idx, ui
 
     case VIRIDIAN_MSR_APIC_ASSIST:
         perfc_incr(mshv_wrmsr_apic_msr);
-        v->arch.hvm_vcpu.viridian.apic_assist.raw = val;
+        vv->apic_assist.raw = val;
         dump_apic_assist(v);
-        if (v->arch.hvm_vcpu.viridian.apic_assist.fields.enabled)
+        if (vv->apic_assist.fields.enabled)
             initialize_apic_assist(v);
         break;
 
@@ -266,6 +274,8 @@ int rdmsr_viridian_regs(uint32_t idx, ui
 {
     struct vcpu *v = current;
     struct domain *d = v->domain;
+    struct viridian_domain *vd = &d->arch.hvm_domain.viridian;
+    struct viridian_vcpu *vv = &v->arch.hvm_vcpu.viridian;
 
     if ( !is_viridian_domain(d) )
         return 0;
@@ -274,12 +284,12 @@ int rdmsr_viridian_regs(uint32_t idx, ui
     {
     case VIRIDIAN_MSR_GUEST_OS_ID:
         perfc_incr(mshv_rdmsr_osid);
-        *val = d->arch.hvm_domain.viridian.guest_os_id.raw;
+        *val = vd->guest_os_id.raw;
         break;
 
     case VIRIDIAN_MSR_HYPERCALL:
         perfc_incr(mshv_rdmsr_hc_page);
-        *val = d->arch.hvm_domain.viridian.hypercall_gpa.raw;
+        *val = vd->hypercall_gpa.raw;
         break;
 
     case VIRIDIAN_MSR_VP_INDEX:
@@ -300,7 +310,7 @@ int rdmsr_viridian_regs(uint32_t idx, ui
 
     case VIRIDIAN_MSR_APIC_ASSIST:
         perfc_incr(mshv_rdmsr_apic_msr);
-        *val = v->arch.hvm_vcpu.viridian.apic_assist.raw;
+        *val = vv->apic_assist.raw;
         break;
 
     default:
@@ -390,12 +400,13 @@ out:
 static int viridian_save_domain_ctxt(struct domain *d, hvm_domain_context_t *h)
 {
     struct hvm_viridian_domain_context ctxt;
+    struct viridian_domain *vd = &d->arch.hvm_domain.viridian;
 
     if ( !is_viridian_domain(d) )
         return 0;
 
-    ctxt.hypercall_gpa = d->arch.hvm_domain.viridian.hypercall_gpa.raw;
-    ctxt.guest_os_id   = d->arch.hvm_domain.viridian.guest_os_id.raw;
+    ctxt.hypercall_gpa = vd->hypercall_gpa.raw;
+    ctxt.guest_os_id   = vd->guest_os_id.raw;
 
     return (hvm_save_entry(VIRIDIAN_DOMAIN, 0, h, &ctxt) != 0);
 }
@@ -403,12 +414,13 @@ static int viridian_save_domain_ctxt(str
 static int viridian_load_domain_ctxt(struct domain *d, hvm_domain_context_t *h)
 {
     struct hvm_viridian_domain_context ctxt;
+    struct viridian_domain *vd = &d->arch.hvm_domain.viridian;
 
     if ( hvm_load_entry(VIRIDIAN_DOMAIN, h, &ctxt) != 0 )
         return -EINVAL;
 
-    d->arch.hvm_domain.viridian.hypercall_gpa.raw = ctxt.hypercall_gpa;
-    d->arch.hvm_domain.viridian.guest_os_id.raw   = ctxt.guest_os_id;
+    vd->hypercall_gpa.raw = ctxt.hypercall_gpa;
+    vd->guest_os_id.raw   = ctxt.guest_os_id;
 
     return 0;
 }

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel

#2 lore raw
Quoted 6 lines · Tim Deegan
Quoted 2 lines · Christoph Egger

Simplify accesses into viridian structures.

I'm afraid this looks like a bunch of code churn for not much benefit; unless anyone else wants it I don't think I'll apply it.

Well, it looks like a reasonable cleanup to me, but if we're doing it then I think we should use the shorthand forms idiomatically in every function in viridian.c, even where only one field access occurs for example.

-- Keir

Quoted 192 lines

Cheers,

Tim.

Quoted 9 lines
Signature · 6 lines
---to satisfy European Law for business letters:
Advanced Micro Devices GmbH
Einsteinring 24, 85689 Dornach b. Muenchen
Geschaeftsfuehrer: Alberto Bozzo, Andrew Bowd
Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen
Registergericht Muenchen, HRB Nr. 43632

Content-Description: xen_viridian.diff

Quoted 167 lines

diff -r 04fbcc0c1ec5 xen/arch/x86/hvm/viridian.c

xen/arch/x86/hvm/viridian.c Wed Sep 28 12:45:39 2011 +0200 renamed from xen/arch/x86/hvm/viridian.c Wed Sep 28 12:09:13 2011 +0200 +16 -10
@@ -98,37 +98,43 @@ int cpuid_viridian_leaves(unsigned int l
 
 void dump_guest_os_id(struct domain *d)
 {
+    struct viridian_domain *vd = &d->arch.hvm_domain.viridian;
+
     gdprintk(XENLOG_INFO, "GUEST_OS_ID:\n");
     gdprintk(XENLOG_INFO, "\tvendor: %x\n",
-            d->arch.hvm_domain.viridian.guest_os_id.fields.vendor);
+            vd->guest_os_id.fields.vendor);
     gdprintk(XENLOG_INFO, "\tos: %x\n",
-            d->arch.hvm_domain.viridian.guest_os_id.fields.os);
+            vd->guest_os_id.fields.os);
     gdprintk(XENLOG_INFO, "\tmajor: %x\n",
-            d->arch.hvm_domain.viridian.guest_os_id.fields.major);
+            vd->guest_os_id.fields.major);
     gdprintk(XENLOG_INFO, "\tminor: %x\n",
-            d->arch.hvm_domain.viridian.guest_os_id.fields.minor);
+            vd->guest_os_id.fields.minor);
     gdprintk(XENLOG_INFO, "\tsp: %x\n",
-            d->arch.hvm_domain.viridian.guest_os_id.fields.service_pack);
+            vd->guest_os_id.fields.service_pack);
     gdprintk(XENLOG_INFO, "\tbuild: %x\n",
-            d->arch.hvm_domain.viridian.guest_os_id.fields.build_number);
+            vd->guest_os_id.fields.build_number);
 }
 
 void dump_hypercall(struct domain *d)
 {
+    struct viridian_domain *vd = &d->arch.hvm_domain.viridian;
+
     gdprintk(XENLOG_INFO, "HYPERCALL:\n");
     gdprintk(XENLOG_INFO, "\tenabled: %x\n",
-            d->arch.hvm_domain.viridian.hypercall_gpa.fields.enabled);
+            vd->hypercall_gpa.fields.enabled);
     gdprintk(XENLOG_INFO, "\tpfn: %lx\n",
-            (unsigned
 long)d->arch.hvm_domain.viridian.hypercall_gpa.fields.pfn);
+            (unsigned long)vd->hypercall_gpa.fields.pfn);
 }
 
 void dump_apic_assist(struct vcpu *v)
 {
+    struct viridian_vcpu *vv = &v->arch.hvm_vcpu.viridian;
+
     gdprintk(XENLOG_INFO, "APIC_ASSIST[%d]:\n", v->vcpu_id);
     gdprintk(XENLOG_INFO, "\tenabled: %x\n",
-            v->arch.hvm_vcpu.viridian.apic_assist.fields.enabled);
+            vv->apic_assist.fields.enabled);
     gdprintk(XENLOG_INFO, "\tpfn: %lx\n",
-            (unsigned
 long)v->arch.hvm_vcpu.viridian.apic_assist.fields.pfn);
+            (unsigned long)vv->apic_assist.fields.pfn);
 }

static void enable_hypercall_page(struct domain *d)

xen/arch/x86/hvm/viridian.c Wed Sep 28 12:45:39 2011 +0200 renamed from xen/arch/x86/hvm/viridian.c Wed Sep 28 12:09:13 2011 +0200 +15 -10
@@ -201,6 +207,8 @@ int wrmsr_viridian_regs(uint32_t idx, ui
 {
     struct vcpu *v = current;
     struct domain *d = v->domain;
+    struct viridian_domain *vd = &d->arch.hvm_domain.viridian;
+    struct viridian_vcpu *vv = &v->arch.hvm_vcpu.viridian;
 
     if ( !is_viridian_domain(d) )
         return 0;
@@ -209,15 +217,15 @@ int wrmsr_viridian_regs(uint32_t idx, ui
     {
     case VIRIDIAN_MSR_GUEST_OS_ID:
         perfc_incr(mshv_wrmsr_osid);
-        d->arch.hvm_domain.viridian.guest_os_id.raw = val;
+        vd->guest_os_id.raw = val;
         dump_guest_os_id(d);
         break;
 
     case VIRIDIAN_MSR_HYPERCALL:
         perfc_incr(mshv_wrmsr_hc_page);
-        d->arch.hvm_domain.viridian.hypercall_gpa.raw = val;
+        vd->hypercall_gpa.raw = val;
         dump_hypercall(d);
-        if ( d->arch.hvm_domain.viridian.hypercall_gpa.fields.enabled )
+        if ( vd->hypercall_gpa.fields.enabled )
             enable_hypercall_page(d);
         break;
 
@@ -249,9 +257,9 @@ int wrmsr_viridian_regs(uint32_t idx, ui
 
     case VIRIDIAN_MSR_APIC_ASSIST:
         perfc_incr(mshv_wrmsr_apic_msr);
-        v->arch.hvm_vcpu.viridian.apic_assist.raw = val;
+        vv->apic_assist.raw = val;
         dump_apic_assist(v);
-        if (v->arch.hvm_vcpu.viridian.apic_assist.fields.enabled)
+        if (vv->apic_assist.fields.enabled)
             initialize_apic_assist(v);
         break;
 
@@ -266,6 +274,8 @@ int rdmsr_viridian_regs(uint32_t idx, ui
 {
     struct vcpu *v = current;
     struct domain *d = v->domain;
+    struct viridian_domain *vd = &d->arch.hvm_domain.viridian;
+    struct viridian_vcpu *vv = &v->arch.hvm_vcpu.viridian;
 
     if ( !is_viridian_domain(d) )
         return 0;
@@ -274,12 +284,12 @@ int rdmsr_viridian_regs(uint32_t idx, ui
     {
     case VIRIDIAN_MSR_GUEST_OS_ID:
         perfc_incr(mshv_rdmsr_osid);
-        *val = d->arch.hvm_domain.viridian.guest_os_id.raw;
+        *val = vd->guest_os_id.raw;
         break;
 
     case VIRIDIAN_MSR_HYPERCALL:
         perfc_incr(mshv_rdmsr_hc_page);
-        *val = d->arch.hvm_domain.viridian.hypercall_gpa.raw;
+        *val = vd->hypercall_gpa.raw;
         break;
 
     case VIRIDIAN_MSR_VP_INDEX:
@@ -300,7 +310,7 @@ int rdmsr_viridian_regs(uint32_t idx, ui
 
     case VIRIDIAN_MSR_APIC_ASSIST:
         perfc_incr(mshv_rdmsr_apic_msr);
-        *val = v->arch.hvm_vcpu.viridian.apic_assist.raw;
+        *val = vv->apic_assist.raw;
         break;
 
     default:
@@ -390,12 +400,13 @@ out:
 static int viridian_save_domain_ctxt(struct domain *d, hvm_domain_context_t
 *h)
 {
     struct hvm_viridian_domain_context ctxt;
+    struct viridian_domain *vd = &d->arch.hvm_domain.viridian;
 
     if ( !is_viridian_domain(d) )
         return 0;
 
-    ctxt.hypercall_gpa = d->arch.hvm_domain.viridian.hypercall_gpa.raw;
-    ctxt.guest_os_id   = d->arch.hvm_domain.viridian.guest_os_id.raw;
+    ctxt.hypercall_gpa = vd->hypercall_gpa.raw;
+    ctxt.guest_os_id   = vd->guest_os_id.raw;
 
     return (hvm_save_entry(VIRIDIAN_DOMAIN, 0, h, &ctxt) != 0);

}

xen/arch/x86/hvm/viridian.c Wed Sep 28 12:45:39 2011 +0200 renamed from xen/arch/x86/hvm/viridian.c Wed Sep 28 12:09:13 2011 +0200 +3 -2
@@ -403,12 +414,13 @@ static int viridian_save_domain_ctxt(str
 static int viridian_load_domain_ctxt(struct domain *d, hvm_domain_context_t
 *h)
 {
     struct hvm_viridian_domain_context ctxt;
+    struct viridian_domain *vd = &d->arch.hvm_domain.viridian;
 
     if ( hvm_load_entry(VIRIDIAN_DOMAIN, h, &ctxt) != 0 )
         return -EINVAL;
 
-    d->arch.hvm_domain.viridian.hypercall_gpa.raw = ctxt.hypercall_gpa;
-    d->arch.hvm_domain.viridian.guest_os_id.raw   = ctxt.guest_os_id;
+    vd->hypercall_gpa.raw = ctxt.hypercall_gpa;
+    vd->guest_os_id.raw   = ctxt.guest_os_id;
 
     return 0;

}

Quoted 4 lines

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel