lkml.org 
[lkml]   [2010]   [Jul]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v4 4/6] KVM: MMU: prefetch ptes when intercepted guest #PF
    On Thu, Jul 01, 2010 at 09:55:17PM +0800, Xiao Guangrong wrote:
    > Support prefetch ptes when intercept guest #PF, avoid to #PF by later
    > access
    >
    > If we meet any failure in the prefetch path, we will exit it and
    > not try other ptes to avoid become heavy path
    >
    > Note: this speculative will mark page become dirty but it not really
    > accessed, the same issue is in other speculative paths like invlpg,
    > pte write, fortunately, it just affect host memory management. After
    > Avi's patchset named "[PATCH v2 1/4] KVM: MMU: Introduce drop_spte()"
    > merged, we will easily fix it. Will do it in the future.
    >
    > Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
    > ---
    > arch/x86/kvm/mmu.c | 79 ++++++++++++++++++++++++++++++++++++++++++++
    > arch/x86/kvm/paging_tmpl.h | 76 ++++++++++++++++++++++++++++++++++++++++++
    > 2 files changed, 155 insertions(+), 0 deletions(-)
    >

    > + if (pte_prefetch_topup_memory_cache(vcpu))
    > + return;
    > +
    > + for (j = 0; i < max; i++, j++) {
    > + pt_element_t gpte;
    > + unsigned pte_access;
    > + u64 *spte = sp->spt + i;
    > + gfn_t gfn;
    > + pfn_t pfn;
    > +
    > + if (spte == sptep)
    > + continue;
    > +
    > + if (*spte != shadow_trap_nonpresent_pte)
    > + continue;
    > +
    > + gpte = gptep[j];
    > +
    > + if (is_rsvd_bits_set(vcpu, gpte, PT_PAGE_TABLE_LEVEL))
    > + break;

    BTW, doesnt sync_page also lack reserved bit checking? (unrelated to
    this patch).



    \
     
     \ /
      Last update: 2010-07-02 19:25    [W:0.024 / U:0.272 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site