diff options
| author | Takuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp> | 2012-08-01 18:03:28 +0900 | 
|---|---|---|
| committer | Avi Kivity <avi@redhat.com> | 2012-08-06 12:47:30 +0300 | 
| commit | d89cc617b954aff4030fce178f7d86f59aaf713d (patch) | |
| tree | d04f2ccdddd1d718044f47fdf8442054d87799f6 /virt | |
| parent | 65fbe37c42ed75604c9a770639209dcee162ebe7 (diff) | |
| download | linux-d89cc617b954aff4030fce178f7d86f59aaf713d.tar.bz2 | |
KVM: Push rmap into kvm_arch_memory_slot
Two reasons:
 - x86 can integrate rmap and rmap_pde and remove heuristics in
   __gfn_to_rmap().
 - Some architectures do not need rmap.
Since rmap is one of the most memory consuming stuff in KVM, ppc'd
better restrict the allocation to Book3S HV.
Signed-off-by: Takuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp>
Acked-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'virt')
| -rw-r--r-- | virt/kvm/kvm_main.c | 11 | 
1 files changed, 1 insertions, 10 deletions
| diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index bcf973ec98ff..14ec567816ab 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -550,16 +550,12 @@ static void kvm_destroy_dirty_bitmap(struct kvm_memory_slot *memslot)  static void kvm_free_physmem_slot(struct kvm_memory_slot *free,  				  struct kvm_memory_slot *dont)  { -	if (!dont || free->rmap != dont->rmap) -		vfree(free->rmap); -  	if (!dont || free->dirty_bitmap != dont->dirty_bitmap)  		kvm_destroy_dirty_bitmap(free);  	kvm_arch_free_memslot(free, dont);  	free->npages = 0; -	free->rmap = NULL;  }  void kvm_free_physmem(struct kvm *kvm) @@ -768,11 +764,7 @@ int __kvm_set_memory_region(struct kvm *kvm,  	if (npages && !old.npages) {  		new.user_alloc = user_alloc;  		new.userspace_addr = mem->userspace_addr; -#ifndef CONFIG_S390 -		new.rmap = vzalloc(npages * sizeof(*new.rmap)); -		if (!new.rmap) -			goto out_free; -#endif /* not defined CONFIG_S390 */ +  		if (kvm_arch_create_memslot(&new, npages))  			goto out_free;  	} @@ -831,7 +823,6 @@ int __kvm_set_memory_region(struct kvm *kvm,  	/* actual memory is freed via old in kvm_free_physmem_slot below */  	if (!npages) { -		new.rmap = NULL;  		new.dirty_bitmap = NULL;  		memset(&new.arch, 0, sizeof(new.arch));  	} |