2000-12-04 21:46:57

by Wakko Warner

[permalink] [raw]
Subject: 2.4.0-test12-pre4 boot failure (better than pre3 and lower)

PCI patches that were added between pre3 and pre4 allow me to boot the
kernel on my noritake alpha. Once it boots, however, it oops's in the
swapper. I've tried a few times in the past to use ksymoops on oops's on
the alpha arch, but it doesn't appear to work. (I'm using the ksymoops
that's part of the debian potato dist)

I have attached the boot log.

Keep my name in the CC

--
Lab tests show that use of micro$oft causes cancer in lab animals


Attachments:
240t12p4-boot (8.57 kB)

2000-12-04 22:14:32

by Keith Owens

[permalink] [raw]
Subject: Re: 2.4.0-test12-pre4 boot failure (better than pre3 and lower)

On Mon, 4 Dec 2000 16:26:42 -0500,
Wakko Warner <[email protected]> wrote:
>PCI patches that were added between pre3 and pre4 allow me to boot the
>kernel on my noritake alpha. Once it boots, however, it oops's in the
>swapper. I've tried a few times in the past to use ksymoops on oops's on
>the alpha arch, but it doesn't appear to work. (I'm using the ksymoops
>that's part of the debian potato dist)

Most architectures dump their code as a string of bytes and print the
code after the registers and trace back. Alpha dumps the code before
the trace and also decodes the instructions which really confuses
ksymoops. Somebody changed 'Trace: ' to 'Trace:' between 2.2 and 2.4
kernels so ksymoops no longer picks the trace data.

Is there any chance of changing arch/alpha/kernel/traps.c to print
registers, trace and _raw_ code, in that order so it is more like other
architectures? You can print the decoded instructions as well (prefix
Decode:, not Code:) as long as the raw code bytes are also available.

In the meantime, this patch to ksymoops 2.3.5 will pick up the change
to the trace lines. It will still complain about a bad code line,
ksymoops is built for raw data.

