[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <cddcb4fa-0958-4a02-8eae-5ef19e0d1160@amd.com>
Date: Thu, 22 May 2025 10:53:08 +0530
From: Bharata B Rao <bharata@....com>
To: Gregory Price <gourry@...rry.net>, Zi Yan <ziy@...dia.com>
Cc: Donet Tom <donettom@...ux.ibm.com>, linux-kernel@...r.kernel.org,
linux-mm@...ck.org, Jonathan.Cameron@...wei.com, dave.hansen@...el.com,
hannes@...xchg.org, mgorman@...hsingularity.net, mingo@...hat.com,
peterz@...radead.org, raghavendra.kt@....com, riel@...riel.com,
rientjes@...gle.com, sj@...nel.org, weixugc@...gle.com, willy@...radead.org,
ying.huang@...ux.alibaba.com, dave@...olabs.net, nifan.cxl@...il.com,
joshua.hahnjy@...il.com, xuezhengchu@...wei.com, yiannis@...corp.com,
akpm@...ux-foundation.org, david@...hat.com
Subject: Re: [RFC PATCH v0 2/2] mm: sched: Batch-migrate misplaced pages
On 22-May-25 8:54 AM, Gregory Price wrote:
>
> The really annoying part of all of this is
>
> #ifdef CONFIG_NUMA_BALANCING
> #ifdef LAST_CPUPID_NOT_IN_PAGE_FLAGS
> static inline int folio_last_cpupid(struct folio *folio)
> {
> return folio->_last_cpupid;
> }
> #else
> static inline int folio_last_cpupid(struct folio *folio)
> {
> return (folio->flags >> LAST_CPUPID_PGSHIFT) & LAST_CPUPID_MASK;
> }
> #endif
> #else /* !CONFIG_NUMA_BALANCING */
> static inline int folio_last_cpupid(struct folio *folio)
> {
> return folio_nid(folio); /* XXX */
> }
> ...
> #endif
>
> Obviously we don't have to care about the !NUMAB case, but what a silly
> muxing we have going on here (I get it, space is tight - the interfaces
> are just confusing is all).
I really didn't realize the usage in !NUMAB case, thanks.
>
> My question is whether there's some kind of race condition here if the
> mode changes between isolate and fetch. Can we "fetch a node id" and
> end up with a cpupid because someone toggled the between tiering and
> balancing?
Good question. I need to check all such cases where inadvertent reset or
reuse/repurposing of last_cpupid field of an isolated folio becomes
possible.
>
> If we can answer that, then implementing folio_last_cpupid and
> folio_last_access_nid can return -1 if called in the wrong mode
> (assuming this check isn't too expensive). That would be a nice cleanup
> for readability sake.
Right.
Regards,
Bharata.
Powered by blists - more mailing lists