• SeongJae Park's avatar
    mm/idle_page_tracking: make PG_idle reusable · 1c676e0d
    SeongJae Park authored
    PG_idle and PG_young allow the two PTE Accessed bit users, Idle Page
    Tracking and the reclaim logic concurrently work while not interfering
    with each other.  That is, when they need to clear the Accessed bit, they
    set PG_young to represent the previous state of the bit, respectively.
    And when they need to read the bit, if the bit is cleared, they further
    read the PG_young to know whether the other has cleared the bit meanwhile
    or not.
    
    For yet another user of the PTE Accessed bit, we could add another page
    flag, or extend the mechanism to use the flags.  For the DAMON usecase,
    however, we don't need to do that just yet.  IDLE_PAGE_TRACKING and DAMON
    are mutually exclusive, so there's only ever going to be one user of the
    current set of flags.
    
    In this commit, we split out the CONFIG options to allow for the use of
    PG_young and PG_idle outside of idle page tracking.
    
    In the next commit, DAMON's reference implementation of the virtual memory
    address space monitoring primitives will use it.
    
    [sjpark@amazon.de: set PAGE_EXTENSION for non-64BIT]
      Link: https://lkml.kernel.org/r/20210806095153.6444-1-sj38.park@gmail.com
    [akpm@linux-foundation.org: tweak Kconfig text]
    [sjpark@amazon.de: hide PAGE_IDLE_FLAG from users]
      Link: https://lkml.kernel.org/r/20210813081238.34705-1-sj38.park@gmail.com
    
    Link: https://lkml.kernel.org/r/20210716081449.22187-5-sj38.park@gmail.comSigned-off-by: default avatarSeongJae Park <sjpark@amazon.de>
    Reviewed-by: default avatarShakeel Butt <shakeelb@google.com>
    Reviewed-by: default avatarFernand Sieber <sieberf@amazon.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Amit Shah <amit@kernel.org>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Brendan Higgins <brendanhiggins@google.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: David Woodhouse <dwmw@amazon.com>
    Cc: Fan Du <fan.du@intel.com>
    Cc: Greg Kroah-Hartman <greg@kroah.com>
    Cc: Greg Thelen <gthelen@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Joe Perches <joe@perches.com>
    Cc: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Leonard Foerster <foersleo@amazon.de>
    Cc: Marco Elver <elver@google.com>
    Cc: Markus Boehme <markubo@amazon.de>
    Cc: Maximilian Heyne <mheyne@amazon.de>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@surriel.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    1c676e0d
page_idle.h 2.61 KB