mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
memblock: numa_memblks: fix detection of NUMA node for CXL windows
phys_to_target_node() may assign a CXL Fixed Memory Window to the wrong NUMA node when a CXL node resides in the gap of discontinuous System RAM node. Fix this by checking both numa_meminfo and numa_reserved_meminfo, preferring the reserved NID when the address appears in both. -----BEGIN PGP SIGNATURE----- iQFEBAABCgAuFiEEeOVYVaWZL5900a/pOQOGJssO/ZEFAmmZi4oQHHJwcHRAa2Vy bmVsLm9yZwAKCRA5A4Ymyw79kR8xB/9Do5A06sOV7imvZJH/NZAQ8PbOuo3Ig8I0 XaBhsuq0VrfGEPuVE16DrHrpYSfO0aC1IM9UxUHqvNG9IJluioYhz/bYLatWyzJq oj7cvQ+5q0sAr3EK7vnumKlP6U4jkMkBFhr2nEdw0yKVi2J0SXFY16FNXCefXzbO kYG3agtccuSb3A7iDmXypbRZ9YkI69pq6xl+mnGU3qIrO6yicmZNJaoksPo6e7Fp ycPb2/z6r8to5kygCv6oU+zgIjRkGoDp/71WkGPze0HcG3Xx2+eOQxYzc7RF1OQ8 HYa4bAeILHVUStmOs5KdgJorJDaiij07XlaO+xevqFIN9cMFRszw =I0W0 -----END PGP SIGNATURE----- Merge tag 'fixes-2026-02-21' of git://git.kernel.org/pub/scm/linux/kernel/git/rppt/memblock Pull memblock fix from Mike Rapoport: "Fix detection of NUMA node for CXL windows phys_to_target_node() may assign a CXL Fixed Memory Window to the wrong NUMA node when a CXL node resides in the gap of discontinuous System RAM node. Fix this by checking both numa_meminfo and numa_reserved_meminfo, preferring the reserved NID when the address appears in both" * tag 'fixes-2026-02-21' of git://git.kernel.org/pub/scm/linux/kernel/git/rppt/memblock: mm: numa_memblks: Identify the accurate NUMA ID of CFMW
This commit is contained in:
commit
817c16e565
|
|
@ -570,15 +570,16 @@ static int meminfo_to_nid(struct numa_meminfo *mi, u64 start)
|
||||||
int phys_to_target_node(u64 start)
|
int phys_to_target_node(u64 start)
|
||||||
{
|
{
|
||||||
int nid = meminfo_to_nid(&numa_meminfo, start);
|
int nid = meminfo_to_nid(&numa_meminfo, start);
|
||||||
|
int reserved_nid = meminfo_to_nid(&numa_reserved_meminfo, start);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prefer online nodes, but if reserved memory might be
|
* Prefer online nodes unless the address is also described
|
||||||
* hot-added continue the search with reserved ranges.
|
* by reserved ranges, in which case use the reserved nid.
|
||||||
*/
|
*/
|
||||||
if (nid != NUMA_NO_NODE)
|
if (nid != NUMA_NO_NODE && reserved_nid == NUMA_NO_NODE)
|
||||||
return nid;
|
return nid;
|
||||||
|
|
||||||
return meminfo_to_nid(&numa_reserved_meminfo, start);
|
return reserved_nid;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(phys_to_target_node);
|
EXPORT_SYMBOL_GPL(phys_to_target_node);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user