* [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init
@ 2026-03-04 6:46 Haifeng Xu
2026-03-04 7:55 ` Haifeng Xu
0 siblings, 1 reply; 12+ messages in thread
From: Haifeng Xu @ 2026-03-04 6:46 UTC (permalink / raw)
To: rafael, lenb, dan.j.williams, jonathan.cameron
Cc: dave, dave.jiang, alison.schofield, vishal.l.verma, ira.weiny,
linux-cxl, linux-acpi, linux-kernel, Haifeng Xu
For the machine Intel(R) Xeon(R) 6746E that supports CXL memory,
the possible node is 20 (0-19). However, only two numa nodes (0-1)
have memory and the rest (2-19) nodes detected by CEDT is memoryless.
The problems is that when creating many pods, the shrinker map size
need to be expanded for all memory cgroups in expand_shrinker_info().
If the number of possibles nodes is too large, the holding time of
shrinker lock grows significantly.
In this case, there is no CXL memory inserted in the machine, those
memoryless nodes are useless for us, so there is no need set them to
'numa_nodes_parsed'. After disabling parsing CFMWS, the pod creation
time is reduced from over 10 minutes to approximately 150 seconds in
our intertel test.
Signed-off-by: Haifeng Xu <haifeng.xu@shopee.com>
---
drivers/acpi/numa/srat.c | 29 ++++++++++++++++++++++-------
include/acpi/acpi_numa.h | 6 ++++++
2 files changed, 28 insertions(+), 7 deletions(-)
diff --git a/drivers/acpi/numa/srat.c b/drivers/acpi/numa/srat.c
index aa87ee1583a4..8716d70043fe 100644
--- a/drivers/acpi/numa/srat.c
+++ b/drivers/acpi/numa/srat.c
@@ -31,6 +31,7 @@ static int node_to_pxm_map[MAX_NUMNODES]
unsigned char acpi_srat_revision __initdata;
static int acpi_numa __initdata;
+static int cfmws_numa __initdata;
static int last_real_pxm;
@@ -39,6 +40,12 @@ void __init disable_srat(void)
acpi_numa = -1;
}
+void __init disable_cfmws(void)
+{
+ cfmws_numa = -1;
+}
+
+
int pxm_to_node(int pxm)
{
if (pxm < 0 || pxm >= MAX_PXM_DOMAINS || numa_off)
@@ -313,6 +320,12 @@ int __init srat_disabled(void)
return acpi_numa < 0;
}
+int __init cfmws_disabled(void)
+{
+ return cfmws_numa < 0;
+}
+
+
__weak int __init numa_fill_memblks(u64 start, u64 end)
{
return NUMA_NO_MEMBLK;
@@ -648,14 +661,16 @@ int __init acpi_numa_init(void)
*/
/* fake_pxm is the next unused PXM value after SRAT parsing */
- for (i = 0, fake_pxm = -1; i < MAX_NUMNODES; i++) {
- if (node_to_pxm_map[i] > fake_pxm)
- fake_pxm = node_to_pxm_map[i];
+ if (!cfmws_disabled()) {
+ for (i = 0, fake_pxm = -1; i < MAX_NUMNODES; i++) {
+ if (node_to_pxm_map[i] > fake_pxm)
+ fake_pxm = node_to_pxm_map[i];
+ }
+ last_real_pxm = fake_pxm;
+ fake_pxm++;
+ acpi_table_parse_cedt(ACPI_CEDT_TYPE_CFMWS, acpi_parse_cfmws,
+ &fake_pxm);
}
- last_real_pxm = fake_pxm;
- fake_pxm++;
- acpi_table_parse_cedt(ACPI_CEDT_TYPE_CFMWS, acpi_parse_cfmws,
- &fake_pxm);
if (cnt < 0)
return cnt;
diff --git a/include/acpi/acpi_numa.h b/include/acpi/acpi_numa.h
index 99b960bd473c..2435f60e56ce 100644
--- a/include/acpi/acpi_numa.h
+++ b/include/acpi/acpi_numa.h
@@ -21,6 +21,7 @@ extern int fix_pxm_node_maps(int max_nid);
extern void bad_srat(void);
extern int srat_disabled(void);
+extern void disable_cfmws(void);
#else /* CONFIG_ACPI_NUMA */
static inline int fix_pxm_node_maps(int max_nid)
@@ -30,6 +31,11 @@ static inline int fix_pxm_node_maps(int max_nid)
static inline void disable_srat(void)
{
}
+
+static inline void disable_cfmws(void)
+{
+}
+
static inline int pxm_to_node(int pxm)
{
return 0;
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init
2026-03-04 6:46 Haifeng Xu
@ 2026-03-04 7:55 ` Haifeng Xu
0 siblings, 0 replies; 12+ messages in thread
From: Haifeng Xu @ 2026-03-04 7:55 UTC (permalink / raw)
To: rafael, lenb, dan.j.williams, jonathan.cameron
Cc: dave, dave.jiang, alison.schofield, vishal.l.verma, ira.weiny,
linux-cxl, linux-acpi, linux-kernel
On 2026/3/4 14:46, Haifeng Xu wrote:
> For the machine Intel(R) Xeon(R) 6746E that supports CXL memory,
> the possible node is 20 (0-19). However, only two numa nodes (0-1)
> have memory and the rest (2-19) nodes detected by CEDT is memoryless.
>
> The problems is that when creating many pods, the shrinker map size
> need to be expanded for all memory cgroups in expand_shrinker_info().
> If the number of possibles nodes is too large, the holding time of
> shrinker lock grows significantly.
>
> In this case, there is no CXL memory inserted in the machine, those
> memoryless nodes are useless for us, so there is no need set them to
> 'numa_nodes_parsed'. After disabling parsing CFMWS, the pod creation
> time is reduced from over 10 minutes to approximately 150 seconds in
> our intertel test.
>
> Signed-off-by: Haifeng Xu <haifeng.xu@shopee.com>
> ---
> drivers/acpi/numa/srat.c | 29 ++++++++++++++++++++++-------
> include/acpi/acpi_numa.h | 6 ++++++
> 2 files changed, 28 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/acpi/numa/srat.c b/drivers/acpi/numa/srat.c
> index aa87ee1583a4..8716d70043fe 100644
> --- a/drivers/acpi/numa/srat.c
> +++ b/drivers/acpi/numa/srat.c
> @@ -31,6 +31,7 @@ static int node_to_pxm_map[MAX_NUMNODES]
>
> unsigned char acpi_srat_revision __initdata;
> static int acpi_numa __initdata;
> +static int cfmws_numa __initdata;
>
> static int last_real_pxm;
>
> @@ -39,6 +40,12 @@ void __init disable_srat(void)
> acpi_numa = -1;
> }
>
> +void __init disable_cfmws(void)
> +{
> + cfmws_numa = -1;
> +}
> +
> +
> int pxm_to_node(int pxm)
> {
> if (pxm < 0 || pxm >= MAX_PXM_DOMAINS || numa_off)
> @@ -313,6 +320,12 @@ int __init srat_disabled(void)
> return acpi_numa < 0;
> }
>
> +int __init cfmws_disabled(void)
> +{
> + return cfmws_numa < 0;
> +}
> +
> +
> __weak int __init numa_fill_memblks(u64 start, u64 end)
> {
> return NUMA_NO_MEMBLK;
> @@ -648,14 +661,16 @@ int __init acpi_numa_init(void)
> */
>
> /* fake_pxm is the next unused PXM value after SRAT parsing */
> - for (i = 0, fake_pxm = -1; i < MAX_NUMNODES; i++) {
> - if (node_to_pxm_map[i] > fake_pxm)
> - fake_pxm = node_to_pxm_map[i];
> + if (!cfmws_disabled()) {
> + for (i = 0, fake_pxm = -1; i < MAX_NUMNODES; i++) {
> + if (node_to_pxm_map[i] > fake_pxm)
> + fake_pxm = node_to_pxm_map[i];
> + }
> + last_real_pxm = fake_pxm;
> + fake_pxm++;
> + acpi_table_parse_cedt(ACPI_CEDT_TYPE_CFMWS, acpi_parse_cfmws,
> + &fake_pxm);
> }
> - last_real_pxm = fake_pxm;
> - fake_pxm++;
> - acpi_table_parse_cedt(ACPI_CEDT_TYPE_CFMWS, acpi_parse_cfmws,
> - &fake_pxm);
>
> if (cnt < 0)
> return cnt;
> diff --git a/include/acpi/acpi_numa.h b/include/acpi/acpi_numa.h
> index 99b960bd473c..2435f60e56ce 100644
> --- a/include/acpi/acpi_numa.h
> +++ b/include/acpi/acpi_numa.h
> @@ -21,6 +21,7 @@ extern int fix_pxm_node_maps(int max_nid);
>
> extern void bad_srat(void);
> extern int srat_disabled(void);
> +extern void disable_cfmws(void);
>
> #else /* CONFIG_ACPI_NUMA */
> static inline int fix_pxm_node_maps(int max_nid)
> @@ -30,6 +31,11 @@ static inline int fix_pxm_node_maps(int max_nid)
> static inline void disable_srat(void)
> {
> }
> +
> +static inline void disable_cfmws(void)
> +{
> +}
> +
> static inline int pxm_to_node(int pxm)
> {
> return 0;
Sorry, This patch is deprecated. I'll send a new one.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init
@ 2026-03-04 8:06 Haifeng Xu
2026-03-04 14:10 ` kernel test robot
` (5 more replies)
0 siblings, 6 replies; 12+ messages in thread
From: Haifeng Xu @ 2026-03-04 8:06 UTC (permalink / raw)
To: rafael, lenb, dan.j.williams, jonathan.cameron
Cc: dave, dave.jiang, alison.schofield, vishal.l.verma, ira.weiny,
linux-cxl, linux-acpi, linux-kernel, Haifeng Xu
For the machine Intel(R) Xeon(R) 6746E that supports CXL memory,
the possible nodes are 20 (0-19). However, only two numa nodes (0-1)
have memory and the rest nodes (2-19) detected by CEDT are memoryless.
The problems is that when creating many pods, the shrinker map size
needs to be expanded for all memory cgroups in expand_shrinker_info().
If the number of possible nodes is too large, the holding time of
shrinker lock grows significantly.
In this case, there is no CXL memory inserted in the machine, those
memoryless nodes are useless for us, so there is no need to set them
in 'numa_nodes_parsed'. After disabling parsing CFMWS, the pod creation
time is reduced from over 10 minutes to approximately 150 seconds in
our internal test.
Signed-off-by: Haifeng Xu <haifeng.xu@shopee.com>
---
arch/x86/mm/numa.c | 2 ++
drivers/acpi/numa/srat.c | 29 ++++++++++++++++++++++-------
include/acpi/acpi_numa.h | 6 ++++++
3 files changed, 30 insertions(+), 7 deletions(-)
diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c
index 7a97327140df..b127bb65d360 100644
--- a/arch/x86/mm/numa.c
+++ b/arch/x86/mm/numa.c
@@ -37,6 +37,8 @@ static __init int numa_setup(char *opt)
disable_srat();
if (!strncmp(opt, "nohmat", 6))
disable_hmat();
+ if (!strncmp(opt, "nocfmws", 7))
+ disable_cfmws();
return 0;
}
early_param("numa", numa_setup);
diff --git a/drivers/acpi/numa/srat.c b/drivers/acpi/numa/srat.c
index aa87ee1583a4..8716d70043fe 100644
--- a/drivers/acpi/numa/srat.c
+++ b/drivers/acpi/numa/srat.c
@@ -31,6 +31,7 @@ static int node_to_pxm_map[MAX_NUMNODES]
unsigned char acpi_srat_revision __initdata;
static int acpi_numa __initdata;
+static int cfmws_numa __initdata;
static int last_real_pxm;
@@ -39,6 +40,12 @@ void __init disable_srat(void)
acpi_numa = -1;
}
+void __init disable_cfmws(void)
+{
+ cfmws_numa = -1;
+}
+
+
int pxm_to_node(int pxm)
{
if (pxm < 0 || pxm >= MAX_PXM_DOMAINS || numa_off)
@@ -313,6 +320,12 @@ int __init srat_disabled(void)
return acpi_numa < 0;
}
+int __init cfmws_disabled(void)
+{
+ return cfmws_numa < 0;
+}
+
+
__weak int __init numa_fill_memblks(u64 start, u64 end)
{
return NUMA_NO_MEMBLK;
@@ -648,14 +661,16 @@ int __init acpi_numa_init(void)
*/
/* fake_pxm is the next unused PXM value after SRAT parsing */
- for (i = 0, fake_pxm = -1; i < MAX_NUMNODES; i++) {
- if (node_to_pxm_map[i] > fake_pxm)
- fake_pxm = node_to_pxm_map[i];
+ if (!cfmws_disabled()) {
+ for (i = 0, fake_pxm = -1; i < MAX_NUMNODES; i++) {
+ if (node_to_pxm_map[i] > fake_pxm)
+ fake_pxm = node_to_pxm_map[i];
+ }
+ last_real_pxm = fake_pxm;
+ fake_pxm++;
+ acpi_table_parse_cedt(ACPI_CEDT_TYPE_CFMWS, acpi_parse_cfmws,
+ &fake_pxm);
}
- last_real_pxm = fake_pxm;
- fake_pxm++;
- acpi_table_parse_cedt(ACPI_CEDT_TYPE_CFMWS, acpi_parse_cfmws,
- &fake_pxm);
if (cnt < 0)
return cnt;
diff --git a/include/acpi/acpi_numa.h b/include/acpi/acpi_numa.h
index 99b960bd473c..2435f60e56ce 100644
--- a/include/acpi/acpi_numa.h
+++ b/include/acpi/acpi_numa.h
@@ -21,6 +21,7 @@ extern int fix_pxm_node_maps(int max_nid);
extern void bad_srat(void);
extern int srat_disabled(void);
+extern void disable_cfmws(void);
#else /* CONFIG_ACPI_NUMA */
static inline int fix_pxm_node_maps(int max_nid)
@@ -30,6 +31,11 @@ static inline int fix_pxm_node_maps(int max_nid)
static inline void disable_srat(void)
{
}
+
+static inline void disable_cfmws(void)
+{
+}
+
static inline int pxm_to_node(int pxm)
{
return 0;
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init
2026-03-04 8:06 [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init Haifeng Xu
@ 2026-03-04 14:10 ` kernel test robot
2026-03-04 15:11 ` kernel test robot
` (4 subsequent siblings)
5 siblings, 0 replies; 12+ messages in thread
From: kernel test robot @ 2026-03-04 14:10 UTC (permalink / raw)
To: Haifeng Xu, rafael, lenb, dan.j.williams, jonathan.cameron
Cc: llvm, oe-kbuild-all, dave, dave.jiang, alison.schofield,
vishal.l.verma, ira.weiny, linux-cxl, linux-acpi, linux-kernel,
Haifeng Xu
Hi Haifeng,
kernel test robot noticed the following build warnings:
[auto build test WARNING on rafael-pm/linux-next]
[also build test WARNING on rafael-pm/bleeding-edge cxl/next tip/x86/mm linus/master v6.16-rc1 next-20260303]
[cannot apply to cxl/pending]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Haifeng-Xu/ACPI-add-a-boot-parameter-to-disable-parsing-CFMWS-during-NUMA-init/20260304-160933
base: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next
patch link: https://lore.kernel.org/r/20260304080647.169434-1-haifeng.xu%40shopee.com
patch subject: [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init
config: x86_64-kexec (https://download.01.org/0day-ci/archive/20260304/202603041550.t2wIMeDy-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260304/202603041550.t2wIMeDy-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603041550.t2wIMeDy-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/acpi/numa/srat.c:323:12: warning: no previous prototype for function 'cfmws_disabled' [-Wmissing-prototypes]
323 | int __init cfmws_disabled(void)
| ^
drivers/acpi/numa/srat.c:323:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
323 | int __init cfmws_disabled(void)
| ^
| static
1 warning generated.
vim +/cfmws_disabled +323 drivers/acpi/numa/srat.c
322
> 323 int __init cfmws_disabled(void)
324 {
325 return cfmws_numa < 0;
326 }
327
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init
2026-03-04 8:06 [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init Haifeng Xu
2026-03-04 14:10 ` kernel test robot
@ 2026-03-04 15:11 ` kernel test robot
2026-03-04 17:16 ` Gregory Price
` (3 subsequent siblings)
5 siblings, 0 replies; 12+ messages in thread
From: kernel test robot @ 2026-03-04 15:11 UTC (permalink / raw)
To: Haifeng Xu, rafael, lenb, dan.j.williams, jonathan.cameron
Cc: oe-kbuild-all, dave, dave.jiang, alison.schofield, vishal.l.verma,
ira.weiny, linux-cxl, linux-acpi, linux-kernel, Haifeng Xu
Hi Haifeng,
kernel test robot noticed the following build warnings:
[auto build test WARNING on rafael-pm/linux-next]
[also build test WARNING on rafael-pm/bleeding-edge cxl/next tip/x86/mm linus/master v7.0-rc2 next-20260303]
[cannot apply to cxl/pending]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Haifeng-Xu/ACPI-add-a-boot-parameter-to-disable-parsing-CFMWS-during-NUMA-init/20260304-160933
base: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next
patch link: https://lore.kernel.org/r/20260304080647.169434-1-haifeng.xu%40shopee.com
patch subject: [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init
config: x86_64-rhel-9.4 (https://download.01.org/0day-ci/archive/20260304/202603041621.Ykqrqowb-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260304/202603041621.Ykqrqowb-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603041621.Ykqrqowb-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/acpi/numa/srat.c:323:12: warning: no previous prototype for 'cfmws_disabled' [-Wmissing-prototypes]
323 | int __init cfmws_disabled(void)
| ^~~~~~~~~~~~~~
vim +/cfmws_disabled +323 drivers/acpi/numa/srat.c
322
> 323 int __init cfmws_disabled(void)
324 {
325 return cfmws_numa < 0;
326 }
327
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init
2026-03-04 8:06 [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init Haifeng Xu
2026-03-04 14:10 ` kernel test robot
2026-03-04 15:11 ` kernel test robot
@ 2026-03-04 17:16 ` Gregory Price
2026-03-05 4:18 ` Haifeng Xu
2026-03-05 19:57 ` kernel test robot
` (2 subsequent siblings)
5 siblings, 1 reply; 12+ messages in thread
From: Gregory Price @ 2026-03-04 17:16 UTC (permalink / raw)
To: Haifeng Xu
Cc: rafael, lenb, dan.j.williams, jonathan.cameron, dave, dave.jiang,
alison.schofield, vishal.l.verma, ira.weiny, linux-cxl,
linux-acpi, linux-kernel
On Wed, Mar 04, 2026 at 04:06:47PM +0800, Haifeng Xu wrote:
> For the machine Intel(R) Xeon(R) 6746E that supports CXL memory,
> the possible nodes are 20 (0-19). However, only two numa nodes (0-1)
> have memory and the rest nodes (2-19) detected by CEDT are memoryless.
>
> The problems is that when creating many pods, the shrinker map size
> needs to be expanded for all memory cgroups in expand_shrinker_info().
> If the number of possible nodes is too large, the holding time of
> shrinker lock grows significantly.
>
> In this case, there is no CXL memory inserted in the machine, those
> memoryless nodes are useless for us, so there is no need to set them
> in 'numa_nodes_parsed'. After disabling parsing CFMWS, the pod creation
> time is reduced from over 10 minutes to approximately 150 seconds in
> our internal test.
>
This seems like the wrong scope to fix the underlying problem - which is
the shrinker lock holding scope.
If you're not actually using CXL, can't you just disable CXL in the
BIOS? Then you shouldn't even emit CFMWS at all.
~Gregory
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init
2026-03-04 17:16 ` Gregory Price
@ 2026-03-05 4:18 ` Haifeng Xu
2026-03-05 6:30 ` Gregory Price
0 siblings, 1 reply; 12+ messages in thread
From: Haifeng Xu @ 2026-03-05 4:18 UTC (permalink / raw)
To: Gregory Price
Cc: rafael, lenb, dan.j.williams, jonathan.cameron, dave, dave.jiang,
alison.schofield, vishal.l.verma, ira.weiny, linux-cxl,
linux-acpi, linux-kernel
On 2026/3/5 01:16, Gregory Price wrote:
> On Wed, Mar 04, 2026 at 04:06:47PM +0800, Haifeng Xu wrote:
>> For the machine Intel(R) Xeon(R) 6746E that supports CXL memory,
>> the possible nodes are 20 (0-19). However, only two numa nodes (0-1)
>> have memory and the rest nodes (2-19) detected by CEDT are memoryless.
>>
>> The problems is that when creating many pods, the shrinker map size
>> needs to be expanded for all memory cgroups in expand_shrinker_info().
>> If the number of possible nodes is too large, the holding time of
>> shrinker lock grows significantly.
>>
>> In this case, there is no CXL memory inserted in the machine, those
>> memoryless nodes are useless for us, so there is no need to set them
>> in 'numa_nodes_parsed'. After disabling parsing CFMWS, the pod creation
>> time is reduced from over 10 minutes to approximately 150 seconds in
>> our internal test.
>>
>
> This seems like the wrong scope to fix the underlying problem - which is
> the shrinker lock holding scope.
Hi Gregory,
Thanks for your comments.
Every memcg records shrinker info for each possible node. If we use online node
instead of possible node,then during memory hotplug, we must tarverse all memcgs
and shrinkers to check whether corresponding node has allocated the shrinker_info.
This way introduces more complexity.
>
> If you're not actually using CXL, can't you just disable CXL in the
> BIOS? Then you shouldn't even emit CFMWS at all.
I have asked our Intel Support Engineer, he saied that cxl can't be disabled
in BIOS.
If know how much nodes we actually use, can we specify the max number of pxm?
Now the pxm can't exceed MAX_PXM_DOMAINS which is equal to MAX_NUMNODES.
Thanks!
>
> ~Gregory
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init
2026-03-05 4:18 ` Haifeng Xu
@ 2026-03-05 6:30 ` Gregory Price
2026-03-05 7:43 ` Haifeng Xu
0 siblings, 1 reply; 12+ messages in thread
From: Gregory Price @ 2026-03-05 6:30 UTC (permalink / raw)
To: Haifeng Xu
Cc: rafael, lenb, dan.j.williams, jonathan.cameron, dave, dave.jiang,
alison.schofield, vishal.l.verma, ira.weiny, linux-cxl,
linux-acpi, linux-kernel
On Thu, Mar 05, 2026 at 12:18:05PM +0800, Haifeng Xu wrote:
> On 2026/3/5 01:16, Gregory Price wrote:
> > On Wed, Mar 04, 2026 at 04:06:47PM +0800, Haifeng Xu wrote:
>
> Every memcg records shrinker info for each possible node. If we use online node
> instead of possible node,then during memory hotplug, we must tarverse all memcgs
> and shrinkers to check whether corresponding node has allocated the shrinker_info.
> This way introduces more complexity.
>
Right, but some systems might actually WANT this many nodes, and this
does not scale well at all as-is. I also don't think it's as complex as
you think, most of the infrastructure is already there.
> > If you're not actually using CXL, can't you just disable CXL in the
> > BIOS? Then you shouldn't even emit CFMWS at all.
>
> I have asked our Intel Support Engineer, he saied that cxl can't be disabled
> in BIOS.
>
Huh, this is surprising.
If this is the case then see Dan's patch here:
https://lore.kernel.org/linux-cxl/1f5074979a58803ec875dd10c9234c7b1a17192d.camel@intel.com/T/#m0d64b723a63ca7faf44311c52c1ebd5f280ae626
That should deal with your issue more cleanly.
Otherwise, the problem you're describing here really should really be
fixed with either better lock scoping or lazy-allocation.
(Already poking at the issue a bit)
~Gregory
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init
2026-03-05 6:30 ` Gregory Price
@ 2026-03-05 7:43 ` Haifeng Xu
0 siblings, 0 replies; 12+ messages in thread
From: Haifeng Xu @ 2026-03-05 7:43 UTC (permalink / raw)
To: Gregory Price
Cc: rafael, lenb, dan.j.williams, jonathan.cameron, dave, dave.jiang,
alison.schofield, vishal.l.verma, ira.weiny, linux-cxl,
linux-acpi, linux-kernel
On 2026/3/5 14:30, Gregory Price wrote:
> On Thu, Mar 05, 2026 at 12:18:05PM +0800, Haifeng Xu wrote:
>> On 2026/3/5 01:16, Gregory Price wrote:
>>> On Wed, Mar 04, 2026 at 04:06:47PM +0800, Haifeng Xu wrote:
>>
>> Every memcg records shrinker info for each possible node. If we use online node
>> instead of possible node,then during memory hotplug, we must tarverse all memcgs
>> and shrinkers to check whether corresponding node has allocated the shrinker_info.
>> This way introduces more complexity.
>>
>
> Right, but some systems might actually WANT this many nodes, and this
> does not scale well at all as-is. I also don't think it's as complex as
> you think, most of the infrastructure is already there.
>
>>> If you're not actually using CXL, can't you just disable CXL in the
>>> BIOS? Then you shouldn't even emit CFMWS at all.
>>
>> I have asked our Intel Support Engineer, he saied that cxl can't be disabled
>> in BIOS.
>>
>
> Huh, this is surprising.
>
> If this is the case then see Dan's patch here:
> https://lore.kernel.org/linux-cxl/1f5074979a58803ec875dd10c9234c7b1a17192d.camel@intel.com/T/#m0d64b723a63ca7faf44311c52c1ebd5f280ae626
>
> That should deal with your issue more cleanly.
>
> Otherwise, the problem you're describing here really should really be
> fixed with either better lock scoping or lazy-allocation.
>
> (Already poking at the issue a bit)
Yes,the patch you paste above worke well for us.
Thanks!
>
> ~Gregory
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init
2026-03-04 8:06 [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init Haifeng Xu
` (2 preceding siblings ...)
2026-03-04 17:16 ` Gregory Price
@ 2026-03-05 19:57 ` kernel test robot
2026-03-05 20:19 ` kernel test robot
2026-03-05 23:00 ` kernel test robot
5 siblings, 0 replies; 12+ messages in thread
From: kernel test robot @ 2026-03-05 19:57 UTC (permalink / raw)
To: Haifeng Xu, rafael, lenb, dan.j.williams, jonathan.cameron
Cc: oe-kbuild-all, dave, dave.jiang, alison.schofield, vishal.l.verma,
ira.weiny, linux-cxl, linux-acpi, linux-kernel, Haifeng Xu
Hi Haifeng,
kernel test robot noticed the following build warnings:
[auto build test WARNING on rafael-pm/linux-next]
[also build test WARNING on rafael-pm/bleeding-edge cxl/next tip/x86/mm linus/master v7.0-rc2 next-20260305]
[cannot apply to cxl/pending]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Haifeng-Xu/ACPI-add-a-boot-parameter-to-disable-parsing-CFMWS-during-NUMA-init/20260304-160933
base: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next
patch link: https://lore.kernel.org/r/20260304080647.169434-1-haifeng.xu%40shopee.com
patch subject: [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init
config: x86_64-defconfig (https://download.01.org/0day-ci/archive/20260306/202603060345.jgq2PSAZ-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260306/202603060345.jgq2PSAZ-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603060345.jgq2PSAZ-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/acpi/numa/srat.c:323:12: warning: no previous prototype for 'cfmws_disabled' [-Wmissing-prototypes]
323 | int __init cfmws_disabled(void)
| ^~~~~~~~~~~~~~
vim +/cfmws_disabled +323 drivers/acpi/numa/srat.c
322
> 323 int __init cfmws_disabled(void)
324 {
325 return cfmws_numa < 0;
326 }
327
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init
2026-03-04 8:06 [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init Haifeng Xu
` (3 preceding siblings ...)
2026-03-05 19:57 ` kernel test robot
@ 2026-03-05 20:19 ` kernel test robot
2026-03-05 23:00 ` kernel test robot
5 siblings, 0 replies; 12+ messages in thread
From: kernel test robot @ 2026-03-05 20:19 UTC (permalink / raw)
To: Haifeng Xu, rafael, lenb, dan.j.williams, jonathan.cameron
Cc: llvm, oe-kbuild-all, dave, dave.jiang, alison.schofield,
vishal.l.verma, ira.weiny, linux-cxl, linux-acpi, linux-kernel,
Haifeng Xu
Hi Haifeng,
kernel test robot noticed the following build warnings:
[auto build test WARNING on rafael-pm/linux-next]
[also build test WARNING on rafael-pm/bleeding-edge cxl/next tip/x86/mm linus/master v7.0-rc2 next-20260305]
[cannot apply to cxl/pending]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Haifeng-Xu/ACPI-add-a-boot-parameter-to-disable-parsing-CFMWS-during-NUMA-init/20260304-160933
base: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next
patch link: https://lore.kernel.org/r/20260304080647.169434-1-haifeng.xu%40shopee.com
patch subject: [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init
config: x86_64-kexec (https://download.01.org/0day-ci/archive/20260306/202603060405.6xBosunB-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260306/202603060405.6xBosunB-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603060405.6xBosunB-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/acpi/numa/srat.c:323:12: warning: no previous prototype for function 'cfmws_disabled' [-Wmissing-prototypes]
323 | int __init cfmws_disabled(void)
| ^
drivers/acpi/numa/srat.c:323:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
323 | int __init cfmws_disabled(void)
| ^
| static
1 warning generated.
vim +/cfmws_disabled +323 drivers/acpi/numa/srat.c
322
> 323 int __init cfmws_disabled(void)
324 {
325 return cfmws_numa < 0;
326 }
327
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init
2026-03-04 8:06 [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init Haifeng Xu
` (4 preceding siblings ...)
2026-03-05 20:19 ` kernel test robot
@ 2026-03-05 23:00 ` kernel test robot
5 siblings, 0 replies; 12+ messages in thread
From: kernel test robot @ 2026-03-05 23:00 UTC (permalink / raw)
To: Haifeng Xu, rafael, lenb, dan.j.williams, jonathan.cameron
Cc: oe-kbuild-all, dave, dave.jiang, alison.schofield, vishal.l.verma,
ira.weiny, linux-cxl, linux-acpi, linux-kernel, Haifeng Xu
Hi Haifeng,
kernel test robot noticed the following build warnings:
[auto build test WARNING on rafael-pm/linux-next]
[also build test WARNING on rafael-pm/bleeding-edge cxl/next tip/x86/mm linus/master v7.0-rc2 next-20260305]
[cannot apply to cxl/pending]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Haifeng-Xu/ACPI-add-a-boot-parameter-to-disable-parsing-CFMWS-during-NUMA-init/20260304-160933
base: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next
patch link: https://lore.kernel.org/r/20260304080647.169434-1-haifeng.xu%40shopee.com
patch subject: [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init
config: loongarch-randconfig-r134-20260306 (https://download.01.org/0day-ci/archive/20260306/202603060605.Fa8yGC4u-lkp@intel.com/config)
compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260306/202603060605.Fa8yGC4u-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603060605.Fa8yGC4u-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> drivers/acpi/numa/srat.c:323:12: sparse: sparse: symbol 'cfmws_disabled' was not declared. Should it be static?
vim +/cfmws_disabled +323 drivers/acpi/numa/srat.c
322
> 323 int __init cfmws_disabled(void)
324 {
325 return cfmws_numa < 0;
326 }
327
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2026-03-05 23:01 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-04 8:06 [PATCH] ACPI: add a boot parameter to disable parsing CFMWS during NUMA init Haifeng Xu
2026-03-04 14:10 ` kernel test robot
2026-03-04 15:11 ` kernel test robot
2026-03-04 17:16 ` Gregory Price
2026-03-05 4:18 ` Haifeng Xu
2026-03-05 6:30 ` Gregory Price
2026-03-05 7:43 ` Haifeng Xu
2026-03-05 19:57 ` kernel test robot
2026-03-05 20:19 ` kernel test robot
2026-03-05 23:00 ` kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2026-03-04 6:46 Haifeng Xu
2026-03-04 7:55 ` Haifeng Xu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox