Re: 2.6.13-mm2

Andrew Morton
2005-09-09T10:42:23Z

Andi Kleen <ak@suse.de> wrote:
>
> > arch/x86_64/pci/built-in.o(.init.text+0xa88): In function `pci_acpi_scan_root':
> > : undefined reference to `pxm_to_node'
> > make: *** [.tmp_vmlinux1] Error 1
> > 09/08/05-06:52:31 Build the kernel. Failed rc = 2
> > 09/08/05-06:52:31 build: kernel build Failed rc = 1
> > 09/08/05-06:52:31 command complete: (2) rc=126
> > Failed and terminated the run
>
> I tried the config in my (non mm) tree and it compiled just fine.

You must have mucked it up.

> Must be some bad interaction with another patch in -mm* or a bad
> merge.

Nope.

> The original patch that introduces it is
> ftp://ftp.firstfloor.org/pub/ak/x86_64/x86_64-2.6.13-1/patches/pci-pxm
>
> pxm_to_node for x86-64 is supposed to be declared in arch/x86_64/mm/srat.c

pxm_to_node is *defined* in arch/x86_64/mm/srat.c, which is enabled by
CONFIG_ACPI_NUMA.

pxm_to_node is declared in include/asm-x86_64/numa.h

pxm_to_node is referenced in arch/i386/pci/acpi.c, under CONFIG_NUMA.

Consequently CONFIG_ACPI_NUMA=n, CONFIG_NUMA=y will fail to link.

Also x86 compilation of arch/i386/pci/acpi.c with CONFIG_NUMA=y will
generate an `implicit declaration of function' warning and will fail to
link.

Also, x86_64-srat-overlap-error.patch adds this forward decl in
arch/x86_64/mm/srat.c:

int node_to_pxm(int n);

Please, either give it static scope or, if it really needs global scope (it
doesn't), put the declaration in the right place?