All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Chen, Rong A" <rong.a.chen@intel.com>
To: Michal Hocko <mhocko@suse.com>, kernel test robot <lkp@intel.com>,
	kbuild-all@lists.01.org,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: linux-kernel@vger.kernel.org, Oscar Salvador <osalvador@suse.de>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linux Memory Management List <linux-mm@kvack.org>,
	linux-mips@vger.kernel.org
Subject: Re: [kbuild-all] Re: undefined reference to `node_data'
Date: Fri, 25 Mar 2022 09:16:31 +0800	[thread overview]
Message-ID: <06178ca0-66ad-c7fc-a79c-0ea1873408bd@intel.com> (raw)
In-Reply-To: <YjxmrTKxRpTFeHnE@dhcp22.suse.cz>



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 <lkp@intel.com>
>>>>>
>>>>> 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/202203232042.AS9SV1zv-lkp@intel.com/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;
>   	}
>   }
> 

  reply	other threads:[~2022-03-25  1:16 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-23 12:58 undefined reference to `node_data' kernel test robot
2022-03-23 14:53 ` Michal Hocko
2022-03-23 14:53   ` Michal Hocko
2022-03-23 16:46   ` Michal Hocko
2022-03-23 16:46     ` Michal Hocko
2022-03-24  9:04     ` Thomas Bogendoerfer
2022-03-24  9:04       ` Thomas Bogendoerfer
2022-03-24 12:40       ` Michal Hocko
2022-03-24 12:40         ` Michal Hocko
2022-03-25  1:16         ` Chen, Rong A [this message]
2022-03-25  3:40           ` [kbuild-all] " Tiezhu Yang
2022-03-25  3:40             ` Tiezhu Yang
2022-03-25  7:46             ` [kbuild-all] " Michal Hocko
2022-03-25  7:46               ` Michal Hocko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=06178ca0-66ad-c7fc-a79c-0ea1873408bd@intel.com \
    --to=rong.a.chen@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lkp@intel.com \
    --cc=mhocko@suse.com \
    --cc=osalvador@suse.de \
    --cc=tsbogend@alpha.franken.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.