linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* OOPS: ext3/sparc badness
@ 2002-05-20 12:32 Beezly
  2002-05-20 14:55 ` Beezly
  2002-05-20 21:30 ` David S. Miller
  0 siblings, 2 replies; 11+ messages in thread
From: Beezly @ 2002-05-20 12:32 UTC (permalink / raw)
  To: linux-kernel

I'm having problems with an ext3 filesystem on sparc64 (an Ultra1).

kernel is: 

Linux lemur 2.4.19-pre7 #5 SMP Fri Apr 26 01:30:49 BST 2002 sparc64
unknown

and was compiled with gcc-3.0.4.

The ext3 filesystem is on an md-raid1 set and I get an oops after a
seemingly random amount of time. The kernel was compiled with gcc-3.0.4
because it appears 2.95 does not compile the md code correctly on Sparc
(see http://marc.theaimsgroup.com/?l=linux-raid&m=101981888804890&w=2). 
Here's the oops. I would be very happy to help debugging this problem.

Cheers,

Andrew Beresford

Oops follows...

Unable to handle kernel NULL pointer dereference
tsk->{mm,active_mm}->context = 000000000000070e
tsk->{mm,active_mm}->pgd = fffff8000155e000
              \|/ ____ \|/
              "@'/ .. \`@"
              /_| \__/ |_\
                 \__U_/
mrtg(14342): Oops
CPU[0]: local_irq_count[0] irqs_running[0]
TSTATE: 0000004411009607 TPC: 00000000004a2b3c TNPC: 00000000004a2b40 Y: 00000000    Not tainted
Using defaults from ksymoops -t elf32-sparc -a sparc
g0: fffff8000074bb78 g1: 00000000004a2960 g2: 0000000000000001 g3: fffff800115cd068
g4: fffff80000000000 g5: 0000000000000001 g6: fffff80001564000 g7: 0000000000000001
o0: fffff80001564000 o1: 0000000000000000 o2: 0000000000ff0000 o3: 000000000000ff00
o4: 0000000000000001 o5: 0000000000000001 sp: fffff800015672c1 ret_pc: 00000000004a2b20
l0: fffff800104f0400 l1: fffff8001257fd20 l2: 00000000006d1800 l3: fffff80013e913b0
l4: 000000000000000a l5: fffff80003e0a011 l6: 00000000005f9400 l7: 0000000000649c00
i0: fffffffffffffff3 i1: fffff800104f0400 i2: 00000000005fad40 i3: 00000000004a2b00
i4: 0000000000000005 i5: 0000000000000003 i6: fffff80001567391 i7: 00000000004784d0
Caller[00000000004784d0]
Caller[000000000047904c]
Caller[00000000004799ec]
Caller[00000000004751d0]
Caller[00000000004112f4]
Caller[00000000702b5040]
Instruction DUMP: 94102000  15003fc0  d25fa7e7 <d6024000> 1300003f  a12ae018  92126300  920ac009  940ac00a 


>>PC;  004a2b3c <ext3_lookup+3c/c0>   <=====

>>g0; fffff8000074bb78 <END_OF_CODE+fffff7fffe748eb5/????>
>>g1; 004a2960 <ext3_find_entry+1a0/340>
>>g3; fffff800115cd068 <END_OF_CODE+fffff8000f5ca3a5/????>
>>g4; fffff80000000000 <END_OF_CODE+fffff7fffdffd33d/????>
>>g6; fffff80001564000 <END_OF_CODE+fffff7ffff56133d/????>
>>o0; fffff80001564000 <END_OF_CODE+fffff7ffff56133d/????>
>>o2; 00ff0000 <_end+8b44f8/18c44f8>
>>o3; 0000ff00 Before first symbol
>>sp; fffff800015672c1 <END_OF_CODE+fffff7ffff5645fe/????>
>>ret_pc; 004a2b20 <ext3_lookup+20/c0>
>>l0; fffff800104f0400 <END_OF_CODE+fffff8000e4ed73d/????>
>>l1; fffff8001257fd20 <END_OF_CODE+fffff8001057d05d/????>
>>l2; 006d1800 <cdev_hashtable+370/400>
>>l3; fffff80013e913b0 <END_OF_CODE+fffff80011e8e6ed/????>
>>l5; fffff80003e0a011 <END_OF_CODE+fffff80001e0734e/????>
>>l6; 005f9400 <rdwr_pipe_fops+80/90>
>>l7; 00649c00 <dcache_lock+0/40>
>>i0; fffffffffffffff3 <END_OF_CODE+fffffffffdffd330/????>
>>i1; fffff800104f0400 <END_OF_CODE+fffff8000e4ed73d/????>
>>i2; 005fad40 <ext3_dir_inode_operations+0/80>
>>i3; 004a2b00 <ext3_lookup+0/c0>
>>i6; fffff80001567391 <END_OF_CODE+fffff7ffff5646ce/????>
>>i7; 004784d0 <real_lookup+f0/1a0>

Trace; 004784d0 <real_lookup+f0/1a0>
Trace; 0047904c <link_path_walk+90c/c20>
Trace; 004799ec <__user_walk+4c/80>
Trace; 004751d0 <sys_stat64+10/a0>
Trace; 004112f4 <linux_sparc_syscall32+34/40>
Trace; 702b5040 <END_OF_CODE+6e2b237d/????>

Code;  004a2b30 <ext3_lookup+30/c0>
00000000 <_PC>:
Code;  004a2b30 <ext3_lookup+30/c0>
   0:   94 10 20 00       clr  %o2
Code;  004a2b34 <ext3_lookup+34/c0>
   4:   15 00 3f c0       sethi  %hi(0xff0000), %o2
Code;  004a2b38 <ext3_lookup+38/c0>
   8:   d2 5f a7 e7       unknown
Code;  004a2b3c <ext3_lookup+3c/c0>   <=====
   c:   d6 02 40 00       ld  [ %o1 ], %o3   <=====
Code;  004a2b40 <ext3_lookup+40/c0>
  10:   13 00 00 3f       sethi  %hi(0xfc00), %o1
Code;  004a2b44 <ext3_lookup+44/c0>
  14:   a1 2a e0 18       sll  %o3, 0x18, %l0
Code;  004a2b48 <ext3_lookup+48/c0>
  18:   92 12 63 00       or  %o1, 0x300, %o1
Code;  004a2b4c <ext3_lookup+4c/c0>
  1c:   92 0a c0 09       and  %o3, %o1, %o1
Code;  004a2b50 <ext3_lookup+50/c0>
  20:   94 0a c0 0a       and  %o3, %o2, %o2


1 warning issued.  Results may not be reliable.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: OOPS: ext3/sparc badness
  2002-05-20 12:32 OOPS: ext3/sparc badness Beezly
@ 2002-05-20 14:55 ` Beezly
  2002-05-20 21:30 ` David S. Miller
  1 sibling, 0 replies; 11+ messages in thread
From: Beezly @ 2002-05-20 14:55 UTC (permalink / raw)
  To: Beezly; +Cc: linux-kernel

Talking to myself :), but...

