lkml.org 
[lkml]   [2010]   [Jul]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v4 5/6] KVM: MMU: combine guest pte read between walk and pte prefetch
    On 07/05/2010 12:09 PM, Xiao Guangrong wrote:
    >
    > Avi Kivity wrote:
    >
    >
    >> I'm not convinced we can bypass the checks. Consider:
    >>
    >>
    >> VCPU0 VCPU1
    >>
    >> #PF
    >> walk_addr
    >> -> gpml4e0,gpdpe0,gpde0,gpte0
    >>
    >> replace gpdpe0 with gpdpe1
    >> #PF
    >> walk_addr
    >> -> gpml4e0,gpdpe1,gpde1,gpte1
    >> fetch
    >> -> establish hpml4e0,hpdpte1,hpde0,hpte1
    >> fetch
    >> read hpdpe1
    >> if (present(hpdpe1))
    >> continue;
    >> ...
    >> write hpte0 using shadow hieratchy for hpte1
    >>
    >>
    > Ah, i missed this case, thanks for you point it out, i'll fix it in
    > the next version.
    >

    Note: I think we have to check _after_ kvm_mmu_get_page(), otherwise we
    might be checking a page that is not write-protected and can change again.

    So the logic needs to be something like

    for_each_shadow_entry:
    if (!last_level && !present(*spte))
    kvm_mmu_get_page
    verify gpte
    if (last_level)
    mmu_set_spte()

    --
    error compiling committee.c: too many arguments to function



    \
     
     \ /
      Last update: 2010-07-05 11:23    [W:0.021 / U:177.604 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site