From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH] kvm_vm_ioctl_get_dirty_log restore "nothing dirty" optimization Date: Mon, 30 Jul 2007 16:28:42 +0300 Message-ID: <46ADE78A.7080406@qumranet.com> References: <1185798696.6131.44.camel@localhost.localdomain> <46ADDC16.2090801@qumranet.com> <1185801694.6131.46.camel@localhost.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: kvm-devel To: Rusty Russell Return-path: In-Reply-To: <1185801694.6131.46.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Errors-To: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org List-Id: kvm.vger.kernel.org Rusty Russell wrote: > kvm_vm_ioctl_get_dirty_log scans bitmap to see it it's all zero, but > doesn't use that information. > > Avi says: > Looks like it was used to guard kvm_mmu_slot_remove_write_access(); > optimizing the case where the guest just leaves the screen alone (which > it usually does, especially in benchmarks). > > I'd rather reinstate that optimization. See > 66d8a4e4d4bd470216028daabb9d887b73259c96 where the damage was done. > > It's pretty simple: if the bitmap is all zero, we don't need to do anything to > clean it. > > Signed-off-by: Rusty Russell > > diff -r 66566cf6b576 drivers/kvm/kvm_main.c > --- a/drivers/kvm/kvm_main.c Fri Jul 27 16:27:11 2007 +1000 > +++ b/drivers/kvm/kvm_main.c Mon Jul 30 23:15:47 2007 +1000 > @@ -838,11 +838,13 @@ static int kvm_vm_ioctl_get_dirty_log(st > if (copy_to_user(log->dirty_bitmap, memslot->dirty_bitmap, n)) > goto out; > > - spin_lock(&kvm->lock); > - kvm_mmu_slot_remove_write_access(kvm, log->slot); > - kvm_flush_remote_tlbs(kvm); > - memset(memslot->dirty_bitmap, 0, n); > - spin_unlock(&kvm->lock); > + if (any) { > + spin_lock(&kvm->lock); > + kvm_mmu_slot_remove_write_access(kvm, log->slot); > + kvm_flush_remote_tlbs(kvm); > + memset(memslot->dirty_bitmap, 0, n); > + spin_unlock(&kvm->lock); > + } > spin_lock()? my, that's so last week. kvm->lock is a mutex. -- 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/