lkml.org 
[lkml]   [2007]   [Aug]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[RFC/PATCH 3/12] Add MMF_DEAD flag to mm_struct being torn down
    This adds a flag to mm_struct that is set when the mm is being
    torn down. It's needed by my next patch disconnecting sparc64
    tlb flushing from the mmu_gather in order to let the later
    become a stack based structure. In general, that flag provides
    the information that is in tlb->fullmm but more easily accessible
    to all page table accessors.

    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    ---

    include/linux/sched.h | 2 ++
    kernel/fork.c | 1 +
    mm/mmap.c | 3 +++
    3 files changed, 6 insertions(+)

    Index: linux-work/include/linux/sched.h
    ===================================================================
    --- linux-work.orig/include/linux/sched.h 2007-08-02 11:25:34.000000000 +1000
    +++ linux-work/include/linux/sched.h 2007-08-02 11:39:44.000000000 +1000
    @@ -366,6 +366,8 @@ extern int get_dumpable(struct mm_struct
    #define MMF_DUMP_FILTER_DEFAULT \
    ((1 << MMF_DUMP_ANON_PRIVATE) | (1 << MMF_DUMP_ANON_SHARED))

    +#define MMF_DEAD 6 /* mm is being destroyed */
    +
    struct mm_struct {
    struct vm_area_struct * mmap; /* list of VMAs */
    struct rb_root mm_rb;
    Index: linux-work/mm/mmap.c
    ===================================================================
    --- linux-work.orig/mm/mmap.c 2007-08-02 11:25:35.000000000 +1000
    +++ linux-work/mm/mmap.c 2007-08-02 11:39:44.000000000 +1000
    @@ -2025,6 +2025,9 @@ void exit_mmap(struct mm_struct *mm)
    unsigned long nr_accounted = 0;
    unsigned long end;

    + /* Mark the MM as dead */
    + __set_bit(MMF_DEAD, &mm->flags);
    +
    /* mm's last user has gone, and its about to be pulled down */
    arch_exit_mmap(mm);

    Index: linux-work/kernel/fork.c
    ===================================================================
    --- linux-work.orig/kernel/fork.c 2007-07-22 10:26:48.000000000 +1000
    +++ linux-work/kernel/fork.c 2007-08-02 11:39:44.000000000 +1000
    @@ -336,6 +336,7 @@ static struct mm_struct * mm_init(struct
    INIT_LIST_HEAD(&mm->mmlist);
    mm->flags = (current->mm) ? current->mm->flags
    : MMF_DUMP_FILTER_DEFAULT;
    + __clear_bit(MMF_DEAD, &mm->flags);
    mm->core_waiters = 0;
    mm->nr_ptes = 0;
    set_mm_counter(mm, file_rss, 0);
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2007-08-07 09:23    [W:0.029 / U:0.824 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site