On Mon, 2002-05-20 at 13:32, Beezly wrote:
> o0: fffff80001564000 o1: 0000000000000000 o2: 0000000000ff0000 o3: 000000000000ff00

> Code;  004a2b30 <ext3_lookup+30/c0>
> 00000000 <_PC>:
> Code;  004a2b30 <ext3_lookup+30/c0>
>    0:   94 10 20 00       clr  %o2
> Code;  004a2b34 <ext3_lookup+34/c0>
>    4:   15 00 3f c0       sethi  %hi(0xff0000), %o2
> Code;  004a2b38 <ext3_lookup+38/c0>
>    8:   d2 5f a7 e7       unknown

This is:

	ldx [%fp+0x7e7],%o1

> Code;  004a2b3c <ext3_lookup+3c/c0>   <=====
>    c:   d6 02 40 00       ld  [ %o1 ], %o3   <=====

gdb says;

Dump of assembler code for function ext3_lookup:
0x4a2b00 <ext3_lookup>:	save  %sp, -208, %sp
0x4a2b04 <ext3_lookup+4>:	mov  %i0, %l1
0x4a2b08 <ext3_lookup+8>:	add  %fp, 0x7e7, %o1
0x4a2b0c <ext3_lookup+12>:	ld  [ %i1 + 0x78 ], %o2
0x4a2b10 <ext3_lookup+16>:	mov  %i1, %o0
0x4a2b14 <ext3_lookup+20>:	cmp  %o2, 0xff
0x4a2b18 <ext3_lookup+24>:	bgu  %icc, 0x4a2bac <ext3_lookup+172>
0x4a2b1c <ext3_lookup+28>:	mov  -63, %i0
0x4a2b20 <ext3_lookup+32>:	call  0x4a27c0 <ext3_find_entry>
0x4a2b24 <ext3_lookup+36>:	mov  -13, %i0
0x4a2b28 <ext3_lookup+40>:	mov  %o0, %o1
0x4a2b2c <ext3_lookup+44>:	brz,pn   %o1, 0x4a2b94 <ext3_lookup+148>
0x4a2b30 <ext3_lookup+48>:	clr  %o2
0x4a2b34 <ext3_lookup+52>:	sethi  %hi(0xff0000), %o2
0x4a2b38 <ext3_lookup+56>:	ldx  [ %fp + 0x7e7 ], %o1
0x4a2b3c <ext3_lookup+60>:	ld  [ %o1 ], %o3
0x4a2b40 <ext3_lookup+64>:	sethi  %hi(0xfc00), %o1
0x4a2b44 <ext3_lookup+68>:	sll  %o3, 0x18, %l0

