In preparation of making the value somewhat dynamic drop the constant.
Replace its use in guest_wrmsr_x2apic() by actually fetching the LVR
value.

Signed-off-by: Jan Beulich <[email protected]>

--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -31,7 +31,6 @@
 #include <public/hvm/ioreq.h>
 #include <public/hvm/params.h>
 
-#define VLAPIC_VERSION                  0x00050014
 #define LVT_BIAS(reg)                   (((reg) - APIC_LVTT) >> 4)
 
 #define LVTS \
@@ -1015,7 +1014,7 @@ int guest_wrmsr_x2apic(struct vcpu *v, u
     case APIC_SPIV:
         if ( val & ~(APIC_VECTOR_MASK | APIC_SPIV_APIC_ENABLED |
                      APIC_SPIV_FOCUS_DISABLED |
-                     (VLAPIC_VERSION & APIC_LVR_DIRECTED_EOI
+                     (vlapic_get_reg(vlapic, APIC_LVR) & APIC_LVR_DIRECTED_EOI
                       ? APIC_SPIV_DIRECTED_EOI : 0)) )
             return X86EMUL_EXCEPTION;
         break;
@@ -1439,7 +1438,7 @@ static void vlapic_do_init(struct vlapic
     if ( !has_vlapic(vlapic_vcpu(vlapic)->domain) )
         return;
 
-    vlapic_set_reg(vlapic, APIC_LVR, VLAPIC_VERSION);
+    vlapic_set_reg(vlapic, APIC_LVR, 0x00050014);
 
     for ( i = 0; i < 8; i++ )
     {


Reply via email to