Index: 6.2/oops.c
--- 6.2/oops.c Mon, 06 Nov 2000 16:34:56 +1100 kaos (ksymoops-2.3/11_oops.c 1.22 644)
+++ 6.2(w)/oops.c Tue, 05 Dec 2000 08:37:38 +1100 kaos (ksymoops-2.3/11_oops.c 1.22 644)
@@ -1081,7 +1081,7 @@ static const char *Oops_trace(const char
RE_COMPILE(&re_Oops_trace,
"^(" /* 1 */
"(Call Trace: )" /* 2 */
- /* alpha */ "|(Trace: )" /* 3 */
+ /* alpha */ "|(Trace:)" /* 3 */
/* various */ "|(" BRACKETED_ADDRESS ")" /* 4,5 */
/* ppc */ "|(Call backtrace:)" /* 6 */
/* ppc, s390 */ "|" UNBRACKETED_ADDRESS /* 7 */
@@ -1464,7 +1464,7 @@ static int Oops_print(const char *line,
* anybody wants to print a VERSION_nnnn line in their Oops, this code
* is ready.
*
- * string 9 is defined if the text is 'Trace: ' (alpha).
+ * string 9 is defined if the text is 'Trace:' (alpha).
* string 10 is defined if the text is 'Call backtrace:' (ppc, i370).
* string 11 is defined if the text is 'bh:' (i386). Stack addresses are
* on the next line. In our typical inconsistent manner, the bh: stack
@@ -1503,7 +1503,7 @@ static int Oops_print(const char *line,
/* various */ "|(Call Trace: )" /* 5 T */
/* various */ "|(" BRACKETED_ADDRESS ")" /* 6,7 T */
/* various */ "|(Version_[0-9]+)" /* 8 */
- /* alpha */ "|(Trace: )" /* 9 T */
+ /* alpha */ "|(Trace:)" /* 9 T */
/* ppc, i370 */ "|(Call backtrace:)" /* 10 T */
/* i386 */ "|(bh:)" /* 11 T */
/* i386 */ "|" REVBRACKETED_ADDRESS /* 12 T */

2000-12-05 02:00:10

by Wakko Warner

[permalink] [raw]
Subject: Re: 2.4.0-test12-pre4 boot failure (better than pre3 and lower)

> Most architectures dump their code as a string of bytes and print the
> code after the registers and trace back. Alpha dumps the code before
> the trace and also decodes the instructions which really confuses
> ksymoops. Somebody changed 'Trace: ' to 'Trace:' between 2.2 and 2.4
> kernels so ksymoops no longer picks the trace data.
>
> Is there any chance of changing arch/alpha/kernel/traps.c to print
> registers, trace and _raw_ code, in that order so it is more like other
> architectures? You can print the decoded instructions as well (prefix
> Decode:, not Code:) as long as the raw code bytes are also available.
>
> In the meantime, this patch to ksymoops 2.3.5 will pick up the change
> to the trace lines. It will still complain about a bad code line,
> ksymoops is built for raw data.

Didn't help much:
[wakko@kakarot:/home/wakko/ksymoops-2.3.4] ./ksymoops -v /usr/src/2.4.0-test12-pre4/vmlinux -K -L -O -m /usr/src/2.4.0-test12-pre4/System.map < /rod/home/wakko/240t12p4-boot
ksymoops 2.3.4 on alpha 2.2.17-LVM-RAID. Options used
-v /usr/src/2.4.0-test12-pre4/vmlinux (specified)
-K (specified)
-L (specified)
-O (specified)
-m /usr/src/2.4.0-test12-pre4/System.map (specified)

Unable to handle kernel paging request at virtual address 0000000000000010
swapper(53): Oops 0
pc = [<fffffc0000323270>] ra = [<fffffc0000323658>] ps = 0000
Using defaults from ksymoops -t elf64-alpha -a alpha
v0 = 0000000000000000 t0 = 0000000000000012 t1 = fffffc0000485748
t2 = fffffc0009f5c560 t3 = fffffc000046cfb0 t4 = 0000000000000000
t5 = fffffffffffffffe t6 = ffffffffffffffff t7 = fffffc0009e00000
s0 = fffffc0000323600 s1 = 0000000000000000 s2 = fffffc0009f5c560
s3 = fffffc0009f5c560 s4 = fffffc0009eb0ac0 s5 = fffffc0009eb0ac0
s6 = fffffc0009eb0ac0
a0 = fffffc00004870c8 a1 = fffffc0009e00050 a2 = fffffc00004871c8
a3 = 0000000000000000 a4 = 0000000000000001 a5 = 0000000000000000
t8 = 0000000000000001 t9 = 0000000000000003 t10= 0000000000000004
t11= 0000000000000010 pv = fffffc0000323600 at = 0000000000000000
gp = fffffc00004a3f58 sp = fffffc0009dffee0
Code: 40203001 addl t0,1,t0
Warning (Oops_code): trailing garbage ignored on Code: line
Text: 'Code: 40203001 addl t0,1,t0'
Garbage: 'l t0,1,t0'
Error (Oops_code_values): invalid value 0xadd in Code line, must be 2, 4, 8 or 16 digits, value ignored

>>PC; fffffc0000323270 <exec_usermodehelper+f0/480> <=====
Code; fffffc0000323270 <exec_usermodehelper+f0/480>
0000000000000000 <_PC>:
Code; fffffc0000323270 <exec_usermodehelper+f0/480>
0: 01 30 20 40 addl t0,0x1,t0

b82b0000 stl_c t0,0(s2)
e42001fe blt t0,.+2044
b57e0148 stq s2,328(sp)
a5480428 ldq s1,1064(t7)
a0220008 ldl t0,8(t1)
a52a0028 ldq s0,40(s1)
Trace:323658 323600
Unable to handle kernel paging request at virtual address 0000000000000010
swapper(54): Oops 0
pc = [<fffffc0000323270>] ra = [<fffffc0000323658>] ps = 0000
v0 = 0000000000000000 t0 = 0000000000000012 t1 = fffffc0000485748
t2 = fffffc0009f5c560 t3 = fffffc000046cfb0 t4 = 0000000000000000
t5 = fffffffffffffffe t6 = ffffffffffffffff t7 = fffffc0009e00000
s0 = fffffc0000323600 s1 = 0000000000000000 s2 = fffffc0009f5c560
s3 = fffffc0009f5c560 s4 = fffffc0009eb0ac0 s5 = fffffc0009eb0ac0
s6 = fffffc0009eb0ac0
a0 = fffffc00004870c8 a1 = fffffc0009e00050 a2 = fffffc00004871c8
a3 = 0000000000000000 a4 = 0000000000000001 a5 = 0000000000000000
t8 = 0000000000000001 t9 = 0000000000000003 t10= 0000000000000004
t11= 0000000000000010 pv = fffffc0000323600 at = 0000000000000000
gp = fffffc00004a3f58 sp = fffffc0009dffee0
Code: 40203001 addl t0,1,t0
Warning (Oops_code): trailing garbage ignored on Code: line
Text: 'Code: 40203001 addl t0,1,t0'
Garbage: 'l t0,1,t0'
Error (Oops_code_values): invalid value 0xadd in Code line, must be 2, 4, 8 or 16 digits, value ignored

Trace; 0000000000323658 Before first symbol
Trace; 0000000000323600 Before first symbol
>>PC; fffffc0000323270 <exec_usermodehelper+f0/480> <=====
Code; fffffc0000323270 <exec_usermodehelper+f0/480>
0000000000000000 <_PC>:
Code; fffffc0000323270 <exec_usermodehelper+f0/480>
0: 01 30 20 40 addl t0,0x1,t0

b82b0000 stl_c t0,0(s2)
e42001fe blt t0,.+2044
b57e0148 stq s2,328(sp)
a5480428 ldq s1,1064(t7)
a0220008 ldl t0,8(t1)
a52a0028 ldq s0,40(s1)
Trace:323658 323600
Unable to handle kernel paging request at virtual address 0000000000000010
swapper(56): Oops 0
pc = [<fffffc0000323270>] ra = [<fffffc0000323658>] ps = 0000
v0 = 0000000000000000 t0 = 0000000000000012 t1 = fffffc0000485748
t2 = fffffc0009f5c560 t3 = fffffc000046cfb0 t4 = 0000000000000000
t5 = fffffffffffffffe t6 = ffffffffffffffff t7 = fffffc0009e00000
s0 = fffffc0000323600 s1 = 0000000000000000 s2 = fffffc0009f5c560
s3 = fffffc0009f5c560 s4 = fffffc0009eb0ac0 s5 = fffffc0009eb0ac0
s6 = fffffc0009eb0ac0
a0 = fffffc00004870c8 a1 = fffffc0009e00050 a2 = fffffc00004871c8
a3 = 0000000000000000 a4 = 0000000000000001 a5 = 0000000000000000
t8 = 0000000000000001 t9 = 0000000000000003 t10= 0000000000000004
t11= 0000000000000010 pv = fffffc0000323600 at = 0000000000000000
gp = fffffc00004a3f58 sp = fffffc0009dffee0
Code: 40203001 addl t0,1,t0
Warning (Oops_code): trailing garbage ignored on Code: line
Text: 'Code: 40203001 addl t0,1,t0'
Garbage: 'l t0,1,t0'
Error (Oops_code_values): invalid value 0xadd in Code line, must be 2, 4, 8 or 16 digits, value ignored

Trace; 0000000000323658 Before first symbol
Trace; 0000000000323600 Before first symbol
>>PC; fffffc0000323270 <exec_usermodehelper+f0/480> <=====
Code; fffffc0000323270 <exec_usermodehelper+f0/480>
0000000000000000 <_PC>:
Code; fffffc0000323270 <exec_usermodehelper+f0/480>
0: 01 30 20 40 addl t0,0x1,t0

b82b0000 stl_c t0,0(s2)
e42001fe blt t0,.+2044
b57e0148 stq s2,328(sp)
a5480428 ldq s1,1064(t7)
a0220008 ldl t0,8(t1)
a52a0028 ldq s0,40(s1)
Trace:323658 323600
Unable to handle kernel paging request at virtual address 0000000000000010
swapper(57): Oops 0
pc = [<fffffc0000323270>] ra = [<fffffc0000323658>] ps = 0000
v0 = 0000000000000000 t0 = 0000000000000012 t1 = fffffc0000485748
t2 = fffffc0009f5c560 t3 = fffffc000046cfb0 t4 = 0000000000000000
t5 = fffffffffffffffe t6 = ffffffffffffffff t7 = fffffc0009e00000
s0 = fffffc0000323600 s1 = 0000000000000000 s2 = fffffc0009f5c560
s3 = fffffc0009f5c560 s4 = fffffc0009eb0ac0 s5 = fffffc0009eb0ac0
s6 = fffffc0009eb0ac0
a0 = fffffc00004870c8 a1 = fffffc0009e00050 a2 = fffffc00004871c8
a3 = 0000000000000000 a4 = 0000000000000001 a5 = 0000000000000000
t8 = 0000000000000001 t9 = 0000000000000003 t10= 0000000000000004
t11= 0000000000000010 pv = fffffc0000323600 at = 0000000000000000
gp = fffffc00004a3f58 sp = fffffc0009dffee0
Code: 40203001 addl t0,1,t0
Warning (Oops_code): trailing garbage ignored on Code: line
Text: 'Code: 40203001 addl t0,1,t0'
Garbage: 'l t0,1,t0'
Error (Oops_code_values): invalid value 0xadd in Code line, must be 2, 4, 8 or 16 digits, value ignored

Trace; 0000000000323658 Before first symbol
Trace; 0000000000323600 Before first symbol
>>PC; fffffc0000323270 <exec_usermodehelper+f0/480> <=====
Code; fffffc0000323270 <exec_usermodehelper+f0/480>
0000000000000000 <_PC>:
Code; fffffc0000323270 <exec_usermodehelper+f0/480>
0: 01 30 20 40 addl t0,0x1,t0

b82b0000 stl_c t0,0(s2)
e42001fe blt t0,.+2044
b57e0148 stq s2,328(sp)
a5480428 ldq s1,1064(t7)
a0220008 ldl t0,8(t1)
a52a0028 ldq s0,40(s1)
Trace:323658 323600
Warning (Oops_read): Code line not seen, dumping what data is available

Trace; 0000000000323658 Before first symbol
Trace; 0000000000323600 Before first symbol


5 warnings and 4 errors issued. Results may not be reliable.
[wakko@kakarot:/home/wakko/ksymoops-2.3.4]

2000-12-05 02:14:30

by Keith Owens

[permalink] [raw]
Subject: Re: 2.4.0-test12-pre4 boot failure (better than pre3 and lower)

On Mon, 4 Dec 2000 20:39:29 -0500,
Wakko Warner <[email protected]> wrote:
>Keith Owens wrote
>> Is there any chance of changing arch/alpha/kernel/traps.c to print
>> registers, trace and _raw_ code, in that order so it is more like other
>> architectures? You can print the decoded instructions as well (prefix
>> Decode:, not Code:) as long as the raw code bytes are also available.
>>
>> In the meantime, this patch to ksymoops 2.3.5 will pick up the change
>> to the trace lines. It will still complain about a bad code line,
>> ksymoops is built for raw data.
>
>Didn't help much:
>Code: 40203001 addl t0,1,t0
>Warning (Oops_code): trailing garbage ignored on Code: line
> Text: 'Code: 40203001 addl t0,1,t0'
>Trace:323658 323600

Because the trace is printed after the code line, it is treated as part
of the next oops, confusing. Even more of a problem, the trace
addresses only print the low word of the address, that should really be

Trace: fffffc0000323658 fffffc0000323600

If somebody would change the Alpha oops text to print the registers,
the trace (with full addresses) and original code, in that order, then
ksymoops would have no problem. I do not want to change ksymoops
because that might affect processing of logs for other architectures.
IMNSHO we need to be more consistent in the way that we print oops
logs, Alpha is quite different from the other architectures.

In the meantime, if you manually edit the oops log to this layout then
you will get a much better listing.

Unable to handle kernel paging request at virtual address 0000000000000010
swapper(53): Oops 0
pc = [<fffffc0000323270>] ra = [<fffffc0000323658>] ps = 0000
Using defaults from ksymoops -t elf64-alpha -a alpha
v0 = 0000000000000000 t0 = 0000000000000012 t1 = fffffc0000485748
t2 = fffffc0009f5c560 t3 = fffffc000046cfb0 t4 = 0000000000000000
t5 = fffffffffffffffe t6 = ffffffffffffffff t7 = fffffc0009e00000
s0 = fffffc0000323600 s1 = 0000000000000000 s2 = fffffc0009f5c560
s3 = fffffc0009f5c560 s4 = fffffc0009eb0ac0 s5 = fffffc0009eb0ac0
s6 = fffffc0009eb0ac0
a0 = fffffc00004870c8 a1 = fffffc0009e00050 a2 = fffffc00004871c8
a3 = 0000000000000000 a4 = 0000000000000001 a5 = 0000000000000000
t8 = 0000000000000001 t9 = 0000000000000003 t10= 0000000000000004
t11= 0000000000000010 pv = fffffc0000323600 at = 0000000000000000
gp = fffffc00004a3f58 sp = fffffc0009dffee0
Trace: fffffc0000323658 fffffc0000323600
Code: 40203001 b82b0000 e42001fe b57e0148 a5480428 a0220008 a52a0028

That last line may be incomplete, it is probably missing the failing
instruction. To build a correct Code: line, extract the hex values for
the code bytes, enclose the failing instruction in < >, without the
leading '*'.