Izik Eidus wrote: > simply make the slot memory allocation function to count how much it > allocate, and create blocks of mmu pages by this, > in addition it initiate the lists. >
> +++ new_kvm_main.c 2007-08-19 06:21:45.000000000 +0300 > @@ -297,6 +297,8 @@ > Please use 'diff -p' (or simply 'git diff') so that patches have more context information. > kvm_io_bus_init(&kvm->pio_bus); > mutex_init(&kvm->lock); > INIT_LIST_HEAD(&kvm->active_mmu_pages); > + INIT_LIST_HEAD(&kvm->mmu_page_hash_blocks); > + kvm->n_mmu_page_hash_blocks = 0; > kvm_io_bus_init(&kvm->mmio_bus); > spin_lock(&kvm_lock); > list_add(&kvm->vm_list, &vm_list); > @@ -336,6 +338,10 @@ > kvm_free_physmem_slot(&kvm->memslots[i], NULL); > } > > +static void kvm_free_mmu_hash(struct kvm *kvm) > +{ > +} > + > static void free_pio_guest_pages(struct kvm_vcpu *vcpu) > { > int i; > @@ -382,6 +388,7 @@ > kvm_io_bus_destroy(&kvm->mmio_bus); > kvm_free_vcpus(kvm); > kvm_free_physmem(kvm); > + kvm_free_mmu_hash(kvm); > kfree(kvm); > } > > @@ -637,6 +644,7 @@ > struct kvm_memory_slot *memslot; > struct kvm_memory_slot old, new; > int memory_config_version; > + int total_mmu_page_hash_blocks; > > r = -EINVAL; > /* General sanity checks */ > @@ -740,6 +748,20 @@ > if (mem->slot >= kvm->nmemslots) > kvm->nmemslots = mem->slot + 1; > > + total_mmu_page_hash_blocks = (npages + kvm->n_mmu_page_hash_blocks * > + KVM_NUM_MMU_PAGES_BLOCK * KVM_MMU_PAGES_DIVIDER) / > + KVM_NUM_MMU_PAGES_BLOCK / KVM_MMU_PAGES_DIVIDER; > + > + for (; kvm->n_mmu_page_hash_blocks < total_mmu_page_hash_blocks; ++ > kvm->n_mmu_page_hash_blocks) { > 80 column limit. > + struct kvm_mmu_hash_block *hash_block = vmalloc(sizeof(struct > kvm_mmu_hash_block)); > + > + if (!hash_block) > + goto out_unlock; > + > + memset(hash_block, 0, sizeof(struct kvm_mmu_hash_block)); > + list_add(&hash_block->head, &kvm->mmu_page_hash_blocks); > + } > + > *memslot = new; > ++kvm->memory_config_version; > > This looks very coarse. Why not just resize the hash table? -- error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel