KVM: X86: Introduce generic guest-mode representation
authorJoerg Roedel <joerg.roedel@amd.com>
Mon, 29 Nov 2010 16:51:47 +0000 (17:51 +0100)
committerAvi Kivity <avi@redhat.com>
Wed, 12 Jan 2011 09:30:04 +0000 (11:30 +0200)
This patch introduces a generic representation of guest-mode
fpr a vcpu. This currently only exists in the SVM code.
Having this representation generic will help making the
non-svm code aware of nesting when this is necessary.

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/kvm_cache_regs.h

index 0c0941db31c40f1716527878ad5fcc227d5dd227..56e45a2ed2de1f347c52edebb2cb9a792eebf1be 100644 (file)
@@ -779,6 +779,7 @@ enum {
 #define HF_VINTR_MASK          (1 << 2)
 #define HF_NMI_MASK            (1 << 3)
 #define HF_IRET_MASK           (1 << 4)
+#define HF_GUEST_MASK          (1 << 5) /* VCPU is in guest-mode */
 
 /*
  * Hardware virtualization extension instructions may fault if a
index 975bb45329a102882b52d1a0cb29b95e9660dc8b..95ac3afa6e6fff806e36aca514ecd5d2d662eee2 100644 (file)
@@ -84,4 +84,19 @@ static inline u64 kvm_read_edx_eax(struct kvm_vcpu *vcpu)
                | ((u64)(kvm_register_read(vcpu, VCPU_REGS_RDX) & -1u) << 32);
 }
 
+static inline void enter_guest_mode(struct kvm_vcpu *vcpu)
+{
+       vcpu->arch.hflags |= HF_GUEST_MASK;
+}
+
+static inline void leave_guest_mode(struct kvm_vcpu *vcpu)
+{
+       vcpu->arch.hflags &= ~HF_GUEST_MASK;
+}
+
+static inline bool is_guest_mode(struct kvm_vcpu *vcpu)
+{
+       return vcpu->arch.hflags & HF_GUEST_MASK;
+}
+
 #endif