lkml.org 
[lkml]   [2011]   [Feb]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: [PATCH 00/17] mm: mmu_gather rework
    From
    Date
    On Thu, 2011-02-17 at 17:23 +0100, Peter Zijlstra wrote:
    > s390 wants a bit more, but more on that in another email.

    So what s390 wants is something like the below, where a fullmm gather
    flushes a-priory and then simply gathers and frees the pages.

    I can't see why something like this shouldn't work on x86 and power (the
    only two archs I really looked in depth at), but it certainly is
    something that needs a close look.

    ---
    Index: linux-2.6/include/asm-generic/tlb.h
    ===================================================================
    --- linux-2.6.orig/include/asm-generic/tlb.h
    +++ linux-2.6/include/asm-generic/tlb.h
    @@ -145,7 +145,10 @@ tlb_gather_mmu(struct mmu_gather *tlb, s
    tlb->need_flush = 0;
    if (num_online_cpus() == 1)
    tlb->fast_mode = 1;
    +
    tlb->fullmm = full_mm_flush;
    + if (tlb->fullmm)
    + tlb_flush(tlb);

    tlb->local.next = NULL;
    tlb->local.nr = 0;
    @@ -162,13 +165,15 @@ tlb_flush_mmu(struct mmu_gather *tlb)
    {
    struct mmu_gather_batch *batch;

    - if (!tlb->need_flush)
    - return;
    - tlb->need_flush = 0;
    - tlb_flush(tlb);
    + if (tlb->need_flush && !tlb->fullmm) {
    + tlb_flush(tlb);
    + tlb->need_flush = 0;
    + }
    +
    #ifdef CONFIG_HAVE_RCU_TABLE_FREE
    tlb_table_flush(tlb);
    #endif
    +
    if (tlb_fast_mode(tlb))
    return;



    \
     
     \ /
      Last update: 2011-02-17 18:45    [W:0.021 / U:31.916 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site