2022-03-23 23:35:26

by kernel test robot

[permalink] [raw]
Subject: undefined reference to `node_data'

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 6b1f86f8e9c7f9de7ca1cb987b2cf25e99b1ae3a
commit: 09f49dca570a917a8c6bccd7e8c61f5141534e3a mm: handle uninitialized numa nodes gracefully
date: 14 hours ago
config: mips-buildonly-randconfig-r004-20220323 (https://download.01.org/0day-ci/archive/20220323/[email protected]/config)
compiler: mips64-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=09f49dca570a917a8c6bccd7e8c61f5141534e3a
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 09f49dca570a917a8c6bccd7e8c61f5141534e3a
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=mips SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>

All errors (new ones prefixed by >>):

mips64-linux-ld: mm/page_alloc.o: in function `free_area_init':
>> (.init.text+0x1680): undefined reference to `node_data'
mips64-linux-ld: (.init.text+0x1690): undefined reference to `node_data'

--
0-DAY CI Kernel Test Service
https://01.org/lkp


2022-03-24 16:46:29

by Michal Hocko

[permalink] [raw]
Subject: Re: undefined reference to `node_data'

On Wed 23-03-22 20:58:10, kernel test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: 6b1f86f8e9c7f9de7ca1cb987b2cf25e99b1ae3a
> commit: 09f49dca570a917a8c6bccd7e8c61f5141534e3a mm: handle uninitialized numa nodes gracefully
> date: 14 hours ago
> config: mips-buildonly-randconfig-r004-20220323 (https://download.01.org/0day-ci/archive/20220323/[email protected]/config)
> compiler: mips64-linux-gcc (GCC) 11.2.0
> reproduce (this is a W=1 build):
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=09f49dca570a917a8c6bccd7e8c61f5141534e3a
> git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> git fetch --no-tags linus master
> git checkout 09f49dca570a917a8c6bccd7e8c61f5141534e3a
> # save the config file to linux build tree
> mkdir build_dir
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=mips SHELL=/bin/bash

Didn't work for me
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <[email protected]>
>
> All errors (new ones prefixed by >>):
>
> mips64-linux-ld: mm/page_alloc.o: in function `free_area_init':
> >> (.init.text+0x1680): undefined reference to `node_data'
> mips64-linux-ld: (.init.text+0x1690): undefined reference to `node_data'

OK, I can see what is going here. The page allocator normally
uses NODE_DATA but arch_refresh_nodedata refers to node_data directly.
This is a problem with
arch/mips/include/asm/mach-loongson64/mmzone.h:
extern struct pglist_data *__node_data[];

#define NODE_DATA(n) (__node_data[n])

Unfortunately we cannot use NODE_DATA there because of header inclusion
ordering. I will think about a solution.

Thanks for the report
--
Michal Hocko
SUSE Labs

2022-03-25 02:22:48

by Michal Hocko

[permalink] [raw]
Subject: Re: undefined reference to `node_data'

Let me CC MIPS maintainers

On Wed 23-03-22 15:53:31, Michal Hocko wrote:
> On Wed 23-03-22 20:58:10, kernel test robot wrote:
> > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> > head: 6b1f86f8e9c7f9de7ca1cb987b2cf25e99b1ae3a
> > commit: 09f49dca570a917a8c6bccd7e8c61f5141534e3a mm: handle uninitialized numa nodes gracefully
> > date: 14 hours ago
> > config: mips-buildonly-randconfig-r004-20220323 (https://download.01.org/0day-ci/archive/20220323/[email protected]/config)
> > compiler: mips64-linux-gcc (GCC) 11.2.0
> > reproduce (this is a W=1 build):
> > wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> > chmod +x ~/bin/make.cross
> > # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=09f49dca570a917a8c6bccd7e8c61f5141534e3a
> > git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> > git fetch --no-tags linus master
> > git checkout 09f49dca570a917a8c6bccd7e8c61f5141534e3a
> > # save the config file to linux build tree
> > mkdir build_dir
> > COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=mips SHELL=/bin/bash
>
> Didn't work for me
> >
> > If you fix the issue, kindly add following tag as appropriate
> > Reported-by: kernel test robot <[email protected]>
> >
> > All errors (new ones prefixed by >>):
> >
> > mips64-linux-ld: mm/page_alloc.o: in function `free_area_init':
> > >> (.init.text+0x1680): undefined reference to `node_data'
> > mips64-linux-ld: (.init.text+0x1690): undefined reference to `node_data'
>
> OK, I can see what is going here. The page allocator normally
> uses NODE_DATA but arch_refresh_nodedata refers to node_data directly.
> This is a problem with
> arch/mips/include/asm/mach-loongson64/mmzone.h:
> extern struct pglist_data *__node_data[];
>
> #define NODE_DATA(n) (__node_data[n])
>
> Unfortunately we cannot use NODE_DATA there because of header inclusion
> ordering. I will think about a solution.

Is there any reason why (some?) MIPS arches use __node_data rather than
node_data as most other architectures? Would it be acceptable to do the
renaming? It would help to cover the above compilation problem because
arch_refresh_nodedata could keep using node_data directly.

Thanks!
--
Michal Hocko
SUSE Labs

2022-03-25 16:26:02

by Michal Hocko

[permalink] [raw]
Subject: Re: undefined reference to `node_data'

On Thu 24-03-22 10:04:43, Thomas Bogendoerfer wrote:
> On Wed, Mar 23, 2022 at 05:46:59PM +0100, Michal Hocko wrote:
> > > > If you fix the issue, kindly add following tag as appropriate
> > > > Reported-by: kernel test robot <[email protected]>
> > > >
> > > > All errors (new ones prefixed by >>):
> > > >
> > > > mips64-linux-ld: mm/page_alloc.o: in function `free_area_init':
> > > > >> (.init.text+0x1680): undefined reference to `node_data'
> > > > mips64-linux-ld: (.init.text+0x1690): undefined reference to `node_data'
> > >
> > > OK, I can see what is going here. The page allocator normally
> > > uses NODE_DATA but arch_refresh_nodedata refers to node_data directly.
> > > This is a problem with
> > > arch/mips/include/asm/mach-loongson64/mmzone.h:
> > > extern struct pglist_data *__node_data[];
> > >
> > > #define NODE_DATA(n) (__node_data[n])
> > >
> > > Unfortunately we cannot use NODE_DATA there because of header inclusion
> > > ordering. I will think about a solution.
> >
> > Is there any reason why (some?) MIPS arches use __node_data rather than
> > node_data as most other architectures? Would it be acceptable to do the
> > renaming? It would help to cover the above compilation problem because
> > arch_refresh_nodedata could keep using node_data directly.
>
> I've just checked history and I don't see a reason for __node_data.
> So I'm fine with changing it to node_data.

Thanks a lot for double checking Thomas! This is a dump&simple sed over
mips file. 0-day guys, could you give it a try please?
---
diff --git a/arch/mips/include/asm/mach-ip27/mmzone.h b/arch/mips/include/asm/mach-ip27/mmzone.h
index 08c36e50a860..a798ad379da1 100644
--- a/arch/mips/include/asm/mach-ip27/mmzone.h
+++ b/arch/mips/include/asm/mach-ip27/mmzone.h
@@ -20,9 +20,9 @@ struct node_data {
struct hub_data hub;
};

-extern struct node_data *__node_data[];
+extern struct node_data *node_data[];

-#define NODE_DATA(n) (&__node_data[(n)]->pglist)
-#define hub_data(n) (&__node_data[(n)]->hub)
+#define NODE_DATA(n) (&node_data[(n)]->pglist)
+#define hub_data(n) (&node_data[(n)]->hub)

#endif /* _ASM_MACH_MMZONE_H */
diff --git a/arch/mips/include/asm/mach-loongson64/mmzone.h b/arch/mips/include/asm/mach-loongson64/mmzone.h
index ebb1deaa77b9..14e2b860ad65 100644
--- a/arch/mips/include/asm/mach-loongson64/mmzone.h
+++ b/arch/mips/include/asm/mach-loongson64/mmzone.h
@@ -14,9 +14,9 @@
#define pa_to_nid(addr) (((addr) & 0xf00000000000) >> NODE_ADDRSPACE_SHIFT)
#define nid_to_addrbase(nid) ((unsigned long)(nid) << NODE_ADDRSPACE_SHIFT)

-extern struct pglist_data *__node_data[];
+extern struct pglist_data *node_data[];

-#define NODE_DATA(n) (__node_data[n])
+#define NODE_DATA(n) (node_data[n])

extern void setup_zero_pages(void);
extern void __init prom_init_numa_memory(void);
diff --git a/arch/mips/loongson64/numa.c b/arch/mips/loongson64/numa.c
index e8e3e48c5333..abbbc70ce980 100644
--- a/arch/mips/loongson64/numa.c
+++ b/arch/mips/loongson64/numa.c
@@ -29,8 +29,8 @@

unsigned char __node_distances[MAX_NUMNODES][MAX_NUMNODES];
EXPORT_SYMBOL(__node_distances);
-struct pglist_data *__node_data[MAX_NUMNODES];
-EXPORT_SYMBOL(__node_data);
+struct pglist_data *node_data[MAX_NUMNODES];
+EXPORT_SYMBOL(node_data);

cpumask_t __node_cpumask[MAX_NUMNODES];
EXPORT_SYMBOL(__node_cpumask);
@@ -107,7 +107,7 @@ static void __init node_mem_init(unsigned int node)
tnid = early_pfn_to_nid(nd_pa >> PAGE_SHIFT);
if (tnid != node)
pr_info("NODE_DATA(%d) on node %d\n", node, tnid);
- __node_data[node] = nd;
+ node_data[node] = nd;
NODE_DATA(node)->node_start_pfn = start_pfn;
NODE_DATA(node)->node_spanned_pages = end_pfn - start_pfn;

diff --git a/arch/mips/sgi-ip27/ip27-memory.c b/arch/mips/sgi-ip27/ip27-memory.c
index adc2faeecf7c..1c3a0b92d134 100644
--- a/arch/mips/sgi-ip27/ip27-memory.c
+++ b/arch/mips/sgi-ip27/ip27-memory.c
@@ -33,9 +33,9 @@
#define SLOT_PFNSHIFT (SLOT_SHIFT - PAGE_SHIFT)
#define PFN_NASIDSHFT (NASID_SHFT - PAGE_SHIFT)

-struct node_data *__node_data[MAX_NUMNODES];
+struct node_data *node_data[MAX_NUMNODES];

-EXPORT_SYMBOL(__node_data);
+EXPORT_SYMBOL(node_data);

static u64 gen_region_mask(void)
{
@@ -358,8 +358,8 @@ static void __init node_mem_init(nasid_t node)
/*
* Allocate the node data structures on the node first.
*/
- __node_data[node] = __va(slot_freepfn << PAGE_SHIFT);
- memset(__node_data[node], 0, PAGE_SIZE);
+ node_data[node] = __va(slot_freepfn << PAGE_SHIFT);
+ memset(node_data[node], 0, PAGE_SIZE);

NODE_DATA(node)->node_start_pfn = start_pfn;
NODE_DATA(node)->node_spanned_pages = end_pfn - start_pfn;
@@ -401,7 +401,7 @@ void __init prom_meminit(void)
node_mem_init(node);
continue;
}
- __node_data[node] = &null_node;
+ node_data[node] = &null_node;
}
}
--
Michal Hocko
SUSE Labs

2022-03-25 17:55:07

by Chen, Rong A

