diff options
author | Jérôme Glisse <jglisse@redhat.com> | 2019-05-13 20:20:42 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-05-14 12:47:49 -0400 |
commit | 27560ee96f40017075bcb975b85f85dae3622f01 (patch) | |
tree | 955af572e6345d49899988b18c82808791a34f25 | |
parent | dfcd66604c1c116ffc7a94375becbed1d7ecbef1 (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.h | 11 |
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 | |||
28 | struct mmu_notifier_range { | 30 | struct 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 | ||
35 | struct mmu_notifier_ops { | 37 | struct mmu_notifier_ops { |
@@ -229,7 +231,7 @@ extern void __mmu_notifier_invalidate_range(struct mm_struct *mm, | |||
229 | static inline bool | 231 | static inline bool |
230 | mmu_notifier_range_blockable(const struct mmu_notifier_range *range) | 232 | mmu_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 | ||
235 | static inline void mmu_notifier_release(struct mm_struct *mm) | 237 | static inline void mmu_notifier_release(struct mm_struct *mm) |
@@ -275,7 +277,7 @@ static inline void | |||
275 | mmu_notifier_invalidate_range_start(struct mmu_notifier_range *range) | 277 | mmu_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 | |||
284 | mmu_notifier_invalidate_range_start_nonblock(struct mmu_notifier_range *range) | 286 | mmu_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) \ |