we are trying to load **res_dir for ext3_find_entry. Unfortunately, it appears that either *res_dir, or **res_dir is 0 (as %o1 ends up being 0's):( 

Beezly


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: OOPS: ext3/sparc badness
  2002-05-20 12:32 OOPS: ext3/sparc badness Beezly
  2002-05-20 14:55 ` Beezly
@ 2002-05-20 21:30 ` David S. Miller
  2002-05-20 21:52   ` Christoph Hellwig
  1 sibling, 1 reply; 11+ messages in thread
From: David S. Miller @ 2002-05-20 21:30 UTC (permalink / raw)
  To: beezly; +Cc: linux-kernel

   From: Beezly <beezly@beezly.org.uk>
   Date: 20 May 2002 13:32:00 +0100

   I'm having problems with an ext3 filesystem on sparc64 (an Ultra1).
   
   kernel is: 
   
   Linux lemur 2.4.19-pre7 #5 SMP Fri Apr 26 01:30:49 BST 2002 sparc64
   unknown
   
   and was compiled with gcc-3.0.4.
   
Unsupported compiler for sparc64 kernels.  Your OOPS report is going
to be ignored.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: OOPS: ext3/sparc badness
  2002-05-20 21:30 ` David S. Miller
@ 2002-05-20 21:52   ` Christoph Hellwig
  2002-05-20 22:06     ` David S. Miller
  0 siblings, 1 reply; 11+ messages in thread
From: Christoph Hellwig @ 2002-05-20 21:52 UTC (permalink / raw)
  To: David S. Miller; +Cc: beezly, linux-kernel

On Mon, May 20, 2002 at 02:30:18PM -0700, David S. Miller wrote:
> Unsupported compiler for sparc64 kernels.  Your OOPS report is going
> to be ignored.

Btw, is gcc 3.1 supported now or only the magic egcs variant?


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: OOPS: ext3/sparc badness
  2002-05-20 21:52   ` Christoph Hellwig
@ 2002-05-20 22:06     ` David S. Miller
  2002-05-21  8:30       ` Andrew Beresford
  0 siblings, 1 reply; 11+ messages in thread
From: David S. Miller @ 2002-05-20 22:06 UTC (permalink / raw)
  To: hch; +Cc: beezly, linux-kernel

   From: Christoph Hellwig <hch@infradead.org>
   Date: Mon, 20 May 2002 22:52:06 +0100

   On Mon, May 20, 2002 at 02:30:18PM -0700, David S. Miller wrote:
   > Unsupported compiler for sparc64 kernels.  Your OOPS report is going
   > to be ignored.
   
   Btw, is gcc 3.1 supported now or only the magic egcs variant?
   
gcc-3.1 should work properly, I've used it but I'm hesitant to %100
bless it just yet. :-)

I would prefer to receive bug reports only against the sparc64-egcs
compiler still.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: OOPS: ext3/sparc badness
  2002-05-21  8:30       ` Andrew Beresford
@ 2002-05-21  8:18         ` David S. Miller
  2002-05-21  8:38           ` Andrew Beresford
  0 siblings, 1 reply; 11+ messages in thread
From: David S. Miller @ 2002-05-21  8:18 UTC (permalink / raw)
  To: beezly; +Cc: hch, linux-kernel

   From: Andrew Beresford <beezly@beezly.org.uk>
   Date: Tue, 21 May 2002 09:30:04 +0100
   
   Understood, but the reason I was using 3.0.4 was because sparc64-egcs
   has been suspected of generating some bad code in the md.c (see the link
   in the previous e-mail I sent).

I don't think so... but please repost the link as I've deleted all of
your emails.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: OOPS: ext3/sparc badness
  2002-05-20 22:06     ` David S. Miller
@ 2002-05-21  8:30       ` Andrew Beresford
  2002-05-21  8:18         ` David S. Miller
  0 siblings, 1 reply; 11+ messages in thread
From: Andrew Beresford @ 2002-05-21  8:30 UTC (permalink / raw)
  To: David S. Miller; +Cc: hch, linux-kernel

David,

On Mon, May 20, 2002 at 03:06:28PM -0700, David S. Miller wrote:
>    From: Christoph Hellwig <hch@infradead.org>
>    Date: Mon, 20 May 2002 22:52:06 +0100
> 
>    On Mon, May 20, 2002 at 02:30:18PM -0700, David S. Miller wrote:
>    > Unsupported compiler for sparc64 kernels.  Your OOPS report is going
>    > to be ignored.

Understood, but the reason I was using 3.0.4 was because sparc64-egcs
has been suspected of generating some bad code in the md.c (see the link
in the previous e-mail I sent).

>    Btw, is gcc 3.1 supported now or only the magic egcs variant?
>    
> gcc-3.1 should work properly, I've used it but I'm hesitant to %100
> bless it just yet. :-)
> 
> I would prefer to receive bug reports only against the sparc64-egcs
> compiler still.

I will give gcc-3.1 a try.

Cheers,

Beezly

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: OOPS: ext3/sparc badness
  2002-05-21  8:38           ` Andrew Beresford
@ 2002-05-21  8:34             ` David S. Miller
  2002-05-21  9:08               ` Andrew Beresford
  2002-08-31  0:18             ` David S. Miller
  1 sibling, 1 reply; 11+ messages in thread
From: David S. Miller @ 2002-05-21  8:34 UTC (permalink / raw)
  To: beezly; +Cc: hch, linux-kernel

   From: Andrew Beresford <beezly@beezly.org.uk>
   Date: Tue, 21 May 2002 09:38:05 +0100

   The link is;
   
   http://marc.theaimsgroup.com/?l=linux-raid&m=101981888804890&w=2
   
Ok, we need to find some workaround at least for 2.4.x as this
is the compiler most people on sparc64 are using.

I'll play with it a bit...

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: OOPS: ext3/sparc badness
  2002-05-21  8:18         ` David S. Miller
@ 2002-05-21  8:38           ` Andrew Beresford
  2002-05-21  8:34             ` David S. Miller
  2002-08-31  0:18             ` David S. Miller
  0 siblings, 2 replies; 11+ messages in thread
From: Andrew Beresford @ 2002-05-21  8:38 UTC (permalink / raw)
  To: David S. Miller; +Cc: hch, linux-kernel

Hi David,

On Tue, May 21, 2002 at 01:18:58AM -0700, David S. Miller wrote:
> I don't think so... but please repost the link as I've deleted all of
> your emails.

The link is;

http://marc.theaimsgroup.com/?l=linux-raid&m=101981888804890&w=2

Cheers,

Beezly


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: OOPS: ext3/sparc badness
  2002-05-21  8:34             ` David S. Miller
@ 2002-05-21  9:08               ` Andrew Beresford
  0 siblings, 0 replies; 11+ messages in thread
From: Andrew Beresford @ 2002-05-21  9:08 UTC (permalink / raw)
  To: David S. Miller; +Cc: hch, linux-kernel

Hi David,

On Tue, May 21, 2002 at 01:34:44AM -0700, David S. Miller wrote:
> Ok, we need to find some workaround at least for 2.4.x as this
> is the compiler most people on sparc64 are using.
> 
> I'll play with it a bit...

Great :) Please let me know if I can help with anything.

Cheers,

Beezly

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: OOPS: ext3/sparc badness
  2002-05-21  8:38           ` Andrew Beresford
  2002-05-21  8:34             ` David S. Miller
@ 2002-08-31  0:18             ` David S. Miller
  1 sibling, 0 replies; 11+ messages in thread
From: David S. Miller @ 2002-08-31  0:18 UTC (permalink / raw)
  To: beezly; +Cc: hch, neilb, bcollins, linux-kernel, linux-raid

   From: Andrew Beresford <beezly@beezly.org.uk>
   Date: Tue, 21 May 2002 09:38:05 +0100

   On Tue, May 21, 2002 at 01:18:58AM -0700, David S. Miller wrote:
   > I don't think so... but please repost the link as I've deleted all of
   > your emails.
   
   The link is;
   
   http://marc.theaimsgroup.com/?l=linux-raid&m=101981888804890&w=2

To recap, the compiler used to build sparc64 kernels miscompiles
drivers/md/raid1.c:raid1_read_balance()

The following appears to be a good workaround for this
bug, Neil could you put this into your tree and would you
mind if I sent this to Marcelo for 2.4.20-preX?

--- drivers/md/raid1.c.~1~	Fri Aug 30 17:03:02 2002
+++ drivers/md/raid1.c	Fri Aug 30 17:17:46 2002
@@ -23,6 +23,7 @@
  */
 
 #include <linux/module.h>
+#include <linux/config.h>
 #include <linux/slab.h>
 #include <linux/raid/raid1.h>
 #include <asm/atomic.h>
@@ -522,6 +523,10 @@
 	if (conf->sect_count >= conf->mirrors[new_disk].sect_limit) {
 		conf->sect_count = 0;
 
+#if defined(CONFIG_SPARC64) && (__GNUC__ == 2) && (__GNUC_MINOR__ == 92)
+		/* Work around a compiler bug in egcs-2.92.11 19980921 */
+		new_disk = *(volatile int *)&new_disk;
+#endif
 		do {
 			if (new_disk<=0)
 				new_disk = conf->raid_disks;

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2002-08-31  0:20 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-05-20 12:32 OOPS: ext3/sparc badness Beezly
2002-05-20 14:55 ` Beezly
2002-05-20 21:30 ` David S. Miller
2002-05-20 21:52   ` Christoph Hellwig
2002-05-20 22:06     ` David S. Miller
2002-05-21  8:30       ` Andrew Beresford
2002-05-21  8:18         ` David S. Miller
2002-05-21  8:38           ` Andrew Beresford
2002-05-21  8:34             ` David S. Miller
2002-05-21  9:08               ` Andrew Beresford
2002-08-31  0:18             ` David S. Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).