From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH 0/2] Simplify RCU freeing of shadow pages Date: Sun, 22 Apr 2012 14:39:03 +0300 Message-ID: <4F93EDD7.2080704@redhat.com> References: <1334852797-28167-1-git-send-email-avi@redhat.com> <20120421023132.GA18062@amt.cnet> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, Xiao Guangrong To: Marcelo Tosatti Return-path: Received: from mx1.redhat.com ([209.132.183.28]:43738 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751652Ab2DVLjJ (ORCPT ); Sun, 22 Apr 2012 07:39:09 -0400 In-Reply-To: <20120421023132.GA18062@amt.cnet> Sender: kvm-owner@vger.kernel.org List-ID: On 04/21/2012 05:31 AM, Marcelo Tosatti wrote: > On Thu, Apr 19, 2012 at 07:26:35PM +0300, Avi Kivity wrote: > > This patchset simplifies the freeing by RCU of mmu pages. > > > > Xiao, I'm sure you thought of always freeing by RCU. Why didn't you choose > > this way? I saves a couple of atomics in the fast path. > > > > Avi Kivity (2): > > KVM: MMU: Always free shadow pages using RCU > > KVM: MMU: Recover space used by rcu_head in struct kvm_mmu_page > > > > arch/x86/include/asm/kvm_host.h | 9 +++--- > > arch/x86/kvm/mmu.c | 58 ++++++++------------------------------- > > 2 files changed, 15 insertions(+), 52 deletions(-) > > Check Documentation/RCU/checklist.txt item 8. > > a. Keeping a count of the number of data-structure elements > used by the RCU-protected data structure, including > those waiting for a grace period to elapse. Enforce a > limit on this number, stalling updates as needed to allow > previously deferred frees to complete. Alternatively, > limit only the number awaiting deferred free rather than > the total number of elements. > That's true before and after the patch. Currently the amount of memory that depends on rcu for freeing is unbounded. Maybe we should protect the fast path using local_irq_disable() instead of rcu_read_lock(), like x86 page tables. That means that kvm_flush_remote_tlbs() needs to ignore OUTSIDE_GUEST_MODE when IPIing vcpu threads. -- error compiling committee.c: too many arguments to function