OSDN Git Service

include/linux/hugetlb.h: add synchronization information for new hugetlb specific...
authorMike Kravetz <mike.kravetz@oracle.com>
Wed, 24 Feb 2021 20:09:08 +0000 (12:09 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 24 Feb 2021 21:38:34 +0000 (13:38 -0800)
Add comments, no functional change.

Link: https://lkml.kernel.org/r/62a80585-2a73-10cc-4a2d-5721540d4ad2@oracle.com
Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
Acked-by: Michal Hocko <mhocko@suse.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/linux/hugetlb.h

index eb2682f..3a541c6 100644 (file)
@@ -480,14 +480,24 @@ unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
  * HPG_restore_reserve - Set when a hugetlb page consumes a reservation at
  *     allocation time.  Cleared when page is fully instantiated.  Free
  *     routine checks flag to restore a reservation on error paths.
+ *     Synchronization:  Examined or modified by code that knows it has
+ *     the only reference to page.  i.e. After allocation but before use
+ *     or when the page is being freed.
  * HPG_migratable  - Set after a newly allocated page is added to the page
  *     cache and/or page tables.  Indicates the page is a candidate for
  *     migration.
+ *     Synchronization:  Initially set after new page allocation with no
+ *     locking.  When examined and modified during migration processing
+ *     (isolate, migrate, putback) the hugetlb_lock is held.
  * HPG_temporary - - Set on a page that is temporarily allocated from the buddy
  *     allocator.  Typically used for migration target pages when no pages
  *     are available in the pool.  The hugetlb free page path will
  *     immediately free pages with this flag set to the buddy allocator.
+ *     Synchronization: Can be set after huge page allocation from buddy when
+ *     code knows it has only reference.  All other examinations and
+ *     modifications require hugetlb_lock.
  * HPG_freed - Set when page is on the free lists.
+ *     Synchronization: hugetlb_lock held for examination and modification.
  */
 enum hugetlb_page_flags {
        HPG_restore_reserve = 0,