Re: arch/mips/include/asm/mach-ip27/topology.h:19:7: error: implicit declaration of function 'hub_data'

From: Joshua Kinard
Date: Mon Aug 03 2020 - 19:59:03 EST

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: 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 -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 <lkp@xxxxxxxxx>
>> 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 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
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