mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-16 02:14:58 +00:00
memblock: restore check for node validity in arch_numa
Rework of NUMA initialization in arch_numa dropped a check that refused to accept configurations with invalid node IDs. Restore that check to ensure that when firmware passes invalid nodes, such configuration is rejected and kernel gracefully falls back to dummy NUMA. -----BEGIN PGP SIGNATURE----- iQFEBAABCgAuFiEEeOVYVaWZL5900a/pOQOGJssO/ZEFAmdSz9wQHHJwcHRAa2Vy bmVsLm9yZwAKCRA5A4Ymyw79kQPWCACSCwm7B8K0ctWbqGHsglCkMgF9pI/mUwjM 3c6zjzpsL5z0ii41cAEbDKWNTfroJddkWxZbDveHt3PytEYVM5ZvQL3tGwCfkpG8 wrAQSRE4XMv+ffA4LBB7U4xHxxEKtSc7OpqO3h4RED3T66hlFtKWMhiNYhl2mKwn 4ic7xLqoKj7Nu3hHc3014x/94tVWszgdgsZo+OJyPSxh+kwLdOVpwZWG22CT58UR nTVQu/a13XVFu8R11S3a4iDMTOqb5oBVRw2pnw+knChXFJ4r2Pr/pA8uneTWEAFB TiYclkH/0/eDd9Vpx5JTUQf4xPfuIXHynjQDwXYHWJ/U9jwLAwTH =h/KU -----END PGP SIGNATURE----- Merge tag 'fixes-2024-12-06' of git://git.kernel.org/pub/scm/linux/kernel/git/rppt/memblock Pull memblock fixes from Mike Rapoport: "Restore check for node validity in arch_numa. The rework of NUMA initialization in arch_numa dropped a check that refused to accept configurations with invalid node IDs. Restore that check to ensure that when firmware passes invalid nodes, such configuration is rejected and kernel gracefully falls back to dummy NUMA" * tag 'fixes-2024-12-06' of git://git.kernel.org/pub/scm/linux/kernel/git/rppt/memblock: arch_numa: Restore nid checks before registering a memblock with a node memblock: allow zero threshold in validate_numa_converage()
This commit is contained in:
commit
ddfc146ed5
@ -208,6 +208,10 @@ static int __init numa_register_nodes(void)
|
||||
{
|
||||
int nid;
|
||||
|
||||
/* Check the validity of the memblock/node mapping */
|
||||
if (!memblock_validate_numa_coverage(0))
|
||||
return -EINVAL;
|
||||
|
||||
/* Finally register nodes. */
|
||||
for_each_node_mask(nid, numa_nodes_parsed) {
|
||||
unsigned long start_pfn, end_pfn;
|
||||
|
@ -735,7 +735,7 @@ int __init_memblock memblock_add(phys_addr_t base, phys_addr_t size)
|
||||
/**
|
||||
* memblock_validate_numa_coverage - check if amount of memory with
|
||||
* no node ID assigned is less than a threshold
|
||||
* @threshold_bytes: maximal number of pages that can have unassigned node
|
||||
* @threshold_bytes: maximal memory size that can have unassigned node
|
||||
* ID (in bytes).
|
||||
*
|
||||
* A buggy firmware may report memory that does not belong to any node.
|
||||
@ -755,7 +755,7 @@ bool __init_memblock memblock_validate_numa_coverage(unsigned long threshold_byt
|
||||
nr_pages += end_pfn - start_pfn;
|
||||
}
|
||||
|
||||
if ((nr_pages << PAGE_SHIFT) >= threshold_bytes) {
|
||||
if ((nr_pages << PAGE_SHIFT) > threshold_bytes) {
|
||||
mem_size_mb = memblock_phys_mem_size() >> 20;
|
||||
pr_err("NUMA: no nodes coverage for %luMB of %luMB RAM\n",
|
||||
(nr_pages << PAGE_SHIFT) >> 20, mem_size_mb);
|
||||
|
Loading…
x
Reference in New Issue
Block a user