Re: [Fedora-ia64-list] kernel 2.6.16-1.2097_FC6 unbootable on Itanium

Jes Sorensen
2006-03-30T12:29:15Z

>>>>> "James" = James Bottomley <James.Bottomley@SteelEye.com> writes:

James> No, I can confirm that reverting

James> [IA64] MCA Recovery: kernel context recovery table

James> fixes my boot problems.

James> I actually got slightly further than Jes with the analysis.
James> The problem occurs because something in this changeset makes
James> code that dynamically loads the TLS libraries segfault. If you
James> look, Jes, you'll find init is continually segfaulting and
James> respawning.

Yay!

I am not the only one seeing this! I am not insane!

I bet that if you revert the patch above but then add these two lines
to arch/ia64/kernel/gate.S you'll see the same failure:

.section "__mca_table", "a"
.previous

Tracked it down further. If I take the gate.o file from a working
kernel and copy it into the broken tree and run make again, the
resulting kernel boots.

I compared the code between a working and a broken gate.o with objdump
and it's identical. However the good file is 3552 bytes whereas the
broken one is 3648.

objdump -h reveals one extra empty section which seems to be what
makes all the difference. The below output is from a broken gate.o,
the only difference I can find comparing it to the good one is that
idx 4 is missing in the good one and the following ones are
renamed. Do we have some strange restrictions in the linker on the
number of sections it can handle?

Cheers,
Jes

gate.o: file format elf64-ia64-little

Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000003b0 0000000000000000 0000000000000000 00000040 2**5
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000000 0000000000000000 0000000000000000 000003f0 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000000 0000000000000000 0000000000000000 000003f0 2**0
ALLOC
3 __ex_table 00000000 0000000000000000 0000000000000000 000003f0 2**0
CONTENTS, ALLOC, LOAD, READONLY, DATA
4 __mca_table 00000000 0000000000000000 0000000000000000 000003f0 2**0
CONTENTS, ALLOC, LOAD, READONLY, DATA
5 .data.patch.vtop 00000000 0000000000000000 0000000000000000 000003f0 2**0
CONTENTS, ALLOC, LOAD, DATA
6 .data.patch.mckinley_e9 00000004 0000000000000000 0000000000000000 000003f0 2**2
CONTENTS, ALLOC, LOAD, RELOC, DATA
7 .data.patch.fsyscall_table 00000004 0000000000000000 0000000000000000 000003f4 2**2
CONTENTS, ALLOC, LOAD, RELOC, DATA
8 .data.patch.brl_fsys_bubble_down 00000004 0000000000000000 0000000000000000 000003f8 2**2
CONTENTS, ALLOC, LOAD, RELOC, DATA
9 .IA_64.unwind_info 000000b8 0000000000000000 0000000000000000 00000400 2**3
CONTENTS, ALLOC, LOAD, READONLY, DATA
10 .IA_64.unwind 00000048 0000000000000000 0000000000000000 000004b8 2**3
CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA