diff mbox

[1/7] KVM: SVM: Keep seperate pointer to host-vmcb

Message ID 1310571145-28930-2-git-send-email-joerg.roedel@amd.com (mailing list archive)
State New, archived
Headers show

Commit Message

Joerg Roedel July 13, 2011, 3:32 p.m. UTC
From: Joerg Roedel <joro@8bytes.org>

This patch introduces a new pointer which always points to
the VMCB used for running the L1 guest.

Signed-off-by: Joerg Roedel <joro@8bytes.org>
---
 arch/x86/kvm/svm.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

Comments

Avi Kivity July 14, 2011, 10:13 a.m. UTC | #1
On 07/13/2011 06:32 PM, Joerg Roedel wrote:
> From: Joerg Roedel<joro@8bytes.org>
>
> This patch introduces a new pointer which always points to
> the VMCB used for running the L1 guest.
>
> Signed-off-by: Joerg Roedel<joro@8bytes.org>
> ---
>   arch/x86/kvm/svm.c |    6 +++++-
>   1 files changed, 5 insertions(+), 1 deletions(-)
>
> diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
> index 475d1c9..3d5990f 100644
> --- a/arch/x86/kvm/svm.c
> +++ b/arch/x86/kvm/svm.c
> @@ -113,7 +113,9 @@ static u32 msrpm_offsets[MSRPM_OFFSETS] __read_mostly;
>   struct vcpu_svm {
>   	struct kvm_vcpu vcpu;
>   	struct vmcb *vmcb;
> +	struct vmcb *host_vmcb;
>   	unsigned long vmcb_pa;
> +	unsigned long host_vmcb_pa;

Why not call it vmcb01, like nvmx?  host_vmcb is ambiguous.
diff mbox

Patch

diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 475d1c9..3d5990f 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -113,7 +113,9 @@  static u32 msrpm_offsets[MSRPM_OFFSETS] __read_mostly;
 struct vcpu_svm {
 	struct kvm_vcpu vcpu;
 	struct vmcb *vmcb;
+	struct vmcb *host_vmcb;
 	unsigned long vmcb_pa;
+	unsigned long host_vmcb_pa;
 	struct svm_cpu_data *svm_data;
 	uint64_t asid_generation;
 	uint64_t sysenter_esp;
@@ -1171,9 +1173,11 @@  static struct kvm_vcpu *svm_create_vcpu(struct kvm *kvm, unsigned int id)
 	svm->nested.msrpm = page_address(nested_msrpm_pages);
 	svm_vcpu_init_msrpm(svm->nested.msrpm);
 
-	svm->vmcb = page_address(page);
+	svm->host_vmcb = page_address(page);
+	svm->vmcb = svm->host_vmcb;
 	clear_page(svm->vmcb);
 	svm->vmcb_pa = page_to_pfn(page) << PAGE_SHIFT;
+	svm->host_vmcb_pa = page_to_pfn(page) << PAGE_SHIFT;
 	svm->asid_generation = 0;
 	init_vmcb(svm);
 	kvm_write_tsc(&svm->vcpu, 0);