2006-11-17 04:25:25

by Randy Dunlap

[permalink] [raw]
Subject: memory hotplug function redefinition/confusion


2.6.19-rc5-mm2:

include/linux/memory_hotplug.h uses CONFIG_NUMA to decide:

#ifdef CONFIG_NUMA
extern int memory_add_physaddr_to_nid(u64 start);
#else
static inline int memory_add_physaddr_to_nid(u64 start)
{
return 0;
}
#endif

but mm/init.c uses CONFIG_ACPI_NUMA to decide:

#ifndef CONFIG_ACPI_NUMA
int memory_add_physaddr_to_nid(u64 start)
{
return 0;
}
EXPORT_SYMBOL_GPL(memory_add_physaddr_to_nid);
#endif

#ifndef CONFIG_ACPI_NUMA
int memory_add_physaddr_to_nid(u64 start)
{
return 0;
}
#endif

(sic: duplicate function above)

The CONFIG_NUMA vs. CONFIG_ACPI_NUMA seems to cause this build error:

CC arch/x86_64/mm/init.o
arch/x86_64/mm/init.c:501: error: redefinition of 'memory_add_physaddr_to_nid'
include/linux/memory_hotplug.h:71: error: previous definition of 'memory_add_phys
addr_to_nid' was here
arch/x86_64/mm/init.c:509: error: redefinition of 'memory_add_physaddr_to_nid'
arch/x86_64/mm/init.c:501: error: previous definition of 'memory_add_physaddr_to_
nid' was here
make[1]: *** [arch/x86_64/mm/init.o] Error 1
make: *** [arch/x86_64/mm] Error 2

---
~Randy


2006-11-17 04:29:01

by Randy Dunlap

[permalink] [raw]
Subject: Re: memory hotplug function redefinition/confusion

On Thu, 16 Nov 2006 20:25:20 -0800 Randy Dunlap wrote:

>
> 2.6.19-rc5-mm2:
>
> include/linux/memory_hotplug.h uses CONFIG_NUMA to decide:
>
> #ifdef CONFIG_NUMA
> extern int memory_add_physaddr_to_nid(u64 start);
> #else
> static inline int memory_add_physaddr_to_nid(u64 start)
> {
> return 0;
> }
> #endif
>
> but mm/init.c uses CONFIG_ACPI_NUMA to decide:
>
> #ifndef CONFIG_ACPI_NUMA
> int memory_add_physaddr_to_nid(u64 start)
> {
> return 0;
> }
> EXPORT_SYMBOL_GPL(memory_add_physaddr_to_nid);
> #endif
>
> #ifndef CONFIG_ACPI_NUMA
> int memory_add_physaddr_to_nid(u64 start)
> {
> return 0;
> }
> #endif
>
> (sic: duplicate function above)
>
> The CONFIG_NUMA vs. CONFIG_ACPI_NUMA seems to cause this build error:
>
> CC arch/x86_64/mm/init.o
> arch/x86_64/mm/init.c:501: error: redefinition of 'memory_add_physaddr_to_nid'
> include/linux/memory_hotplug.h:71: error: previous definition of 'memory_add_phys
> addr_to_nid' was here
> arch/x86_64/mm/init.c:509: error: redefinition of 'memory_add_physaddr_to_nid'
> arch/x86_64/mm/init.c:501: error: previous definition of 'memory_add_physaddr_to_
> nid' was here
> make[1]: *** [arch/x86_64/mm/init.o] Error 1
> make: *** [arch/x86_64/mm] Error 2


Actually no flavor of NUMA is set:
http://oss.oracle.com/~rdunlap/configs/config-numa-err

---
~Randy

2006-11-17 14:29:49

by Yasunori Goto

[permalink] [raw]
Subject: Re: memory hotplug function redefinition/confusion

Hello.

> include/linux/memory_hotplug.h uses CONFIG_NUMA to decide:
(snip)
> but mm/init.c uses CONFIG_ACPI_NUMA to decide:
(snip)
> (sic: duplicate function above)

Indeed. It is strange. This is a patch for it.

Thanks for your report!

Bye.

--------

This is to fix compile error of x86-64 memory hotplug without
any NUMA option.

CC arch/x86_64/mm/init.o
arch/x86_64/mm/init.c:501: error: redefinition of 'memory_add_physaddr_to_nid'
include/linux/memory_hotplug.h:71: error: previous definition of 'memory_add_phys
addr_to_nid' was here
arch/x86_64/mm/init.c:509: error: redefinition of 'memory_add_physaddr_to_nid'
arch/x86_64/mm/init.c:501: error: previous definition of 'memory_add_physaddr_to_
nid' was here
make[1]: *** [arch/x86_64/mm/init.o] Error 1

I confirmed compile completion with !NUMA, (NUMA & !ACPI_NUMA),
or (NUMA & ACPI_NUMA).

This patch is for 2.6.19-rc5-mm2.

Signed-off-by: Yasunori Goto <[email protected]>

----

arch/x86_64/mm/init.c | 9 +--------
1 files changed, 1 insertion(+), 8 deletions(-)

Index: 19-rc5-mm2/arch/x86_64/mm/init.c
===================================================================
--- 19-rc5-mm2.orig/arch/x86_64/mm/init.c 2006-11-17 22:31:30.000000000 +0900
+++ 19-rc5-mm2/arch/x86_64/mm/init.c 2006-11-17 22:31:40.000000000 +0900
@@ -496,7 +496,7 @@ int remove_memory(u64 start, u64 size)
}
EXPORT_SYMBOL_GPL(remove_memory);

-#ifndef CONFIG_ACPI_NUMA
+#if !defined(CONFIG_ACPI_NUMA) && defined(CONFIG_NUMA)
int memory_add_physaddr_to_nid(u64 start)
{
return 0;
@@ -504,13 +504,6 @@ int memory_add_physaddr_to_nid(u64 start
EXPORT_SYMBOL_GPL(memory_add_physaddr_to_nid);
#endif

-#ifndef CONFIG_ACPI_NUMA
-int memory_add_physaddr_to_nid(u64 start)
-{
- return 0;
-}
-#endif
-
#endif /* CONFIG_MEMORY_HOTPLUG */

#ifdef CONFIG_MEMORY_HOTPLUG_RESERVE

--
Yasunori Goto