Re: [crash, bisected] Re: [PATCH 3/4] x86_64: Fold pda into per cpuarea

From: Jeremy Fitzhardinge
Date: Fri Jun 20 2008 - 15:05:11 EST


Christoph Lameter wrote:
On Fri, 20 Jun 2008, Jeremy Fitzhardinge wrote:

The loader setup for the percpu section changes with zero basing. Maybe that
has bad side effects
How does it work? The symbols in the percpu segment are 0-based, but where
does the data for the sections which correspond to that segment go?

Its loaded at __per_cpu_load but the symbols have addresses starting at 0.

Yes, which leads to an odd-looking ELF file where the Phdrs aren't sorted by virtual address order. I'm wondering what would happen if a bootloader that actually understood ELF files tried to load it as an actual ELF file...

So the question is what kernel virtual address is it being loaded to?
__per_cpu_load is ffffffff808d1000, so ffffffff808d6000 is what you'd
expect...

Correct.

Well, reading back from that address got zeros, so something is amiss.

Hm, but what happens when this gets converted to bzImage? Hm, looks OK, I
think.

BTW, I think __per_cpu_load will cause trouble if you make a relocatable
kernel, being an absolute symbol. But I have relocation off at the moment.

Hmmm.... we could add the relocation offset to __per_cpu_load? __per_cpu_load is used very sparingly. Basically only useful during early boot and when a new per cpu area has to be setup. In that case we want to copy from __per_cpu_load to the newly allocated percpu area.

Yes, it should be fairly easy to manually relocate it by applying the (load - link) offset to it.


J
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/