KVM: Remove unused dirty_bitmap_head and nr_dirty_pages

Now that we do neither double buffering nor heuristic selection of the
write protection method these are not needed anymore.

Note: some drivers have their own implementation of set_bit_le() and
making it generic needs a bit of work; so we use test_and_set_bit_le()
and will later replace it with generic set_bit_le().

Signed-off-by: Takuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp>
Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
Takuya Yoshikawa 2012-03-01 19:34:45 +09:00 committed by Avi Kivity
parent 60c34612b7
commit 93474b25af
2 changed files with 5 additions and 11 deletions

View File

@ -179,8 +179,6 @@ struct kvm_memory_slot {
unsigned long flags; unsigned long flags;
unsigned long *rmap; unsigned long *rmap;
unsigned long *dirty_bitmap; unsigned long *dirty_bitmap;
unsigned long *dirty_bitmap_head;
unsigned long nr_dirty_pages;
struct kvm_arch_memory_slot arch; struct kvm_arch_memory_slot arch;
unsigned long userspace_addr; unsigned long userspace_addr;
int user_alloc; int user_alloc;

View File

@ -522,12 +522,11 @@ static void kvm_destroy_dirty_bitmap(struct kvm_memory_slot *memslot)
return; return;
if (2 * kvm_dirty_bitmap_bytes(memslot) > PAGE_SIZE) if (2 * kvm_dirty_bitmap_bytes(memslot) > PAGE_SIZE)
vfree(memslot->dirty_bitmap_head); vfree(memslot->dirty_bitmap);
else else
kfree(memslot->dirty_bitmap_head); kfree(memslot->dirty_bitmap);
memslot->dirty_bitmap = NULL; memslot->dirty_bitmap = NULL;
memslot->dirty_bitmap_head = NULL;
} }
/* /*
@ -611,8 +610,7 @@ static int kvm_vm_release(struct inode *inode, struct file *filp)
/* /*
* Allocation size is twice as large as the actual dirty bitmap size. * Allocation size is twice as large as the actual dirty bitmap size.
* This makes it possible to do double buffering: see x86's * See x86's kvm_vm_ioctl_get_dirty_log() why this is needed.
* kvm_vm_ioctl_get_dirty_log().
*/ */
static int kvm_create_dirty_bitmap(struct kvm_memory_slot *memslot) static int kvm_create_dirty_bitmap(struct kvm_memory_slot *memslot)
{ {
@ -627,8 +625,6 @@ static int kvm_create_dirty_bitmap(struct kvm_memory_slot *memslot)
if (!memslot->dirty_bitmap) if (!memslot->dirty_bitmap)
return -ENOMEM; return -ENOMEM;
memslot->dirty_bitmap_head = memslot->dirty_bitmap;
memslot->nr_dirty_pages = 0;
#endif /* !CONFIG_S390 */ #endif /* !CONFIG_S390 */
return 0; return 0;
} }
@ -1476,8 +1472,8 @@ void mark_page_dirty_in_slot(struct kvm *kvm, struct kvm_memory_slot *memslot,
if (memslot && memslot->dirty_bitmap) { if (memslot && memslot->dirty_bitmap) {
unsigned long rel_gfn = gfn - memslot->base_gfn; unsigned long rel_gfn = gfn - memslot->base_gfn;
if (!test_and_set_bit_le(rel_gfn, memslot->dirty_bitmap)) /* TODO: introduce set_bit_le() and use it */
memslot->nr_dirty_pages++; test_and_set_bit_le(rel_gfn, memslot->dirty_bitmap);
} }
} }