lkml.org 
[lkml]   [2008]   [Jan]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [patch 6/6] mmu_notifier: Add invalidate_all()
    What is the status of getting invalidate_all adjusted to indicate a need
    to also call _release?

    Thanks,
    Robin

    On Mon, Jan 28, 2008 at 12:28:46PM -0800, Christoph Lameter wrote:
    > 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-29 17:35    [W:0.042 / U:1.576 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site