summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJérôme Glisse <jglisse@redhat.com>2019-05-13 20:20:57 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2019-05-14 12:47:49 -0400
commitbf198b2b34bfd4bc9bd6abb33bf650b74329a2ac (patch)
tree120a359da1bf750010ceb55f6a069a1ec814389e
parent7269f999934b289da7972e975b781417b07ef836 (diff)
mm/mmu_notifier: pass down vma and reasons why mmu notifier is happening
CPU page table update can happens for many reasons, not only as a result of a syscall (munmap(), mprotect(), mremap(), madvise(), ...) but also as a result of kernel activities (memory compression, reclaim, migration, ...). Users of mmu notifier API track changes to the CPU page table and take specific action for them. While current API only provide range of virtual address affected by the change, not why the changes is happening This patch is just passing down the new informations by adding it to the mmu_notifier_range structure. Link: http://lkml.kernel.org/r/20190326164747.24405-8-jglisse@redhat.com Signed-off-by: Jérôme Glisse <jglisse@redhat.com> Reviewed-by: Ralph Campbell <rcampbell@nvidia.com> Reviewed-by: Ira Weiny <ira.weiny@intel.com> Cc: Christian König <christian.koenig@amd.com> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Cc: Jani Nikula <jani.nikula@linux.intel.com> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Cc: Jan Kara <jack@suse.cz> Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: Peter Xu <peterx@redhat.com> Cc: Felix Kuehling <Felix.Kuehling@amd.com> Cc: Jason Gunthorpe <jgg@mellanox.com> Cc: Ross Zwisler <zwisler@kernel.org> Cc: Dan Williams <dan.j.williams@intel.com> Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Radim Krcmar <rkrcmar@redhat.com> Cc: Michal Hocko <mhocko@kernel.org> Cc: Christian Koenig <christian.koenig@amd.com> Cc: John Hubbard <jhubbard@nvidia.com> Cc: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--include/linux/mmu_notifier.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/include/linux/mmu_notifier.h b/include/linux/mmu_notifier.h
index 62f94cd85455..0379956fff23 100644
--- a/include/linux/mmu_notifier.h
+++ b/include/linux/mmu_notifier.h
@@ -58,10 +58,12 @@ struct mmu_notifier_mm {
58#define MMU_NOTIFIER_RANGE_BLOCKABLE (1 << 0) 58#define MMU_NOTIFIER_RANGE_BLOCKABLE (1 << 0)
59 59
60struct mmu_notifier_range { 60struct mmu_notifier_range {
61 struct vm_area_struct *vma;
61 struct mm_struct *mm; 62 struct mm_struct *mm;
62 unsigned long start; 63 unsigned long start;
63 unsigned long end; 64 unsigned long end;
64 unsigned flags; 65 unsigned flags;
66 enum mmu_notifier_event event;
65}; 67};
66 68
67struct mmu_notifier_ops { 69struct mmu_notifier_ops {
@@ -363,10 +365,12 @@ static inline void mmu_notifier_range_init(struct mmu_notifier_range *range,
363 unsigned long start, 365 unsigned long start,
364 unsigned long end) 366 unsigned long end)
365{ 367{
368 range->vma = vma;
369 range->event = event;
366 range->mm = mm; 370 range->mm = mm;
367 range->start = start; 371 range->start = start;
368 range->end = end; 372 range->end = end;
369 range->flags = 0; 373 range->flags = flags;
370} 374}
371 375
372#define ptep_clear_flush_young_notify(__vma, __address, __ptep) \ 376#define ptep_clear_flush_young_notify(__vma, __address, __ptep) \