lkml.org 
[lkml]   [2008]   [Jan]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 6/6] mmu_notifier: Add invalidate_all()
    when a task exits we can remove all external pts at once. At that point the
    extern mmu may also unregister itself from the mmu notifier chain to avoid
    future calls.

    Note the complications because of RCU. Other processors may not see that the
    notifier was unlinked until a quiescent period has passed!

    Signed-off-by: Christoph Lameter <clameter@sgi.com>

    ---
    include/linux/mmu_notifier.h | 4 ++++
    mm/mmap.c | 1 +
    2 files changed, 5 insertions(+)

    Index: linux-2.6/include/linux/mmu_notifier.h
    ===================================================================
    --- linux-2.6.orig/include/linux/mmu_notifier.h 2008-01-28 11:43:03.000000000 -0800
    +++ linux-2.6/include/linux/mmu_notifier.h 2008-01-28 12:21:33.000000000 -0800
    @@ -62,6 +62,10 @@ struct mmu_notifier_ops {
    struct mm_struct *mm,
    unsigned long address);

    + /* Dummy needed because the mmu_notifier() macro requires it */
    + void (*invalidate_all)(struct mmu_notifier *mn, struct mm_struct *mm,
    + int dummy);
    +
    /*
    * lock indicates that the function is called under spinlock.
    */
    Index: linux-2.6/mm/mmap.c
    ===================================================================
    --- linux-2.6.orig/mm/mmap.c 2008-01-28 11:47:53.000000000 -0800
    +++ linux-2.6/mm/mmap.c 2008-01-28 11:57:45.000000000 -0800
    @@ -2034,6 +2034,7 @@ void exit_mmap(struct mm_struct *mm)
    unsigned long end;

    /* mm's last user has gone, and its about to be pulled down */
    + mmu_notifier(invalidate_all, mm, 0);
    arch_exit_mmap(mm);

    lru_add_drain();
    --


    \
     
     \ /
      Last update: 2008-01-28 21:33    [W:0.040 / U:0.032 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site