lkml.org 
[lkml]   [2010]   [Nov]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v2 1/6] KVM: MMU: fix forgot flush vcpu tlbs
    On Wed, Nov 17, 2010 at 06:26:51PM +0200, Avi Kivity wrote:
    > On 11/17/2010 05:29 PM, Marcelo Tosatti wrote:
    > >> diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h
    > >> index ba00eef..58b4d9a 100644
    > >> --- a/arch/x86/kvm/paging_tmpl.h
    > >> +++ b/arch/x86/kvm/paging_tmpl.h
    > >> @@ -781,6 +781,7 @@ static int FNAME(sync_page)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp,
    > >> else
    > >> nonpresent = shadow_notrap_nonpresent_pte;
    > >> drop_spte(vcpu->kvm,&sp->spt[i], nonpresent);
    > >> + kvm_flush_remote_tlbs(vcpu->kvm);
    > >> continue;
    > >> }
    > >
    > >This is not needed. Guest is responsible for flushing on
    > >present->nonpresent change.
    >
    > sync_page
    > drop_spte
    > kvm_mmu_notifier_invalidate_page
    > kvm_unmap_rmapp
    > spte doesn't exist -> no flush
    > page is freed
    > guest can write into freed page?

    Ugh right.

    > I don't think we need to flush immediately; set a "tlb dirty" bit
    > somewhere that is cleareded when we flush the tlb.
    > kvm_mmu_notifier_invalidate_page() can consult the bit and force a
    > flush if set.

    Yep.



    \
     
     \ /
      Last update: 2010-11-17 18:39    [W:0.035 / U:119.400 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site