lkml.org 
[lkml]   [2008]   [Jan]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 09/33] KVM: Portability: Move memslot aliases to new struct kvm_arch
    Date
    From: Zhang Xiantao <xiantao.zhang@intel.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@intel.com>
    Acked-by: Carsten Otte <cotte@de.ibm.com>
    Signed-off-by: Avi Kivity <avi@qumranet.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


    \
     
     \ /
      Last update: 2008-01-06 15:47    [W:4.346 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site