From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marcelo Tosatti Subject: Re: [PATCH 3/5] KVM: PPC: Book3S HV: Handle memory slot deletion and modification correctly Date: Fri, 10 Aug 2012 15:35:53 -0300 Message-ID: <20120810183553.GA16345@amt.cnet> References: <20120806100207.GA8980@bloggs.ozlabs.ibm.com> <20120806100603.GD8980@bloggs.ozlabs.ibm.com> <20120809181612.GA12285@amt.cnet> <20120810003439.GB26420@bloggs.ozlabs.ibm.com> <20120810012532.GA15142@amt.cnet> <20120810110909.fd044ae1.yoshikawa.takuya@oss.ntt.co.jp> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Paul Mackerras , Alexander Graf , kvm-ppc@vger.kernel.org, kvm@vger.kernel.org To: Takuya Yoshikawa Return-path: Received: from mx1.redhat.com ([209.132.183.28]:37860 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759935Ab2HJSgL (ORCPT ); Fri, 10 Aug 2012 14:36:11 -0400 Content-Disposition: inline In-Reply-To: <20120810110909.fd044ae1.yoshikawa.takuya@oss.ntt.co.jp> Sender: kvm-owner@vger.kernel.org List-ID: On Fri, Aug 10, 2012 at 11:09:09AM +0900, Takuya Yoshikawa wrote: > On Thu, 9 Aug 2012 22:25:32 -0300 > Marcelo Tosatti wrote: > > > I'll send a patch to flush per memslot in the next days, you can work > > out the PPC details in the meantime. Not anymore. > Are you going to implement that using slot_bitmap? > > Since I'm now converting kvm_mmu_slot_remove_write_access() to > rmap based protection, I'd like to hear your plan. > > If you can use the stale memslot to restrict the flush, that > should live with rmap based protection. There's no plan. I just wanted to confirm this before converting to per-memslot flush. 1) __kvm_set_memory_region line 807: * - gfn_to_hva (kvm_read_guest, gfn_to_pfn) * - kvm_is_visible_gfn (mmu_check_roots) */ kvm_arch_flush_shadow(kvm); kfree(old_memslots); } This can be converted to per-memslot flush. 2) __kvm_set_memory_region line 846: /* * If the new memory slot is created, we need to clear all * mmio sptes. */ if (npages && old.base_gfn != mem->guest_phys_addr >> PAGE_SHIFT) kvm_arch_flush_shadow(kvm); This must flush all translations in the new and old GPA ranges: a) to remove any mmio sptes that existed in the new GPA range (see ce88decffd17bf9f373cc233c for a description). b) to remove any translations in the old range (this is necessary because change of GPA base is allowed). Alex/Paul, slot creation should be rare (and modification of GPA base should not be used, even though it is supported). But if you really need a new callback, the two points above are what the second call needs (x86 will flush everything). The other two kvm_arch_flush_shadow in kvm_mmu_notifier_release and kvm_destroy_vm must remove all sptes obviously.