lkml.org 
[lkml]   [2011]   [Nov]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 4/5] KVM: MMU: move the relevant mmu code to mmu.c
    Move the mmu code in kvm_arch_vcpu_init() to kvm_mmu_create()

    Signed-off-by: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
    ---
    arch/x86/include/asm/kvm_host.h | 6 ++++++
    arch/x86/kvm/mmu.c | 6 +++++-
    arch/x86/kvm/x86.c | 11 +----------
    3 files changed, 12 insertions(+), 11 deletions(-)

    diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
    index 1769f3d..020413a 100644
    --- a/arch/x86/include/asm/kvm_host.h
    +++ b/arch/x86/include/asm/kvm_host.h
    @@ -752,6 +752,7 @@ void __kvm_mmu_free_some_pages(struct kvm_vcpu *vcpu);
    int kvm_mmu_load(struct kvm_vcpu *vcpu);
    void kvm_mmu_unload(struct kvm_vcpu *vcpu);
    void kvm_mmu_sync_roots(struct kvm_vcpu *vcpu);
    +gpa_t translate_nested_gpa(struct kvm_vcpu *vcpu, gpa_t gpa, u32 access);
    gpa_t kvm_mmu_gva_to_gpa_read(struct kvm_vcpu *vcpu, gva_t gva,
    struct x86_exception *exception);
    gpa_t kvm_mmu_gva_to_gpa_fetch(struct kvm_vcpu *vcpu, gva_t gva,
    @@ -773,6 +774,11 @@ void kvm_disable_tdp(void);
    int complete_pio(struct kvm_vcpu *vcpu);
    bool kvm_check_iopl(struct kvm_vcpu *vcpu);

    +static inline gpa_t translate_gpa(struct kvm_vcpu *vcpu, gpa_t gpa, u32 access)
    +{
    + return gpa;
    +}
    +
    static inline struct kvm_mmu_page *page_header(hpa_t shadow_page)
    {
    struct page *page = pfn_to_page(shadow_page >> PAGE_SHIFT);
    diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
    index 62f69db..262a3af 100644
    --- a/arch/x86/kvm/mmu.c
    +++ b/arch/x86/kvm/mmu.c
    @@ -3839,7 +3839,11 @@ static int alloc_mmu_pages(struct kvm_vcpu *vcpu)
    int kvm_mmu_create(struct kvm_vcpu *vcpu)
    {
    ASSERT(vcpu);
    - ASSERT(!VALID_PAGE(vcpu->arch.mmu.root_hpa));
    +
    + vcpu->arch.walk_mmu = &vcpu->arch.mmu;
    + vcpu->arch.mmu.root_hpa = INVALID_PAGE;
    + vcpu->arch.mmu.translate_gpa = translate_gpa;
    + vcpu->arch.nested_mmu.translate_gpa = translate_nested_gpa;

    return alloc_mmu_pages(vcpu);
    }
    diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
    index 7b6fd72..45c8640 100644
    --- a/arch/x86/kvm/x86.c
    +++ b/arch/x86/kvm/x86.c
    @@ -3427,12 +3427,7 @@ void kvm_get_segment(struct kvm_vcpu *vcpu,
    kvm_x86_ops->get_segment(vcpu, var, seg);
    }

    -static gpa_t translate_gpa(struct kvm_vcpu *vcpu, gpa_t gpa, u32 access)
    -{
    - return gpa;
    -}
    -
    -static gpa_t translate_nested_gpa(struct kvm_vcpu *vcpu, gpa_t gpa, u32 access)
    +gpa_t translate_nested_gpa(struct kvm_vcpu *vcpu, gpa_t gpa, u32 access)
    {
    gpa_t t_gpa;
    struct x86_exception exception;
    @@ -5912,10 +5907,6 @@ int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu)
    kvm = vcpu->kvm;

    vcpu->arch.emulate_ctxt.ops = &emulate_ops;
    - vcpu->arch.walk_mmu = &vcpu->arch.mmu;
    - vcpu->arch.mmu.root_hpa = INVALID_PAGE;
    - vcpu->arch.mmu.translate_gpa = translate_gpa;
    - vcpu->arch.nested_mmu.translate_gpa = translate_nested_gpa;
    if (!irqchip_in_kernel(kvm) || kvm_vcpu_is_bsp(vcpu))
    vcpu->arch.mp_state = KVM_MP_STATE_RUNNABLE;
    else
    --
    1.7.7.3


    \
     
     \ /
      Last update: 2011-11-28 13:45    [W:2.516 / U:0.144 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site