lkml.org 
[lkml]   [2018]   [Dec]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 10/14] KVM/X86: hyperv: Use kvm_vcpu_map in synic_clear_sint_msg_pending
    Date
    Use kvm_vcpu_map in synic_clear_sint_msg_pending since using
    kvm_vcpu_gpa_to_page() and kmap() will only work for guest memory that has
    a "struct page".

    Signed-off-by: KarimAllah Ahmed <karahmed@amazon.de>
    ---
    v1 -> v2:
    - Update to match the new API return codes
    ---
    arch/x86/kvm/hyperv.c | 16 ++++++----------
    1 file changed, 6 insertions(+), 10 deletions(-)

    diff --git a/arch/x86/kvm/hyperv.c b/arch/x86/kvm/hyperv.c
    index 4e80080..63941ac 100644
    --- a/arch/x86/kvm/hyperv.c
    +++ b/arch/x86/kvm/hyperv.c
    @@ -162,26 +162,22 @@ static void synic_clear_sint_msg_pending(struct kvm_vcpu_hv_synic *synic,
    u32 sint)
    {
    struct kvm_vcpu *vcpu = synic_to_vcpu(synic);
    - struct page *page;
    - gpa_t gpa;
    + struct kvm_host_map map;
    struct hv_message *msg;
    struct hv_message_page *msg_page;

    - gpa = synic->msg_page & PAGE_MASK;
    - page = kvm_vcpu_gfn_to_page(vcpu, gpa >> PAGE_SHIFT);
    - if (is_error_page(page)) {
    + if (kvm_vcpu_map(vcpu, gpa_to_gfn(synic->msg_page), &map)) {
    vcpu_err(vcpu, "Hyper-V SynIC can't get msg page, gpa 0x%llx\n",
    - gpa);
    + synic->msg_page);
    return;
    }
    - msg_page = kmap_atomic(page);

    + msg_page = map.hva;
    msg = &msg_page->sint_message[sint];
    msg->header.message_flags.msg_pending = 0;

    - kunmap_atomic(msg_page);
    - kvm_release_page_dirty(page);
    - kvm_vcpu_mark_page_dirty(vcpu, gpa >> PAGE_SHIFT);
    + kvm_vcpu_unmap(&map);
    + kvm_vcpu_mark_page_dirty(vcpu, gpa_to_gfn(synic->msg_page));
    }

    static void kvm_hv_notify_acked_sint(struct kvm_vcpu *vcpu, u32 sint)
    --
    2.7.4
    \
     
     \ /
      Last update: 2018-12-03 10:32    [W:2.988 / U:0.296 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site