Re: [Patch] mm: make CONFIG_NUMA depend on CONFIG_SYSFS

Cong Wang
2011-07-19T06:20:37Z

[-- Attachment #1: Type: text/plain, Size: 1224 bytes --]

于 2011年07月18日 21:52, Mel Gorman 写道:
> On Mon, Jul 18, 2011 at 07:18:29PM +0800, Amerigo Wang wrote:
>> On ppc, we got this build error with randconfig:
>>
>> drivers/built-in.o:(.toc1+0xf90): undefined reference to `vmstat_text': 1 errors in 1 logs
>>
>> This is due to that it enabled CONFIG_NUMA but not CONFIG_SYSFS.
>>
>> And the user-space tool numactl depends on sysfs files too.
>> So, I think it is very reasonable to make CONFIG_NUMA depend on CONFIG_SYSFS.
>>
>
> That looks a bit awful. There is no obvious connection between SYSFS
> and NUMA. One is exporting information to userspace and the other is
> the memory model. Without sysfs, NUMA support might be less useful
> but the memory policies should still work and set_mempolicy() should
> still be an option.
>
> You didn't post where the buggy reference to vmstat_text but I'm
> assuming it is in drivers/base/node.c . It would be preferable that
> it be fixed to not reference vmstat_text unless either CONFIG_PROC_FS
> or CONFIG_SYSFS is defined similar to what is in mm/vmstat.c .
>

Hmm, since we don't have to enable SYSFS for NUMA, how about
make a new Kconfig for drivers/base/node.c? I.e., CONFIG_NUMA_SYSFS,
like patch below.

Thanks.

[-- Attachment #2: numa-depends-on-sysfs.diff --]
[-- Type: text/plain, Size: 1337 bytes --]

Introduce a new Kconfig CONFIG_NUMA_SYSFS for drivers/base/node.c
which just provides sysfs interface, so that when we select
CONFIG_NUMA, we don't have to enable the sysfs interface too.

This by the way fixes a randconfig build error when NUMA && !SYSFS.

Signed-off-by: WANG Cong <amwang@redhat.com>

---
diff --git a/drivers/base/Makefile b/drivers/base/Makefile
index 4c5701c..f34abe6 100644
--- a/drivers/base/Makefile
+++ b/drivers/base/Makefile
@@ -10,7 +10,7 @@ obj-$(CONFIG_HAS_DMA) += dma-mapping.o
obj-$(CONFIG_HAVE_GENERIC_DMA_COHERENT) += dma-coherent.o
obj-$(CONFIG_ISA) += isa.o
obj-$(CONFIG_FW_LOADER) += firmware_class.o
-obj-$(CONFIG_NUMA) += node.o
+obj-$(CONFIG_NUMA_SYSFS) += node.o
obj-$(CONFIG_MEMORY_HOTPLUG_SPARSE) += memory.o
obj-$(CONFIG_SMP) += topology.o
obj-$(CONFIG_IOMMU_API) += iommu.o
diff --git a/mm/Kconfig b/mm/Kconfig
index 8ca47a5..f89ab19 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -340,6 +340,16 @@ choice
benefit.
endchoice

+config NUMA_SYSFS
+ bool "Enable NUMA sysfs interface for user-space"
+ depends on NUMA
+ depends on SYSFS
+ default y
+ help
+ This enables NUMA sysfs interface, /sys/devices/system/node/,
+ for user-space tools, like numactl. If you have enabled NUMA,
+ probably you also need this one.
+
#
# UP and nommu archs use km based percpu allocator
#