Hi Mike,
FYI, the error/warning still remains.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: bcf876870b95592b52519ed4aafcf9d95999bc9c
commit: 397dc00e249ec64e106374565575dd0eb7e25998 mips: sgi-ip27: switch from DISCONTIGMEM to SPARSEMEM
date: 10 months ago
config: mips-randconfig-r032-20200803 (attached as .config)
compiler: mips64-linux-gcc (GCC) 9.3.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
git checkout 397dc00e249ec64e106374565575dd0eb7e25998
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=mips
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
All errors (new ones prefixed by >>):
In file included from arch/mips/include/asm/topology.h:11,
from include/linux/topology.h:36,
from include/linux/gfp.h:9,
from include/linux/slab.h:15,
from include/linux/crypto.h:19,
from include/crypto/hash.h:11,
from include/linux/uio.h:10,
from include/linux/socket.h:8,
from include/linux/compat.h:15,
from arch/mips/kernel/asm-offsets.c:12:
arch/mips/include/asm/mach-ip27/topology.h:25:39: error: 'MAX_COMPACT_NODES' undeclared here (not in a function)
25 | extern unsigned char __node_distances[MAX_COMPACT_NODES][MAX_COMPACT_NODES];
| ^~~~~~~~~~~~~~~~~
include/linux/topology.h: In function 'numa_node_id':
>> arch/mips/include/asm/mach-ip27/topology.h:16:27: error: implicit declaration of function 'cputonasid' [-Werror=implicit-function-declaration]
16 | #define cpu_to_node(cpu) (cputonasid(cpu))
| ^~~~~~~~~~
include/linux/topology.h:119:9: note: in expansion of macro 'cpu_to_node'
119 | return cpu_to_node(raw_smp_processor_id());
| ^~~~~~~~~~~
include/linux/topology.h: In function 'cpu_cpu_mask':
>> arch/mips/include/asm/mach-ip27/topology.h:19:7: error: implicit declaration of function 'hub_data' [-Werror=implicit-function-declaration]
19 | &hub_data(node)->h_cpus)
| ^~~~~~~~
include/linux/topology.h:227:9: note: in expansion of macro 'cpumask_of_node'
227 | return cpumask_of_node(cpu_to_node(cpu));
| ^~~~~~~~~~~~~~~
>> arch/mips/include/asm/mach-ip27/topology.h:19:21: error: invalid type argument of '->' (have 'int')
19 | &hub_data(node)->h_cpus)
| ^~
include/linux/topology.h:227:9: note: in expansion of macro 'cpumask_of_node'
227 | return cpumask_of_node(cpu_to_node(cpu));
| ^~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c: At top level:
arch/mips/kernel/asm-offsets.c:26:6: warning: no previous prototype for 'output_ptreg_defines' [-Wmissing-prototypes]
26 | void output_ptreg_defines(void)
| ^~~~~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:78:6: warning: no previous prototype for 'output_task_defines' [-Wmissing-prototypes]
78 | void output_task_defines(void)
| ^~~~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:93:6: warning: no previous prototype for 'output_thread_info_defines' [-Wmissing-prototypes]
93 | void output_thread_info_defines(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:110:6: warning: no previous prototype for 'output_thread_defines' [-Wmissing-prototypes]
110 | void output_thread_defines(void)
| ^~~~~~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:138:6: warning: no previous prototype for 'output_thread_fpu_defines' [-Wmissing-prototypes]
138 | void output_thread_fpu_defines(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:181:6: warning: no previous prototype for 'output_mm_defines' [-Wmissing-prototypes]
181 | void output_mm_defines(void)
| ^~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:242:6: warning: no previous prototype for 'output_sc_defines' [-Wmissing-prototypes]
242 | void output_sc_defines(void)
| ^~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:255:6: warning: no previous prototype for 'output_signal_defined' [-Wmissing-prototypes]
255 | void output_signal_defined(void)
| ^~~~~~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:334:6: warning: no previous prototype for 'output_pm_defines' [-Wmissing-prototypes]
334 | void output_pm_defines(void)
| ^~~~~~~~~~~~~~~~~
arch/mips/kernel/asm-offsets.c:348:6: warning: no previous prototype for 'output_kvm_defines' [-Wmissing-prototypes]
348 | void output_kvm_defines(void)
| ^~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:99: arch/mips/kernel/asm-offsets.s] Error 1
make[2]: Target 'missing-syscalls' not remade because of errors.
make[1]: *** [arch/mips/Makefile:414: archprepare] Error 2
make[1]: Target 'prepare' not remade because of errors.
make: *** [Makefile:179: sub-make] Error 2
make: Target 'prepare' not remade because of errors.
vim +/hub_data +19 arch/mips/include/asm/mach-ip27/topology.h
cc6e8e0812cf95 include/asm-mips/mach-ip27/topology.h Ralf Baechle 2007-10-11 15
4bf841ebf17aaa arch/mips/include/asm/mach-ip27/topology.h Thomas Bogendoerfer 2019-10-03 @16 #define cpu_to_node(cpu) (cputonasid(cpu))
d797396f3387c5 arch/mips/include/asm/mach-ip27/topology.h Anton Blanchard 2010-01-06 17 #define cpumask_of_node(node) ((node) == -1 ? \
d797396f3387c5 arch/mips/include/asm/mach-ip27/topology.h Anton Blanchard 2010-01-06 18 cpu_all_mask : \
d797396f3387c5 arch/mips/include/asm/mach-ip27/topology.h Anton Blanchard 2010-01-06 @19 &hub_data(node)->h_cpus)
9dbdfce85c165f include/asm-mips/mach-ip27/topology.h Ralf Baechle 2005-09-15 20 struct pci_bus;
9dbdfce85c165f include/asm-mips/mach-ip27/topology.h Ralf Baechle 2005-09-15 21 extern int pcibus_to_node(struct pci_bus *);
9dbdfce85c165f include/asm-mips/mach-ip27/topology.h Ralf Baechle 2005-09-15 22
:::::: The code at line 19 was first introduced by commit
:::::: d797396f3387c5be8f63fcc8e9be98bb884ea86a MIPS: cpumask_of_node() should handle -1 as a node
:::::: TO: Anton Blanchard <[email protected]>
:::::: CC: Ralf Baechle <[email protected]>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
Hi,
On Tue, Aug 04, 2020 at 01:39:14AM +0800, kernel test robot wrote:
> Hi Mike,
>
> FYI, the error/warning still remains.
>
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: bcf876870b95592b52519ed4aafcf9d95999bc9c
> commit: 397dc00e249ec64e106374565575dd0eb7e25998 mips: sgi-ip27: switch from DISCONTIGMEM to SPARSEMEM
> date: 10 months ago
> config: mips-randconfig-r032-20200803 (attached as .config)
> compiler: mips64-linux-gcc (GCC) 9.3.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
> git checkout 397dc00e249ec64e106374565575dd0eb7e25998
> # save the attached .config to linux build tree
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=mips
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <[email protected]>
>
> All errors (new ones prefixed by >>):
>
> In file included from arch/mips/include/asm/topology.h:11,
> from include/linux/topology.h:36,
> from include/linux/gfp.h:9,
> from include/linux/slab.h:15,
> from include/linux/crypto.h:19,
> from include/crypto/hash.h:11,
> from include/linux/uio.h:10,
> from include/linux/socket.h:8,
> from include/linux/compat.h:15,
> from arch/mips/kernel/asm-offsets.c:12:
> arch/mips/include/asm/mach-ip27/topology.h:25:39: error: 'MAX_COMPACT_NODES' undeclared here (not in a function)
> 25 | extern unsigned char __node_distances[MAX_COMPACT_NODES][MAX_COMPACT_NODES];
> | ^~~~~~~~~~~~~~~~~
> include/linux/topology.h: In function 'numa_node_id':
> >> arch/mips/include/asm/mach-ip27/topology.h:16:27: error: implicit declaration of function 'cputonasid' [-Werror=implicit-function-declaration]
> 16 | #define cpu_to_node(cpu) (cputonasid(cpu))
> | ^~~~~~~~~~
This happens when randconfig disables NUMA and has SGI_IP27 enabled.
Before switch from discontigmem to sparsemem, there always was
CONFIG_NEED_MULTIPLE_NODES=y because it was selected by DISCONTIGMEM.
Without DISCONTIGMEM it is possible to have SPARSEMEM without NUMA for
SGI_IP27 and as many things there rely on custom node definition, the
build breaks.
I don't remember small Origin or Onyx systems so I think it would be
reasonable to make SGI_IP27 to select NUMA. If the below patch makes
sense I'll resend it formally.
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 6fee1a133e9d..a7e40bb1e5bc 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -678,6 +678,7 @@ config SGI_IP27
select SYS_SUPPORTS_NUMA
select SYS_SUPPORTS_SMP
select MIPS_L1_CACHE_SHIFT_7
+ select NUMA
help
This are the SGI Origin 200, Origin 2000 and Onyx 2 Graphics
workstations. To compile a Linux kernel that runs on these, say Y
--
Sincerely yours,
Mike.
On 8/3/2020 15:49, Mike Rapoport wrote:
> Hi,
>
> On Tue, Aug 04, 2020 at 01:39:14AM +0800, kernel test robot wrote:
>> Hi Mike,
>>
>> FYI, the error/warning still remains.
>>
>> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
>> head: bcf876870b95592b52519ed4aafcf9d95999bc9c
>> commit: 397dc00e249ec64e106374565575dd0eb7e25998 mips: sgi-ip27: switch from DISCONTIGMEM to SPARSEMEM
>> date: 10 months ago
>> config: mips-randconfig-r032-20200803 (attached as .config)
>> compiler: mips64-linux-gcc (GCC) 9.3.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
>> git checkout 397dc00e249ec64e106374565575dd0eb7e25998
>> # save the attached .config to linux build tree
>> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=mips
>>
>> If you fix the issue, kindly add following tag as appropriate
>> Reported-by: kernel test robot <[email protected]>
>>
>> All errors (new ones prefixed by >>):
>>
>> In file included from arch/mips/include/asm/topology.h:11,
>> from include/linux/topology.h:36,
>> from include/linux/gfp.h:9,
>> from include/linux/slab.h:15,
>> from include/linux/crypto.h:19,
>> from include/crypto/hash.h:11,
>> from include/linux/uio.h:10,
>> from include/linux/socket.h:8,
>> from include/linux/compat.h:15,
>> from arch/mips/kernel/asm-offsets.c:12:
>> arch/mips/include/asm/mach-ip27/topology.h:25:39: error: 'MAX_COMPACT_NODES' undeclared here (not in a function)
>> 25 | extern unsigned char __node_distances[MAX_COMPACT_NODES][MAX_COMPACT_NODES];
>> | ^~~~~~~~~~~~~~~~~
>> include/linux/topology.h: In function 'numa_node_id':
>>>> arch/mips/include/asm/mach-ip27/topology.h:16:27: error: implicit declaration of function 'cputonasid' [-Werror=implicit-function-declaration]
>> 16 | #define cpu_to_node(cpu) (cputonasid(cpu))
>> | ^~~~~~~~~~
>
> This happens when randconfig disables NUMA and has SGI_IP27 enabled.
> Before switch from discontigmem to sparsemem, there always was
> CONFIG_NEED_MULTIPLE_NODES=y because it was selected by DISCONTIGMEM.
> Without DISCONTIGMEM it is possible to have SPARSEMEM without NUMA for
> SGI_IP27 and as many things there rely on custom node definition, the
> build breaks.
>
> I don't remember small Origin or Onyx systems so I think it would be
> reasonable to make SGI_IP27 to select NUMA. If the below patch makes
> sense I'll resend it formally.
>
> diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
> index 6fee1a133e9d..a7e40bb1e5bc 100644
> --- a/arch/mips/Kconfig
> +++ b/arch/mips/Kconfig
> @@ -678,6 +678,7 @@ config SGI_IP27
> select SYS_SUPPORTS_NUMA
> select SYS_SUPPORTS_SMP
> select MIPS_L1_CACHE_SHIFT_7
> + select NUMA
> help
> This are the SGI Origin 200, Origin 2000 and Onyx 2 Graphics
> workstations. To compile a Linux kernel that runs on these, say Y
NUMA is really only needed if you have more than one nodeboard for the Onyx2
or Origin2000 systems. If you just have a single Origin 200 system, you
want to turn NUMA off. I happen to have both a single Origin 200 system and
an Onyx2 w/ two nodeboards. Haven't fired them up recently on modern
kernels, though.
I can't think of a good workaround off the top of my head for this case.
NUMA shouldn't hurt an Origin 200, but I recall Ralf once telling me it does
introduce slowdown at some points due to checks for other nodes being done
when we know there can't physically be any more (exception: dual Origin
200's hooked together via CrossTown cables).
--
Joshua Kinard
Gentoo/MIPS
[email protected]
rsa6144/5C63F4E3F5C6C943 2015-04-27
177C 1972 1FB8 F254 BAD0 3E72 5C63 F4E3 F5C6 C943
"The past tempts us, the present confuses us, the future frightens us. And
our lives slip away, moment by moment, lost in that vast, terrible in-between."
--Emperor Turhan, Centauri Republic
在 2020/8/4 上午7:58, Joshua Kinard 写道:
> On 8/3/2020 15:49, Mike Rapoport wrote:
>> Hi,
>>
>> On Tue, Aug 04, 2020 at 01:39:14AM +0800, kernel test robot wrote:
>>> Hi Mike,
>>>
>>> FYI, the error/warning still remains.
>>>
>>> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
>>> head: bcf876870b95592b52519ed4aafcf9d95999bc9c
>>> commit: 397dc00e249ec64e106374565575dd0eb7e25998 mips: sgi-ip27: switch from DISCONTIGMEM to SPARSEMEM
>>> date: 10 months ago
>>> config: mips-randconfig-r032-20200803 (attached as .config)
>>> compiler: mips64-linux-gcc (GCC) 9.3.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
>>> git checkout 397dc00e249ec64e106374565575dd0eb7e25998
>>> # save the attached .config to linux build tree
>>> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=mips
>>>
>>> If you fix the issue, kindly add following tag as appropriate
>>> Reported-by: kernel test robot <[email protected]>
>>>
>>> All errors (new ones prefixed by >>):
>>>
>>> In file included from arch/mips/include/asm/topology.h:11,
>>> from include/linux/topology.h:36,
>>> from include/linux/gfp.h:9,
>>> from include/linux/slab.h:15,
>>> from include/linux/crypto.h:19,
>>> from include/crypto/hash.h:11,
>>> from include/linux/uio.h:10,
>>> from include/linux/socket.h:8,
>>> from include/linux/compat.h:15,
>>> from arch/mips/kernel/asm-offsets.c:12:
>>> arch/mips/include/asm/mach-ip27/topology.h:25:39: error: 'MAX_COMPACT_NODES' undeclared here (not in a function)
>>> 25 | extern unsigned char __node_distances[MAX_COMPACT_NODES][MAX_COMPACT_NODES];
>>> | ^~~~~~~~~~~~~~~~~
>>> include/linux/topology.h: In function 'numa_node_id':
>>>>> arch/mips/include/asm/mach-ip27/topology.h:16:27: error: implicit declaration of function 'cputonasid' [-Werror=implicit-function-declaration]
>>> 16 | #define cpu_to_node(cpu) (cputonasid(cpu))
>>> | ^~~~~~~~~~
>> This happens when randconfig disables NUMA and has SGI_IP27 enabled.
>> Before switch from discontigmem to sparsemem, there always was
>> CONFIG_NEED_MULTIPLE_NODES=y because it was selected by DISCONTIGMEM.
>> Without DISCONTIGMEM it is possible to have SPARSEMEM without NUMA for
>> SGI_IP27 and as many things there rely on custom node definition, the
>> build breaks.
>>
>> I don't remember small Origin or Onyx systems so I think it would be
>> reasonable to make SGI_IP27 to select NUMA. If the below patch makes
>> sense I'll resend it formally.
>>
>> diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
>> index 6fee1a133e9d..a7e40bb1e5bc 100644
>> --- a/arch/mips/Kconfig
>> +++ b/arch/mips/Kconfig
>> @@ -678,6 +678,7 @@ config SGI_IP27
>> select SYS_SUPPORTS_NUMA
>> select SYS_SUPPORTS_SMP
>> select MIPS_L1_CACHE_SHIFT_7
>> + select NUMA
>> help
>> This are the SGI Origin 200, Origin 2000 and Onyx 2 Graphics
>> workstations. To compile a Linux kernel that runs on these, say Y
> NUMA is really only needed if you have more than one nodeboard for the Onyx2
> or Origin2000 systems. If you just have a single Origin 200 system, you
> want to turn NUMA off. I happen to have both a single Origin 200 system and
> an Onyx2 w/ two nodeboards. Haven't fired them up recently on modern
> kernels, though.
>
> I can't think of a good workaround off the top of my head for this case.
> NUMA shouldn't hurt an Origin 200, but I recall Ralf once telling me it does
> introduce slowdown at some points due to checks for other nodes being done
> when we know there can't physically be any more (exception: dual Origin
> 200's hooked together via CrossTown cables).
Then something like this would be more reasonable:
diff --git a/arch/mips/include/asm/mach-ip27/topology.h
b/arch/mips/include/asm/mach-ip27/topology.h
index d66cc53feab8..8976b9a20bdc 100644
--- a/arch/mips/include/asm/mach-ip27/topology.h
+++ b/arch/mips/include/asm/mach-ip27/topology.h
@@ -13,6 +13,7 @@ struct cpuinfo_ip27 {
extern struct cpuinfo_ip27 sn_cpu_info[NR_CPUS];
+#ifdef CONFIG_NUMA
#define cpu_to_node(cpu) (cputonasid(cpu))
#define cpumask_of_node(node) ((node) == -1 ? \
cpu_all_mask : \
@@ -25,6 +26,10 @@ extern int pcibus_to_node(struct pci_bus *);
extern unsigned char __node_distances[MAX_NUMNODES][MAX_NUMNODES];
#define node_distance(from, to) (__node_distances[(from)][(to)])
+#else
+#define cpu_to_node(cpu) 0
+#define cpumask_of_node(node) cpu_present_mask
+#endif
#include <asm-generic/topology.h>
- Jiaxun
>
On Tue, Aug 04, 2020 at 07:34:39PM +0800, Jiaxun Yang wrote:
>
> 在 2020/8/4 上午7:58, Joshua Kinard 写道:
> > On 8/3/2020 15:49, Mike Rapoport wrote:
> > > Hi,
> > >
> > > On Tue, Aug 04, 2020 at 01:39:14AM +0800, kernel test robot wrote:
> > > > Hi Mike,
> > > >
> > > > FYI, the error/warning still remains.
> > > >
> > > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> > > > head: bcf876870b95592b52519ed4aafcf9d95999bc9c
> > > > commit: 397dc00e249ec64e106374565575dd0eb7e25998 mips: sgi-ip27: switch from DISCONTIGMEM to SPARSEMEM
> > > > date: 10 months ago
> > > > config: mips-randconfig-r032-20200803 (attached as .config)
> > > > compiler: mips64-linux-gcc (GCC) 9.3.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
> > > > git checkout 397dc00e249ec64e106374565575dd0eb7e25998
> > > > # save the attached .config to linux build tree
> > > > COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=mips
> > > >
> > > > If you fix the issue, kindly add following tag as appropriate
> > > > Reported-by: kernel test robot <[email protected]>
> > > >
> > > > All errors (new ones prefixed by >>):
> > > >
> > > > In file included from arch/mips/include/asm/topology.h:11,
> > > > from include/linux/topology.h:36,
> > > > from include/linux/gfp.h:9,
> > > > from include/linux/slab.h:15,
> > > > from include/linux/crypto.h:19,
> > > > from include/crypto/hash.h:11,
> > > > from include/linux/uio.h:10,
> > > > from include/linux/socket.h:8,
> > > > from include/linux/compat.h:15,
> > > > from arch/mips/kernel/asm-offsets.c:12:
> > > > arch/mips/include/asm/mach-ip27/topology.h:25:39: error: 'MAX_COMPACT_NODES' undeclared here (not in a function)
> > > > 25 | extern unsigned char __node_distances[MAX_COMPACT_NODES][MAX_COMPACT_NODES];
> > > > | ^~~~~~~~~~~~~~~~~
> > > > include/linux/topology.h: In function 'numa_node_id':
> > > > > > arch/mips/include/asm/mach-ip27/topology.h:16:27: error: implicit declaration of function 'cputonasid' [-Werror=implicit-function-declaration]
> > > > 16 | #define cpu_to_node(cpu) (cputonasid(cpu))
> > > > | ^~~~~~~~~~
> > > This happens when randconfig disables NUMA and has SGI_IP27 enabled.
> > > Before switch from discontigmem to sparsemem, there always was
> > > CONFIG_NEED_MULTIPLE_NODES=y because it was selected by DISCONTIGMEM.
> > > Without DISCONTIGMEM it is possible to have SPARSEMEM without NUMA for
> > > SGI_IP27 and as many things there rely on custom node definition, the
> > > build breaks.
> > >
> > > I don't remember small Origin or Onyx systems so I think it would be
> > > reasonable to make SGI_IP27 to select NUMA. If the below patch makes
> > > sense I'll resend it formally.
> > >
> > > diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
> > > index 6fee1a133e9d..a7e40bb1e5bc 100644
> > > --- a/arch/mips/Kconfig
> > > +++ b/arch/mips/Kconfig
> > > @@ -678,6 +678,7 @@ config SGI_IP27
> > > select SYS_SUPPORTS_NUMA
> > > select SYS_SUPPORTS_SMP
> > > select MIPS_L1_CACHE_SHIFT_7
> > > + select NUMA
> > > help
> > > This are the SGI Origin 200, Origin 2000 and Onyx 2 Graphics
> > > workstations. To compile a Linux kernel that runs on these, say Y
> > NUMA is really only needed if you have more than one nodeboard for the Onyx2
> > or Origin2000 systems. If you just have a single Origin 200 system, you
> > want to turn NUMA off. I happen to have both a single Origin 200 system and
> > an Onyx2 w/ two nodeboards. Haven't fired them up recently on modern
> > kernels, though.
> >
> > I can't think of a good workaround off the top of my head for this case.
> > NUMA shouldn't hurt an Origin 200, but I recall Ralf once telling me it does
> > introduce slowdown at some points due to checks for other nodes being done
> > when we know there can't physically be any more (exception: dual Origin
> > 200's hooked together via CrossTown cables).
>
> Then something like this would be more reasonable:
>
> diff --git a/arch/mips/include/asm/mach-ip27/topology.h
> b/arch/mips/include/asm/mach-ip27/topology.h
> index d66cc53feab8..8976b9a20bdc 100644
> --- a/arch/mips/include/asm/mach-ip27/topology.h
> +++ b/arch/mips/include/asm/mach-ip27/topology.h
> @@ -13,6 +13,7 @@ struct cpuinfo_ip27 {
>
> extern struct cpuinfo_ip27 sn_cpu_info[NR_CPUS];
>
> +#ifdef CONFIG_NUMA
> #define cpu_to_node(cpu) (cputonasid(cpu))
> #define cpumask_of_node(node) ((node) == -1 ? \
> cpu_all_mask : \
> @@ -25,6 +26,10 @@ extern int pcibus_to_node(struct pci_bus *);
> extern unsigned char __node_distances[MAX_NUMNODES][MAX_NUMNODES];
>
> #define node_distance(from, to) (__node_distances[(from)][(to)])
> +#else
> +#define cpu_to_node(cpu) 0
> +#define cpumask_of_node(node) cpu_present_mask
> +#endif
Unfortunately this won't be enough. sgi-ip27 presumes custom node
structures available even if CONFIG_NUMA is disabled.
> #include <asm-generic/topology.h>
>
> - Jiaxun
> >
--
Sincerely yours,
Mike.
On Mon, Aug 03, 2020 at 07:58:54PM -0400, Joshua Kinard wrote:
> On 8/3/2020 15:49, Mike Rapoport wrote:
> > Hi,
> >
> > On Tue, Aug 04, 2020 at 01:39:14AM +0800, kernel test robot wrote:
> >> Hi Mike,
> >>
> >> FYI, the error/warning still remains.
> >>
> >> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> >> head: bcf876870b95592b52519ed4aafcf9d95999bc9c
> >> commit: 397dc00e249ec64e106374565575dd0eb7e25998 mips: sgi-ip27: switch from DISCONTIGMEM to SPARSEMEM
> >> date: 10 months ago
> >> config: mips-randconfig-r032-20200803 (attached as .config)
> >> compiler: mips64-linux-gcc (GCC) 9.3.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
> >> git checkout 397dc00e249ec64e106374565575dd0eb7e25998
> >> # save the attached .config to linux build tree
> >> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=mips
> >>
> >> If you fix the issue, kindly add following tag as appropriate
> >> Reported-by: kernel test robot <[email protected]>
> >>
> >> All errors (new ones prefixed by >>):
> >>
> >> In file included from arch/mips/include/asm/topology.h:11,
> >> from include/linux/topology.h:36,
> >> from include/linux/gfp.h:9,
> >> from include/linux/slab.h:15,
> >> from include/linux/crypto.h:19,
> >> from include/crypto/hash.h:11,
> >> from include/linux/uio.h:10,
> >> from include/linux/socket.h:8,
> >> from include/linux/compat.h:15,
> >> from arch/mips/kernel/asm-offsets.c:12:
> >> arch/mips/include/asm/mach-ip27/topology.h:25:39: error: 'MAX_COMPACT_NODES' undeclared here (not in a function)
> >> 25 | extern unsigned char __node_distances[MAX_COMPACT_NODES][MAX_COMPACT_NODES];
> >> | ^~~~~~~~~~~~~~~~~
> >> include/linux/topology.h: In function 'numa_node_id':
> >>>> arch/mips/include/asm/mach-ip27/topology.h:16:27: error: implicit declaration of function 'cputonasid' [-Werror=implicit-function-declaration]
> >> 16 | #define cpu_to_node(cpu) (cputonasid(cpu))
> >> | ^~~~~~~~~~
> >
> > This happens when randconfig disables NUMA and has SGI_IP27 enabled.
> > Before switch from discontigmem to sparsemem, there always was
> > CONFIG_NEED_MULTIPLE_NODES=y because it was selected by DISCONTIGMEM.
> > Without DISCONTIGMEM it is possible to have SPARSEMEM without NUMA for
> > SGI_IP27 and as many things there rely on custom node definition, the
> > build breaks.
> >
> > I don't remember small Origin or Onyx systems so I think it would be
> > reasonable to make SGI_IP27 to select NUMA. If the below patch makes
> > sense I'll resend it formally.
> >
> > diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
> > index 6fee1a133e9d..a7e40bb1e5bc 100644
> > --- a/arch/mips/Kconfig
> > +++ b/arch/mips/Kconfig
> > @@ -678,6 +678,7 @@ config SGI_IP27
> > select SYS_SUPPORTS_NUMA
> > select SYS_SUPPORTS_SMP
> > select MIPS_L1_CACHE_SHIFT_7
> > + select NUMA
> > help
> > This are the SGI Origin 200, Origin 2000 and Onyx 2 Graphics
> > workstations. To compile a Linux kernel that runs on these, say Y
>
> NUMA is really only needed if you have more than one nodeboard for the Onyx2
> or Origin2000 systems. If you just have a single Origin 200 system, you
> want to turn NUMA off. I happen to have both a single Origin 200 system and
> an Onyx2 w/ two nodeboards. Haven't fired them up recently on modern
> kernels, though.
>
> I can't think of a good workaround off the top of my head for this case.
> NUMA shouldn't hurt an Origin 200, but I recall Ralf once telling me it does
> introduce slowdown at some points due to checks for other nodes being done
> when we know there can't physically be any more (exception: dual Origin
> 200's hooked together via CrossTown cables).
Before the removal of DISCONTIGMEM, Origin 200 would still have multiple
nodes and AFAIU it was not configurable, so I'm not sure there would be
a measurable difference between DISCONTIGMEM + !NUMA vs SPARSEMEM + NUMA
> --
> Joshua Kinard
> Gentoo/MIPS
> [email protected]
> rsa6144/5C63F4E3F5C6C943 2015-04-27
> 177C 1972 1FB8 F254 BAD0 3E72 5C63 F4E3 F5C6 C943
>
> "The past tempts us, the present confuses us, the future frightens us. And
> our lives slip away, moment by moment, lost in that vast, terrible in-between."
>
> --Emperor Turhan, Centauri Republic
--
Sincerely yours,
Mike.
On Mon, Aug 03, 2020 at 10:49:10PM +0300, Mike Rapoport wrote:
> On Tue, Aug 04, 2020 at 01:39:14AM +0800, kernel test robot wrote:
> [...]
> >
> > All errors (new ones prefixed by >>):
> >
> > In file included from arch/mips/include/asm/topology.h:11,
> > from include/linux/topology.h:36,
> > from include/linux/gfp.h:9,
> > from include/linux/slab.h:15,
> > from include/linux/crypto.h:19,
> > from include/crypto/hash.h:11,
> > from include/linux/uio.h:10,
> > from include/linux/socket.h:8,
> > from include/linux/compat.h:15,
> > from arch/mips/kernel/asm-offsets.c:12:
> > arch/mips/include/asm/mach-ip27/topology.h:25:39: error: 'MAX_COMPACT_NODES' undeclared here (not in a function)
> > 25 | extern unsigned char __node_distances[MAX_COMPACT_NODES][MAX_COMPACT_NODES];
> > | ^~~~~~~~~~~~~~~~~
> > include/linux/topology.h: In function 'numa_node_id':
> > >> arch/mips/include/asm/mach-ip27/topology.h:16:27: error: implicit declaration of function 'cputonasid' [-Werror=implicit-function-declaration]
> > 16 | #define cpu_to_node(cpu) (cputonasid(cpu))
> > | ^~~~~~~~~~
>
> This happens when randconfig disables NUMA and has SGI_IP27 enabled.
> Before switch from discontigmem to sparsemem, there always was
> CONFIG_NEED_MULTIPLE_NODES=y because it was selected by DISCONTIGMEM.
> Without DISCONTIGMEM it is possible to have SPARSEMEM without NUMA for
> SGI_IP27 and as many things there rely on custom node definition, the
> build breaks.
>
> I don't remember small Origin or Onyx systems so I think it would be
> reasonable to make SGI_IP27 to select NUMA.
IMHO there are right now too many places in IP27 code, which assumes NUMA
enabled, so your patch makes sense. And if someone wants to get it
supported without NUMA enabled, I'm taking that patch as well.
> If the below patch makes sense I'll resend it formally.
yes please.
Thomas.
--
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea. [ RFC1925, 2.3 ]