mm: multi-gen LRU: simplify arch_has_hw_pte_young() check
authorYu Zhao <yuzhao@google.com>
Thu, 22 Dec 2022 04:19:06 +0000 (21:19 -0700)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 19 Jan 2023 01:12:49 +0000 (17:12 -0800)
Scanning page tables when hardware does not set the accessed bit has
no real use cases.

Link: https://lkml.kernel.org/r/20221222041905.2431096-9-yuzhao@google.com
Signed-off-by: Yu Zhao <yuzhao@google.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Michael Larabel <Michael@MichaelLarabel.com>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Roman Gushchin <roman.gushchin@linux.dev>
Cc: Suren Baghdasaryan <surenb@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/vmscan.c

index 2964652d1aa866af8c3f90c3ff330a6fdc24a97f..7c3fd900a89d7c7add485036b0ce473304550bf2 100644 (file)
@@ -4428,7 +4428,7 @@ static bool try_to_inc_max_seq(struct lruvec *lruvec, unsigned long max_seq,
         * handful of PTEs. Spreading the work out over a period of time usually
         * is less efficient, but it avoids bursty page faults.
         */
-       if (!force_scan && !(arch_has_hw_pte_young() && get_cap(LRU_GEN_MM_WALK))) {
+       if (!arch_has_hw_pte_young() || !get_cap(LRU_GEN_MM_WALK)) {
                success = iterate_mm_list_nowalk(lruvec, max_seq);
                goto done;
        }