[permalink] [raw]
Subject: Re: [kbuild-all] Re: undefined reference to `node_data'



On 3/24/2022 8:40 PM, Michal Hocko wrote:
> On Thu 24-03-22 10:04:43, Thomas Bogendoerfer wrote:
>> On Wed, Mar 23, 2022 at 05:46:59PM +0100, Michal Hocko wrote:
>>>>> If you fix the issue, kindly add following tag as appropriate
>>>>> Reported-by: kernel test robot <[email protected]>
>>>>>
>>>>> All errors (new ones prefixed by >>):
>>>>>
>>>>> mips64-linux-ld: mm/page_alloc.o: in function `free_area_init':
>>>>>>> (.init.text+0x1680): undefined reference to `node_data'
>>>>> mips64-linux-ld: (.init.text+0x1690): undefined reference to `node_data'
>>>>
>>>> OK, I can see what is going here. The page allocator normally
>>>> uses NODE_DATA but arch_refresh_nodedata refers to node_data directly.
>>>> This is a problem with
>>>> arch/mips/include/asm/mach-loongson64/mmzone.h:
>>>> extern struct pglist_data *__node_data[];
>>>>
>>>> #define NODE_DATA(n) (__node_data[n])
>>>>
>>>> Unfortunately we cannot use NODE_DATA there because of header inclusion
>>>> ordering. I will think about a solution.
>>>
>>> Is there any reason why (some?) MIPS arches use __node_data rather than
>>> node_data as most other architectures? Would it be acceptable to do the
>>> renaming? It would help to cover the above compilation problem because
>>> arch_refresh_nodedata could keep using node_data directly.
>>
>> I've just checked history and I don't see a reason for __node_data.
>> So I'm fine with changing it to node_data.
>
> Thanks a lot for double checking Thomas! This is a dump&simple sed over
> mips file. 0-day guys, could you give it a try please?


Hi Michal,

It returns another error:

$ mkdir -p build_dir && wget
https://download.01.org/0day-ci/archive/20220323/[email protected]/config
-O build_dir/.config
$ COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross
O=build_dir ARCH=mips SHELL=/bin/bash
Compiler will be installed in /home/nfs/0day
make --keep-going CONFIG_OF_ALL_DTBS=y CONFIG_DTC=y
CROSS_COMPILE=/home/nfs/0day/gcc-11.2.0-nolibc/mips-linux/bin/mips-linux- --jobs=72
O=build_dir ARCH=mips SHELL=/bin/bash
...
In file included from ../arch/mips/include/asm/mmzone.h:12,
from ../include/linux/mmzone.h:1116,
from ../include/linux/gfp.h:6,
from ../include/linux/xarray.h:14,
from ../include/linux/list_lru.h:14,
from ../include/linux/fs.h:13,
from ../include/linux/compat.h:17,
from ../arch/mips/kernel/asm-offsets.c:12:
../arch/mips/include/asm/mach-ip27/mmzone.h:23:26: error: conflicting
types for 'node_data'; have 'struct node_data *[]'
23 | extern struct node_data *node_data[];
| ^~~~~~~~~
In file included from ../include/linux/mmzone.h:952,
from ../include/linux/gfp.h:6,
from ../include/linux/xarray.h:14,
from ../include/linux/list_lru.h:14,
from ../include/linux/fs.h:13,
from ../include/linux/compat.h:17,
from ../arch/mips/kernel/asm-offsets.c:12:
../include/linux/memory_hotplug.h:55:19: note: previous declaration of
'node_data' with type 'pg_data_t *[]' {aka 'struct pglist_data *[]'}
55 | extern pg_data_t *node_data[];
| ^~~~~~~~~
make[2]: *** [../scripts/Makefile.build:121:
arch/mips/kernel/asm-offsets.s] Error 1
make[2]: Target 'missing-syscalls' not remade because of errors.
make[1]: *** [../arch/mips/Makefile:413: archprepare] Error 2
make[1]: Target '__all' not remade because of errors.
make[1]: Leaving directory '/mnt/memdrive/linux/build_dir'
make: *** [Makefile:219: __sub-make] Error 2
make: Target '__all' not remade because of errors.

Best Regards,
Rong Chen

