Skip to contentSkip to conversation

Nested Virtualization: MSR

PATCH In review Christoph Egger 1 participant 1 message Jun 3, 2010

lore
Share & tools
lore
#0 lore raw

PATCH 9/15 Nested Virtualization: MSR

Signature · 6 lines
---to satisfy European Law for business letters:
Advanced Micro Devices GmbH
Einsteinring 24, 85609 Dornach b. Muenchen
Geschaeftsfuehrer: Andrew Bowd, Thomas M. McCoy, Giuliano Meroni
Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen
Registergericht Muenchen, HRB Nr. 43632

# HG changeset patch
# User cegger
# Date 1275382031 -7200
Emulate MSRs needed for Nested Virtualization

xen/arch/x86/hvm/hvm.c +20 -5
diff -r c3ca485ecfbe -r 11f96c916410 xen/arch/x86/hvm/hvm.c
@@ -2148,14 +2148,21 @@ int hvm_msr_read_intercept(struct cpu_us
          break;
 
     default:
+        ret = nestedhvm_rdmsr(v, ecx, &msr_content);
+        if ( ret < 0 )
+            goto gp_fault;
+        else if ( ret )
+            break;
+
+        BUG_ON( ret );
         ret = vmce_rdmsr(ecx, &msr_content);
         if ( ret < 0 )
             goto gp_fault;
         else if ( ret )
             break;
-        /* ret == 0, This is not an MCE MSR, see other MSRs */
-        else if (!ret)
-            return hvm_funcs.msr_read_intercept(regs);
+
+        BUG_ON( ret );
+        return hvm_funcs.msr_read_intercept(regs);
     }
 
     regs->eax = (uint32_t)msr_content;
@@ -2247,13 +2254,21 @@ int hvm_msr_write_intercept(struct cpu_u
         break;
 
     default:
+        ret = nestedhvm_wrmsr(v, ecx, msr_content);
+        if ( ret < 0 )
+            goto gp_fault;
+        else if ( ret )
+            break;
+
+        BUG_ON( ret );
         ret = vmce_wrmsr(ecx, msr_content);
         if ( ret < 0 )
             goto gp_fault;
         else if ( ret )
             break;
-        else if (!ret)
-            return hvm_funcs.msr_write_intercept(regs);
+
+        BUG_ON( ret );
+        return hvm_funcs.msr_write_intercept(regs);
     }
 
     return X86EMUL_OKAY;

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