All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] mm: refactor zonelist constructors and iterators
@ 2026-09-12  3:04 Gregory Price
  2026-09-12  3:04 ` [PATCH v2 1/2] mm: refactor find_next_best_node to find_next_best_node_in Gregory Price
                   ` (2 more replies)
  0 siblings, 3 replies; 20+ messages in thread
From: Gregory Price @ 2026-09-12  3:04 UTC (permalink / raw)
  To: linux-mm
  Cc: linux-kernel, kernel-team, akpm, david, ljs, liam, vbabka, rppt,
	surenb, mhocko, brendan.jackman, hannes, ziy

find_next_best_node() picks the next-closest node when building a
fallback list, and hardcodes N_MEMORY as the set it picks from.

Refactor it into find_next_best_node_in(), which takes the candidate
set explicitly.

This makes the existing behaviour explicit at both mm/memory-tiers.c
call sites - they select demotion targets in fallback order from
N_MEMORY - and lets callers narrow that set.

Then extract the per-node construction loop out of build_zonelists()
into build_node_zonelist(),i parameterised on the candidate nodemask
and destination zonelist index.

Together these allow a zonelist to be built over a candidate set other
than N_MEMORY, into a zonelist other than FALLBACK, and iterated in
fallback order over a caller-defined subset.

These are prerequisites for generating a private node zonelist (nodes
unreachable by default), but are otherwise general improvements to
the existing interfaces so I'm proposing them separately.

No functional change intended - purely refactor commits.

Verified on x86_64:

  - find_next_best_node_in() compiles to the same 319 bytes as
    find_next_best_node().
  - Both mm/memory-tiers.c callers grow a single instruction - the
    added argument.
  - Boot-time fallback orders are identical on a 4-node guest with an
    asymmetric distance matrix.

Gregory Price (2):
  mm: refactor find_next_best_node to find_next_best_node_in
  mm/page_alloc: refactor build_node_zonelist() out of build_zonelists()

 mm/internal.h     |  6 ++--
 mm/memory-tiers.c |  7 +++--
 mm/page_alloc.c   | 74 +++++++++++++++++++----------------------------
 3 files changed, 38 insertions(+), 49 deletions(-)

---

v2: 
- drop extern (Vlastimil)
- move printing into build_node_zonelist() (Vlastimil)
- get rid of node_order array (Vlastimil)
- drop update_load bool (will add back when relevant)

-- 
2.55.0



^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2026-09-22  1:02 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-12  3:04 [PATCH v2 0/2] mm: refactor zonelist constructors and iterators Gregory Price
2026-09-12  3:04 ` [PATCH v2 1/2] mm: refactor find_next_best_node to find_next_best_node_in Gregory Price
2026-09-14 15:00   ` Zi Yan
2026-09-18 20:42   ` David Hildenbrand (Arm)
2026-09-18 21:49     ` Gregory Price
2026-09-12  3:04 ` [PATCH v2 2/2] mm/page_alloc: refactor build_node_zonelist() out of build_zonelists() Gregory Price
2026-09-14 14:56   ` Vlastimil Babka (SUSE)
2026-09-14 15:04     ` Gregory Price
2026-09-21  2:49   ` Zi Yan
2026-09-21  2:53     ` Zi Yan
2026-09-21  3:33       ` Gregory Price
2026-09-21 16:20         ` Zi Yan
2026-09-21  3:29     ` Gregory Price
2026-09-21 16:18       ` Zi Yan
2026-09-21 16:38         ` Gregory Price
2026-09-21 17:04           ` Gregory Price
2026-09-21 17:18           ` Zi Yan
2026-09-21 23:58           ` Zi Yan
2026-09-22  1:02             ` Gregory Price
2026-09-15 16:27 ` [PATCH v2 0/2] mm: refactor zonelist constructors and iterators Zenghui Yu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.