From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH] kvm swapping with mmu notifiers + age_page Date: Tue, 22 Jan 2008 16:08:16 +0200 Message-ID: <4795F8D0.30102@qumranet.com> References: <20080121124124.GG6970@v2.random> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org To: Andrea Arcangeli Return-path: In-Reply-To: <20080121124124.GG6970-lysg2Xt5kKMAvxtiuMwx3w@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 Andrea Arcangeli wrote: > This is the same as before but it uses the age_page callback to > prevent the guest OS working set to be swapped out. It works well here > so far. This depends on the memslot locking with mmu lock patch and on > the mmu notifiers #v3 patch that I'll post in CC with linux-mm shortly > that implements the age_page callback and that changes follow_page to > set the young bit in the pte instead of setting the referenced bit (so > the age_page will be called again later when the VM clears the young > bit). > > > +static void unmap_spte(struct kvm *kvm, u64 *spte) > +{ > + struct page *page = pfn_to_page((*spte & PT64_BASE_ADDR_MASK) >> PAGE_SHIFT); > + get_page(page); > + rmap_remove(kvm, spte); > + set_shadow_pte(spte, shadow_trap_nonpresent_pte); > + kvm_flush_remote_tlbs(kvm); > + __free_page(page); > +} > Why is get_page()/__free_page() needed here? Isn't kvm_release_page_*() sufficient? -- error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/