> ---
> diff --git a/arch/mips/include/asm/mach-ip27/mmzone.h b/arch/mips/include/asm/mach-ip27/mmzone.h
> index 08c36e50a860..a798ad379da1 100644
> --- a/arch/mips/include/asm/mach-ip27/mmzone.h
> +++ b/arch/mips/include/asm/mach-ip27/mmzone.h
> @@ -20,9 +20,9 @@ struct node_data {
> struct hub_data hub;
> };
>
> -extern struct node_data *__node_data[];
> +extern struct node_data *node_data[];
>
> -#define NODE_DATA(n) (&__node_data[(n)]->pglist)
> -#define hub_data(n) (&__node_data[(n)]->hub)
> +#define NODE_DATA(n) (&node_data[(n)]->pglist)
> +#define hub_data(n) (&node_data[(n)]->hub)
>
> #endif /* _ASM_MACH_MMZONE_H */
> diff --git a/arch/mips/include/asm/mach-loongson64/mmzone.h b/arch/mips/include/asm/mach-loongson64/mmzone.h
> index ebb1deaa77b9..14e2b860ad65 100644
> --- a/arch/mips/include/asm/mach-loongson64/mmzone.h
> +++ b/arch/mips/include/asm/mach-loongson64/mmzone.h
> @@ -14,9 +14,9 @@
> #define pa_to_nid(addr) (((addr) & 0xf00000000000) >> NODE_ADDRSPACE_SHIFT)
> #define nid_to_addrbase(nid) ((unsigned long)(nid) << NODE_ADDRSPACE_SHIFT)
>
> -extern struct pglist_data *__node_data[];
> +extern struct pglist_data *node_data[];
>
> -#define NODE_DATA(n) (__node_data[n])
> +#define NODE_DATA(n) (node_data[n])
>
> extern void setup_zero_pages(void);
> extern void __init prom_init_numa_memory(void);
> diff --git a/arch/mips/loongson64/numa.c b/arch/mips/loongson64/numa.c
> index e8e3e48c5333..abbbc70ce980 100644
> --- a/arch/mips/loongson64/numa.c
> +++ b/arch/mips/loongson64/numa.c
> @@ -29,8 +29,8 @@
>
> unsigned char __node_distances[MAX_NUMNODES][MAX_NUMNODES];
> EXPORT_SYMBOL(__node_distances);
> -struct pglist_data *__node_data[MAX_NUMNODES];
> -EXPORT_SYMBOL(__node_data);
> +struct pglist_data *node_data[MAX_NUMNODES];
> +EXPORT_SYMBOL(node_data);
>
> cpumask_t __node_cpumask[MAX_NUMNODES];
> EXPORT_SYMBOL(__node_cpumask);
> @@ -107,7 +107,7 @@ static void __init node_mem_init(unsigned int node)
> tnid = early_pfn_to_nid(nd_pa >> PAGE_SHIFT);
> if (tnid != node)
> pr_info("NODE_DATA(%d) on node %d\n", node, tnid);
> - __node_data[node] = nd;
> + node_data[node] = nd;
> NODE_DATA(node)->node_start_pfn = start_pfn;
> NODE_DATA(node)->node_spanned_pages = end_pfn - start_pfn;
>
> diff --git a/arch/mips/sgi-ip27/ip27-memory.c b/arch/mips/sgi-ip27/ip27-memory.c
> index adc2faeecf7c..1c3a0b92d134 100644
> --- a/arch/mips/sgi-ip27/ip27-memory.c
> +++ b/arch/mips/sgi-ip27/ip27-memory.c
> @@ -33,9 +33,9 @@
> #define SLOT_PFNSHIFT (SLOT_SHIFT - PAGE_SHIFT)
> #define PFN_NASIDSHFT (NASID_SHFT - PAGE_SHIFT)
>
> -struct node_data *__node_data[MAX_NUMNODES];
> +struct node_data *node_data[MAX_NUMNODES];
>
> -EXPORT_SYMBOL(__node_data);
> +EXPORT_SYMBOL(node_data);
>
> static u64 gen_region_mask(void)
> {
> @@ -358,8 +358,8 @@ static void __init node_mem_init(nasid_t node)
> /*
> * Allocate the node data structures on the node first.
> */
> - __node_data[node] = __va(slot_freepfn << PAGE_SHIFT);
> - memset(__node_data[node], 0, PAGE_SIZE);
> + node_data[node] = __va(slot_freepfn << PAGE_SHIFT);
> + memset(node_data[node], 0, PAGE_SIZE);
>
> NODE_DATA(node)->node_start_pfn = start_pfn;
> NODE_DATA(node)->node_spanned_pages = end_pfn - start_pfn;
> @@ -401,7 +401,7 @@ void __init prom_meminit(void)
> node_mem_init(node);
> continue;
> }
> - __node_data[node] = &null_node;
> + node_data[node] = &null_node;
> }
> }
>

