[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1199630379-28638-10-git-send-email-avi@qumranet.com>
Date: Sun, 6 Jan 2008 16:39:15 +0200
From: Avi Kivity <avi@...ranet.com>
To: linux-kernel@...r.kernel.org, kvm-devel@...ts.sourceforge.net
Cc: Zhang Xiantao <xiantao.zhang@...el.com>
Subject: [PATCH 09/33] KVM: Portability: Move memslot aliases to new struct kvm_arch
From: Zhang Xiantao <xiantao.zhang@...el.com>
This patches create kvm_arch to hold arch-specific kvm fileds
and moves fields naliases and aliases to kvm_arch.
Signed-off-by: Zhang Xiantao <xiantao.zhang@...el.com>
Acked-by: Carsten Otte <cotte@...ibm.com>
Signed-off-by: Avi Kivity <avi@...ranet.com>
---
drivers/kvm/kvm.h | 10 +---------
drivers/kvm/x86.c | 10 +++++-----
drivers/kvm/x86.h | 13 +++++++++++++
3 files changed, 19 insertions(+), 14 deletions(-)
diff --git a/drivers/kvm/kvm.h b/drivers/kvm/kvm.h
index 9ea7149..bf5b85c 100644
--- a/drivers/kvm/kvm.h
+++ b/drivers/kvm/kvm.h
@@ -25,7 +25,6 @@
#include "x86.h"
#define KVM_MAX_VCPUS 4
-#define KVM_ALIAS_SLOTS 4
#define KVM_MEMORY_SLOTS 8
/* memory slots that does not exposed to userspace */
#define KVM_PRIVATE_MEM_SLOTS 4
@@ -94,12 +93,6 @@ struct kvm_vcpu {
struct kvm_vcpu_arch arch;
};
-struct kvm_mem_alias {
- gfn_t base_gfn;
- unsigned long npages;
- gfn_t target_gfn;
-};
-
struct kvm_memory_slot {
gfn_t base_gfn;
unsigned long npages;
@@ -123,8 +116,6 @@ struct kvm_vm_stat {
struct kvm {
struct mutex lock; /* protects everything except vcpus */
struct mm_struct *mm; /* userspace tied to this vm */
- int naliases;
- struct kvm_mem_alias aliases[KVM_ALIAS_SLOTS];
int nmemslots;
struct kvm_memory_slot memslots[KVM_MEMORY_SLOTS +
KVM_PRIVATE_MEM_SLOTS];
@@ -147,6 +138,7 @@ struct kvm {
unsigned int tss_addr;
struct page *apic_access_page;
struct kvm_vm_stat stat;
+ struct kvm_arch arch;
};
/* The guest did something we don't support. */
diff --git a/drivers/kvm/x86.c b/drivers/kvm/x86.c
index 60f9722..7e1bd52 100644
--- a/drivers/kvm/x86.c
+++ b/drivers/kvm/x86.c
@@ -1191,8 +1191,8 @@ gfn_t unalias_gfn(struct kvm *kvm, gfn_t gfn)
int i;
struct kvm_mem_alias *alias;
- for (i = 0; i < kvm->naliases; ++i) {
- alias = &kvm->aliases[i];
+ for (i = 0; i < kvm->arch.naliases; ++i) {
+ alias = &kvm->arch.aliases[i];
if (gfn >= alias->base_gfn
&& gfn < alias->base_gfn + alias->npages)
return alias->target_gfn + gfn - alias->base_gfn;
@@ -1228,15 +1228,15 @@ static int kvm_vm_ioctl_set_memory_alias(struct kvm *kvm,
mutex_lock(&kvm->lock);
- p = &kvm->aliases[alias->slot];
+ p = &kvm->arch.aliases[alias->slot];
p->base_gfn = alias->guest_phys_addr >> PAGE_SHIFT;
p->npages = alias->memory_size >> PAGE_SHIFT;
p->target_gfn = alias->target_phys_addr >> PAGE_SHIFT;
for (n = KVM_ALIAS_SLOTS; n > 0; --n)
- if (kvm->aliases[n - 1].npages)
+ if (kvm->arch.aliases[n - 1].npages)
break;
- kvm->naliases = n;
+ kvm->arch.naliases = n;
kvm_mmu_zap_all(kvm);
diff --git a/drivers/kvm/x86.h b/drivers/kvm/x86.h
index 4ca8485..be84f2b 100644
--- a/drivers/kvm/x86.h
+++ b/drivers/kvm/x86.h
@@ -54,6 +54,8 @@
#define IOPL_SHIFT 12
+#define KVM_ALIAS_SLOTS 4
+
#define KVM_PERMILLE_MMU_PAGES 20
#define KVM_MIN_ALLOC_MMU_PAGES 64
#define KVM_NUM_MMU_PAGES 1024
@@ -255,6 +257,17 @@ struct kvm_vcpu_arch {
struct x86_emulate_ctxt emulate_ctxt;
};
+struct kvm_mem_alias {
+ gfn_t base_gfn;
+ unsigned long npages;
+ gfn_t target_gfn;
+};
+
+struct kvm_arch{
+ int naliases;
+ struct kvm_mem_alias aliases[KVM_ALIAS_SLOTS];
+};
+
struct kvm_vcpu_stat {
u32 pf_fixed;
u32 pf_guest;
--
1.5.3.7
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists