lkml.org 
[lkml]   [2010]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] x86: use pgd accessors when cloning a pgd range.
    On Wed, Oct 27, 2010 at 09:50:13AM +0100, Ian Campbell wrote:
    > Page tables should always be updated using the proper accessor
    > methods. Not doing so bypasses the paravirt infrastructure.
    >
    > In this case the failure to do so was exposed under Xen by
    > b40827fa7268 "x86-32, mm: Add an initial page table for core
    > bootstrapping".
    >
    > Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
    > Cc: Borislav Petkov <bp@alien8.de>
    > Cc: H. Peter Anvin <hpa@linux.intel.com>
    > Cc: Jeremy Fitzhardinge <jeremy@goop.org>
    > ---
    > arch/x86/include/asm/pgtable.h | 5 ++++-
    > 1 files changed, 4 insertions(+), 1 deletions(-)
    >
    > diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
    > index ada823a..0b4c514 100644
    > --- a/arch/x86/include/asm/pgtable.h
    > +++ b/arch/x86/include/asm/pgtable.h
    > @@ -619,7 +619,10 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm,
    > */
    > static inline void clone_pgd_range(pgd_t *dst, pgd_t *src, int count)
    > {
    > - memcpy(dst, src, count * sizeof(pgd_t));
    > + int i;
    > +
    > + for (i=0; i<count; i++)
    > + set_pgd(&dst[i], src[i]);

    Hmm, this slows down clone_pgd_range(). It is called at 3 sites total,
    two of which happen only on boot in setup_arch() so they can be ignored
    but the callchain

    copy_process()
    ...
    mm_init()
    |->mm_alloc_pgd()
    |->pgd_alloc()
    |->pgd_ctor()
    |->clone_pgd_range()

    could become noticeable. To be on the safe side, I'd make
    clone_pgd_range() a macro calling either the native or the xen version..

    hpa?

    --
    Regards/Gruss,
    Boris.


    \
     
     \ /
      Last update: 2010-10-27 12:43    [W:0.021 / U:8.424 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site