2022-03-25 18:43:19

by Tiezhu Yang

[permalink] [raw]
Subject: Re: [kbuild-all] Re: undefined reference to `node_data'



On 03/25/2022 09:16 AM, Chen, Rong A wrote:
>
>
> On 3/24/2022 8:40 PM, Michal Hocko wrote:
>> On Thu 24-03-22 10:04:43, Thomas Bogendoerfer wrote:
>>> On Wed, Mar 23, 2022 at 05:46:59PM +0100, Michal Hocko wrote:
>>>>>> If you fix the issue, kindly add following tag as appropriate
>>>>>> Reported-by: kernel test robot <[email protected]>
>>>>>>
>>>>>> All errors (new ones prefixed by >>):
>>>>>>
>>>>>> mips64-linux-ld: mm/page_alloc.o: in function `free_area_init':
>>>>>>>> (.init.text+0x1680): undefined reference to `node_data'
>>>>>> mips64-linux-ld: (.init.text+0x1690): undefined reference to
>>>>>> `node_data'
>>>>>
>>>>> OK, I can see what is going here. The page allocator normally
>>>>> uses NODE_DATA but arch_refresh_nodedata refers to node_data directly.
>>>>> This is a problem with
>>>>> arch/mips/include/asm/mach-loongson64/mmzone.h:
>>>>> extern struct pglist_data *__node_data[];
>>>>>
>>>>> #define NODE_DATA(n) (__node_data[n])
>>>>>
>>>>> Unfortunately we cannot use NODE_DATA there because of header
>>>>> inclusion
>>>>> ordering. I will think about a solution.
>>>>
>>>> Is there any reason why (some?) MIPS arches use __node_data rather than
>>>> node_data as most other architectures? Would it be acceptable to do the
>>>> renaming? It would help to cover the above compilation problem because
>>>> arch_refresh_nodedata could keep using node_data directly.
>>>
>>> I've just checked history and I don't see a reason for __node_data.
>>> So I'm fine with changing it to node_data.
>>
>> Thanks a lot for double checking Thomas! This is a dump&simple sed over
>> mips file. 0-day guys, could you give it a try please?
>
>
> Hi Michal,
>
> It returns another error:

Hi,

I think the following patch should fix the build error
"undefined reference to `node_data'":

https://git.kernel.org/pub/scm/linux/kernel/git/mips/linux.git/commit/?id=f8f9f21c7848

Thanks,
Tiezhu

2022-03-25 19:07:39

by Thomas Bogendoerfer

[permalink] [raw]
Subject: Re: undefined reference to `node_data'

On Wed, Mar 23, 2022 at 05:46:59PM +0100, Michal Hocko wrote:
> > > If you fix the issue, kindly add following tag as appropriate
> > > Reported-by: kernel test robot <[email protected]>
> > >
> > > All errors (new ones prefixed by >>):
> > >
> > > mips64-linux-ld: mm/page_alloc.o: in function `free_area_init':
> > > >> (.init.text+0x1680): undefined reference to `node_data'
> > > mips64-linux-ld: (.init.text+0x1690): undefined reference to `node_data'
> >
> > OK, I can see what is going here. The page allocator normally
> > uses NODE_DATA but arch_refresh_nodedata refers to node_data directly.
> > This is a problem with
> > arch/mips/include/asm/mach-loongson64/mmzone.h:
> > extern struct pglist_data *__node_data[];
> >
> > #define NODE_DATA(n) (__node_data[n])
> >
> > Unfortunately we cannot use NODE_DATA there because of header inclusion
> > ordering. I will think about a solution.
>
> Is there any reason why (some?) MIPS arches use __node_data rather than
> node_data as most other architectures? Would it be acceptable to do the
> renaming? It would help to cover the above compilation problem because
> arch_refresh_nodedata could keep using node_data directly.

I've just checked history and I don't see a reason for __node_data.
So I'm fine with changing it to node_data.

Thomas.

--
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea. [ RFC1925, 2.3 ]