forked from Minki/linux
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:
parent
60c34612b7
commit
93474b25af
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user