RE: x86/non-x86: percpu, node ids, apic ids x86.git fixup

Luck, Tony
2008-01-30T21:22:29Z

> this i believe builds an implicit dependency between the mca_asm.o
> position within the image and the ia64_mca_data percpu variable it
> accesses - it relies on the immediate 22 addressing mode that has 4MB of
> scope. Per chance, the .config you sent creates a 14MB image, and the
> percpu variables moved too far away for the linker to be able to fulfill
> this constraint.

Sounds very plausible.

> The workaround is to define PER_CPU_ATTRIBUTES to link percpu variables
> back into the .percpu section on UP too - which ia64 links specially
> into its vmlinux.lds. But ultimately i think the better solution would
> be to remove this dependency between arch/ia64/kernel/mca_asm.S and the
> position of the percpu data.

Yup. That fixes the build ... the resulting binary doesn't boot though :-(
I just realized that it has been a while since I tried booting a UP
kernel ... so the problem may be unrelated bitrot elsewhere.

Overall you are right that the mca_asm.S code should not be dependent on
the relative location of the data objects.

I'll start digging on why this doesn't boot ... but you might as well
send the fixes so far upstream to Linus so that the SMP fix is available
(which is all anyone really cares about ... there are very, very few
UP ia64 systems in existence).

Acked-by: Tony Luck <tony.luck@intel.com>

-Tony