2003-08-21 20:33:10

by Chris Meadors

[permalink] [raw]
Subject: Hang when mounting XFS root in 2.6.0 tests on x86-64

I'm trying to get a 2.6.0-test kernel to boot on my Opteron system. It
has SuSE's 2.4.19-SMP kernel on it now, and it boots with that, mounts
the XFS root just fine. But I build a vanilla 2.6.0-test3 with no
module support, everything included that I would need. The last line
that it prints during boot is the NET4.0

Repeated presses of Alt+SysRq+P seems to show RIP looping in xfs_xlatesb
and xfs_lowbit64.

I've tried -test3-bk9 and also went back to -test2 and -test1.

Earlier when playing with this machine I built 2.6.0-test3 with a 32 bit
only version of gcc, but still optimized for the Opteron. This one had
no problem booting and mounting the XFS root.

This is easy to reproduce, so let me know if more information is needed.

--
Chris


2003-08-21 21:01:00

by Andi Kleen

[permalink] [raw]
Subject: Re: Hang when mounting XFS root in 2.6.0 tests on x86-64

Chris Meadors <[email protected]> writes:

Better report it to [email protected] (cc'ed) too.

> I'm trying to get a 2.6.0-test kernel to boot on my Opteron system. It
> has SuSE's 2.4.19-SMP kernel on it now, and it boots with that, mounts
> the XFS root just fine. But I build a vanilla 2.6.0-test3 with no
> module support, everything included that I would need. The last line
> that it prints during boot is the NET4.0
>
> Repeated presses of Alt+SysRq+P seems to show RIP looping in xfs_xlatesb
> and xfs_lowbit64.
>
> I've tried -test3-bk9 and also went back to -test2 and -test1.
>
> Earlier when playing with this machine I built 2.6.0-test3 with a 32 bit
> only version of gcc, but still optimized for the Opteron. This one had
> no problem booting and mounting the XFS root.
>
> This is easy to reproduce, so let me know if more information is needed.

I test XFS (but not as root) occasionally on x86-64 and seen no problems
so far. I haven't tested it with test2+ yet though.

What compiler are you using?

-Andi

2003-08-22 00:57:07

by Steve Lord

[permalink] [raw]
Subject: Re: Hang when mounting XFS root in 2.6.0 tests on x86-64

On Thu, 2003-08-21 at 16:00, Andi Kleen wrote:
> Chris Meadors <[email protected]> writes:
>
> Better report it to [email protected] (cc'ed) too.
>
> > I'm trying to get a 2.6.0-test kernel to boot on my Opteron system. It
> > has SuSE's 2.4.19-SMP kernel on it now, and it boots with that, mounts
> > the XFS root just fine. But I build a vanilla 2.6.0-test3 with no
> > module support, everything included that I would need. The last line
> > that it prints during boot is the NET4.0
> >
> > Repeated presses of Alt+SysRq+P seems to show RIP looping in xfs_xlatesb
> > and xfs_lowbit64.

Seems to suggest a platform specific problem with this code, Andi,
didn't you write the function behind xfs_lowbit64?

> >
> > I've tried -test3-bk9 and also went back to -test2 and -test1.
> >
> > Earlier when playing with this machine I built 2.6.0-test3 with a 32 bit
> > only version of gcc, but still optimized for the Opteron. This one had
> > no problem booting and mounting the XFS root.
> >
> > This is easy to reproduce, so let me know if more information is needed.
>
> I test XFS (but not as root) occasionally on x86-64 and seen no problems
> so far. I haven't tested it with test2+ yet though.

This code chunk will be the same no matter which filesystem you are
mounting, if the hang happened on an xfs root, I would expect to see
it on any xfs filesystem with that kernel.

>
> What compiler are you using?
>

Some disassembly output and help from someone who can read it might
be in order here.

Steve



2003-08-22 07:32:48

by Seth Mos

[permalink] [raw]
Subject: Re: Hang when mounting XFS root in 2.6.0 tests on x86-64

At 23:00 21-8-2003 +0200, Andi Kleen wrote:
>Chris Meadors <[email protected]> writes:
>
>Better report it to [email protected] (cc'ed) too.
>
> > I'm trying to get a 2.6.0-test kernel to boot on my Opteron system. It
> > has SuSE's 2.4.19-SMP kernel on it now, and it boots with that, mounts
> > the XFS root just fine. But I build a vanilla 2.6.0-test3 with no
> > module support, everything included that I would need. The last line
> > that it prints during boot is the NET4.0

Boot noapic ?

Cheers
--
Seth
It might just be your lucky day, if you only knew.

2003-08-22 09:26:47

by Andi Kleen

[permalink] [raw]
Subject: Re: Hang when mounting XFS root in 2.6.0 tests on x86-64

On 21 Aug 2003 19:55:32 -0500
Steve Lord <[email protected]> wrote:

> On Thu, 2003-08-21 at 16:00, Andi Kleen wrote:
> > Chris Meadors <[email protected]> writes:
> >
> > Better report it to [email protected] (cc'ed) too.
> >
> > > I'm trying to get a 2.6.0-test kernel to boot on my Opteron system. It
> > > has SuSE's 2.4.19-SMP kernel on it now, and it boots with that, mounts
> > > the XFS root just fine. But I build a vanilla 2.6.0-test3 with no
> > > module support, everything included that I would need. The last line
> > > that it prints during boot is the NET4.0
> > >
> > > Repeated presses of Alt+SysRq+P seems to show RIP looping in xfs_xlatesb
> > > and xfs_lowbit64.
>
> Seems to suggest a platform specific problem with this code, Andi,
> didn't you write the function behind xfs_lowbit64?

First at least the comment on top of xfs_lowbit64() is not correct.
ffs() only handles an 32bit argument, not 64bit. Hope that isn't a problem.

Hmm, one difference is that the x86-64 ffs will return 32 on zero, while
i386 returns -1.

Does this patch fix it?

--- linux-2.6.0test3-amd64/include/asm-x86_64/bitops.h-o 2003-07-11 13:34:21.000000000 +0200
+++ linux-2.6.0test3-amd64/include/asm-x86_64/bitops.h 2003-08-22 11:17:53.000000000 +0200
@@ -466,7 +466,7 @@

__asm__("bsfl %1,%0\n\t"
"cmovzl %2,%0"
- : "=r" (r) : "g" (x), "r" (32));
+ : "=r" (r) : "g" (x), "r" (-1));
return r+1;
}


If that doesn't help I would also try it with -O1 and possibly a different compiler
(e.g. gcc 3.2 if you're using 3.3 or the other way round) to rule out a compiler problem

-Andi


2003-08-22 19:46:34

by Chris Meadors

[permalink] [raw]
Subject: Re: Hang when mounting XFS root in 2.6.0 tests on x86-64

On Fri, 2003-08-22 at 05:26, Andi Kleen wrote:

> First at least the comment on top of xfs_lowbit64() is not correct.
> ffs() only handles an 32bit argument, not 64bit. Hope that isn't a problem.
>
> Hmm, one difference is that the x86-64 ffs will return 32 on zero, while
> i386 returns -1.
>
> Does this patch fix it?
>
> --- linux-2.6.0test3-amd64/include/asm-x86_64/bitops.h-o 2003-07-11 13:34:21.000000000 +0200
> +++ linux-2.6.0test3-amd64/include/asm-x86_64/bitops.h 2003-08-22 11:17:53.000000000 +0200
> @@ -466,7 +466,7 @@
>
> __asm__("bsfl %1,%0\n\t"
> "cmovzl %2,%0"
> - : "=r" (r) : "g" (x), "r" (32));
> + : "=r" (r) : "g" (x), "r" (-1));
> return r+1;
> }

Yes, that fixed it. Thanks much.

--
Chris