lkml.org 
[lkml]   [2008]   [Nov]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] really remove a slow when a user ask us so
    Date
    Right now, KVM does not remove a slot when we do a
    register ioctl for size 0 (would be the expected behaviour).

    Instead, we only mark it as empty, but keep all bitmaps
    and allocated data structures present. It completely
    nullifies our chances of reusing that same slot again
    for mapping a different piece of memory.

    In this patch, we destroy rmaps, and vfree() the
    pointers that used to hold the dirty bitmap, rmap
    and lpage_info structures.

    Signed-off-by: Glauber Costa <glommer@redhat.com>
    ---
    virt/kvm/kvm_main.c | 15 +++++++++------
    1 files changed, 9 insertions(+), 6 deletions(-)

    diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
    index b1953ee..f605bba 100644
    --- a/virt/kvm/kvm_main.c
    +++ b/virt/kvm/kvm_main.c
    @@ -735,11 +735,17 @@ int __kvm_set_memory_region(struct kvm *kvm,
    base_gfn = mem->guest_phys_addr >> PAGE_SHIFT;
    npages = mem->memory_size >> PAGE_SHIFT;

    - if (!npages)
    - mem->flags &= ~KVM_MEM_LOG_DIRTY_PAGES;
    -
    new = old = *memslot;

    + if (!npages) {
    + mem->flags &= ~KVM_MEM_LOG_DIRTY_PAGES;
    + kvm_arch_flush_shadow(kvm);
    + kvm_free_physmem_slot(memslot, NULL);
    + kvm_arch_set_memory_region(kvm, mem, old, user_alloc);
    + goto out;
    + }
    +
    +
    new.base_gfn = base_gfn;
    new.npages = npages;
    new.flags = mem->flags;
    @@ -812,9 +818,6 @@ int __kvm_set_memory_region(struct kvm *kvm,
    }
    #endif /* not defined CONFIG_S390 */

    - if (!npages)
    - kvm_arch_flush_shadow(kvm);
    -
    spin_lock(&kvm->mmu_lock);
    if (mem->slot >= kvm->nmemslots)
    kvm->nmemslots = mem->slot + 1;
    --
    1.5.6.5


    \
     
     \ /
      Last update: 2008-11-24 16:51    [W:0.023 / U:30.996 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site