diff options
author | Zhang Xiantao <xiantao.zhang@intel.com> | 2007-12-14 09:54:20 +0800 |
---|---|---|
committer | Avi Kivity <avi@qumranet.com> | 2008-01-30 17:58:10 +0200 |
commit | d69fb81f0554fb980e4b1d3db4e44351c2c4a4a2 (patch) | |
tree | c2b6f6081ceb31fba9c37401f0cc81afaa3b6d1f | |
parent | 77b4c255af34e73ea1efd1c3384bbe91361c81e6 (diff) | |
download | op-kernel-dev-d69fb81f0554fb980e4b1d3db4e44351c2c4a4a2.zip op-kernel-dev-d69fb81f0554fb980e4b1d3db4e44351c2c4a4a2.tar.gz |
KVM: Portability: Move memslot aliases to new struct kvm_arch
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@intel.com>
Acked-by: Carsten Otte <cotte@de.ibm.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
-rw-r--r-- | drivers/kvm/kvm.h | 10 | ||||
-rw-r--r-- | drivers/kvm/x86.c | 10 | ||||
-rw-r--r-- | 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; |