lkml.org 
[lkml]   [2012]   [Jul]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 03/10] KVM: introduce gfn_to_pfn_memslot_atomic
    It can instead of hva_to_pfn_atomic

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

    diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
    index 4ed543a..13d3c69 100644
    --- a/arch/x86/kvm/mmu.c
    +++ b/arch/x86/kvm/mmu.c
    @@ -2480,15 +2480,12 @@ static pfn_t pte_prefetch_gfn_to_pfn(struct kvm_vcpu *vcpu, gfn_t gfn,
    bool no_dirty_log)
    {
    struct kvm_memory_slot *slot;
    - unsigned long hva;

    slot = gfn_to_memslot_dirty_bitmap(vcpu, gfn, no_dirty_log);
    if (!slot)
    return get_fault_pfn();

    - hva = gfn_to_hva_memslot(slot, gfn);
    -
    - return hva_to_pfn_atomic(hva);
    + return gfn_to_pfn_memslot_atomic(slot, gfn);
    }

    static int direct_pte_prefetch_many(struct kvm_vcpu *vcpu,
    diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
    index 8e6bc51..e4815e9 100644
    --- a/include/linux/kvm_host.h
    +++ b/include/linux/kvm_host.h
    @@ -420,7 +420,6 @@ void kvm_release_page_dirty(struct page *page);
    void kvm_set_page_dirty(struct page *page);
    void kvm_set_page_accessed(struct page *page);

    -pfn_t hva_to_pfn_atomic(unsigned long addr);
    pfn_t gfn_to_pfn_atomic(struct kvm *kvm, gfn_t gfn);
    pfn_t gfn_to_pfn_async(struct kvm *kvm, gfn_t gfn, bool *async,
    bool write_fault, bool *writable);
    @@ -428,6 +427,8 @@ pfn_t gfn_to_pfn(struct kvm *kvm, gfn_t gfn);
    pfn_t gfn_to_pfn_prot(struct kvm *kvm, gfn_t gfn, bool write_fault,
    bool *writable);
    pfn_t gfn_to_pfn_memslot(struct kvm_memory_slot *slot, gfn_t gfn);
    +pfn_t gfn_to_pfn_memslot_atomic(struct kvm_memory_slot *slot, gfn_t gfn);
    +
    void kvm_release_pfn_dirty(pfn_t);
    void kvm_release_pfn_clean(pfn_t pfn);
    void kvm_set_pfn_dirty(pfn_t pfn);
    diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
    index 7cb29bb..6c1e746 100644
    --- a/virt/kvm/kvm_main.c
    +++ b/virt/kvm/kvm_main.c
    @@ -1156,12 +1156,6 @@ static pfn_t hva_to_pfn(unsigned long addr, bool atomic, bool *async,
    return pfn;
    }

    -pfn_t hva_to_pfn_atomic(unsigned long addr)
    -{
    - return hva_to_pfn(addr, true, NULL, true, NULL);
    -}
    -EXPORT_SYMBOL_GPL(hva_to_pfn_atomic);
    -
    static pfn_t __gfn_to_pfn(struct kvm *kvm, gfn_t gfn, bool atomic, bool *async,
    bool write_fault, bool *writable)
    {
    @@ -1211,6 +1205,14 @@ pfn_t gfn_to_pfn_memslot(struct kvm_memory_slot *slot, gfn_t gfn)
    return hva_to_pfn(addr, false, NULL, true, NULL);
    }

    +pfn_t gfn_to_pfn_memslot_atomic(struct kvm_memory_slot *slot, gfn_t gfn)
    +{
    + unsigned long addr = gfn_to_hva_memslot(slot, gfn);
    +
    + return hva_to_pfn(addr, true, NULL, true, NULL);
    +}
    +EXPORT_SYMBOL_GPL(gfn_to_pfn_memslot_atomic);
    +
    int gfn_to_page_many_atomic(struct kvm *kvm, gfn_t gfn, struct page **pages,
    int nr_pages)
    {
    --
    1.7.7.6


    \
     
     \ /
      Last update: 2012-07-17 17:21    [W:2.568 / U:0.896 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site