summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJérôme Glisse <jglisse@redhat.com>2019-05-13 20:20:42 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2019-05-14 12:47:49 -0400
commit27560ee96f40017075bcb975b85f85dae3622f01 (patch)
tree955af572e6345d49899988b18c82808791a34f25
parentdfcd66604c1c116ffc7a94375becbed1d7ecbef1 (diff)
mm/mmu_notifier: convert mmu_notifier_range->blockable to a flags
Use an unsigned field for flags other than blockable and convert the blockable field to be one of those flags. Link: http://lkml.kernel.org/r/20190326164747.24405-4-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.h11
1 files changed, 7 insertions, 4 deletions
diff --git a/include/linux/mmu_notifier.h b/include/linux/mmu_notifier.h
index e630def131ce..c8672c366f67 100644
--- a/include/linux/mmu_notifier.h
+++ b/include/linux/mmu_notifier.h
@@ -25,11 +25,13 @@ struct mmu_notifier_mm {
25 spinlock_t lock; 25 spinlock_t lock;
26}; 26};
27 27
28#define MMU_NOTIFIER_RANGE_BLOCKABLE (1 << 0)
29
28struct mmu_notifier_range { 30struct mmu_notifier_range {
29 struct mm_struct *mm; 31 struct mm_struct *mm;
30 unsigned long start; 32 unsigned long start;
31 unsigned long end; 33 unsigned long end;
32 bool blockable; 34 unsigned flags;
33}; 35};
34 36
35struct mmu_notifier_ops { 37struct mmu_notifier_ops {
@@ -229,7 +231,7 @@ extern void __mmu_notifier_invalidate_range(struct mm_struct *mm,
229static inline bool 231static inline bool
230mmu_notifier_range_blockable(const struct mmu_notifier_range *range) 232mmu_notifier_range_blockable(const struct mmu_notifier_range *range)
231{ 233{
232 return range->blockable; 234 return (range->flags & MMU_NOTIFIER_RANGE_BLOCKABLE);
233} 235}
234 236
235static inline void mmu_notifier_release(struct mm_struct *mm) 237static inline void mmu_notifier_release(struct mm_struct *mm)
@@ -275,7 +277,7 @@ static inline void
275mmu_notifier_invalidate_range_start(struct mmu_notifier_range *range) 277mmu_notifier_invalidate_range_start(struct mmu_notifier_range *range)
276{ 278{
277 if (mm_has_notifiers(range->mm)) { 279 if (mm_has_notifiers(range->mm)) {
278 range->blockable = true; 280 range->flags |= MMU_NOTIFIER_RANGE_BLOCKABLE;
279 __mmu_notifier_invalidate_range_start(range); 281 __mmu_notifier_invalidate_range_start(range);
280 } 282 }
281} 283}
@@ -284,7 +286,7 @@ static inline int
284mmu_notifier_invalidate_range_start_nonblock(struct mmu_notifier_range *range) 286mmu_notifier_invalidate_range_start_nonblock(struct mmu_notifier_range *range)
285{ 287{
286 if (mm_has_notifiers(range->mm)) { 288 if (mm_has_notifiers(range->mm)) {
287 range->blockable = false; 289 range->flags &= ~MMU_NOTIFIER_RANGE_BLOCKABLE;
288 return __mmu_notifier_invalidate_range_start(range); 290 return __mmu_notifier_invalidate_range_start(range);
289 } 291 }
290 return 0; 292 return 0;
@@ -331,6 +333,7 @@ static inline void mmu_notifier_range_init(struct mmu_notifier_range *range,
331 range->mm = mm; 333 range->mm = mm;
332 range->start = start; 334 range->start = start;
333 range->end = end; 335 range->end = end;
336 range->flags = 0;
334} 337}
335 338
336#define ptep_clear_flush_young_notify(__vma, __address, __ptep) \ 339#define ptep_clear_flush_young_notify(__vma, __address, __ptep) \