From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takuya Yoshikawa Subject: Re: [PATCH 09/10] KVM: x86: MMU: Move parent_pte handling from kvm_mmu_get_page() to link_shadow_page() Date: Thu, 26 Nov 2015 11:36:21 +0900 Message-ID: <56567025.6030005@lab.ntt.co.jp> References: <20151120174005.9880b89f54eee2cec2422da5@lab.ntt.co.jp> <20151120174805.a91793d1fce2f0a493f1b955@lab.ntt.co.jp> <564EE08B.4040100@linux.intel.com> <5655E2B5.4030709@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, mtosatti@redhat.com To: Paolo Bonzini , Xiao Guangrong Return-path: In-Reply-To: <5655E2B5.4030709@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On 2015/11/26 1:32, Paolo Bonzini wrote: > On 20/11/2015 09:57, Xiao Guangrong wrote: >> You can move this patch to the front of >> [PATCH 08/10] KVM: x86: MMU: Use for_each_rmap_spte macro instead of >> pte_list_walk() >> >> By moving kvm_mmu_mark_parents_unsync() to the behind of mmu_spte_set() >> (then the parent >> spte is present now), you can directly clean up for_each_rmap_spte(). > > So basically squash together the two patches (8/10 and 9/10) except the > change to kvm_mmu_mark_parents_unsync; then in the second patch switch > from pte_list_walk to for_each_rmap_spte. > > That makes sense indeed. Sorry for my being late to respond to Xiao's suggestions. I could not use my development machine for a while this week. In short, this kvm_mmu_mark_parents_unsync() call in kvm_mmu_get_page() should have been mark_unsync() for the new parent_pte only, because we are constructing the mappings from/to it and other parents in the sp->parent_ptes are not related to this fault? As the code has been this way for some time, a bit scary to change it, but I'll do some tests without that extra kvm_mmu_mark_parents_unsync() with a guest (with ept=0) this afternoon. Takuya