> You really changed long to int? In this case, you may only have introduced a
> bigger overflow.
Yes, I'm aware of that, I just wanted to try how i386 variant behaves.
btw I just tried gdb to find out why i386 UML on x86_64 host hangs just
at the beginning, and it turned out to be same problem with
__const_udelay. well, it's not a big surprise now I guess.
So if You need further testing, please feel free to post patches etc ;)
regards
nik.
On Wed, 2006-10-18 at 01:39 +0200, Blaisorblade wrote:
> On Tuesday 17 October 2006 22:21, Nikola Ciprich wrote:
> You really changed long to int? In this case, you may only have introduced a
> bigger overflow.
> Jeff, I remember vaguely a recent (>=2.6.17) patch about udelay fixing a
> misbehaviour, would you please complete my recollection and verify the
> interaction with this?
>
> Also, since we take __const_udelay and __udelay() from asm/arch/delay.h:
> (for i386):
> #define udelay(n) (__builtin_constant_p(n) ? \
> ((n) > 20000 ? __bad_udelay() : __const_udelay((n) * 0x10c6ul)) : \
> __udelay(n))
>
> #define ndelay(n) (__builtin_constant_p(n) ? \
> ((n) > 20000 ? __bad_ndelay() : __const_udelay((n) * 5ul)) : \
> __ndelay(n))
>
> We then do _not_ take these definitions:
> arch/i386/lib/delay.c:
>
> void __udelay(unsigned long usecs)
> {
> __const_udelay(usecs * 0x000010c7); /* 2**32 / 1000000 (rounded up) */
> }
>
> void __ndelay(unsigned long nsecs)
> {
> __const_udelay(nsecs * 0x00005); /* 2**32 / 1000000000 (rounded up) */
> }
>
> instead for us __udelay and __const_udelay match, which is not likely to help
> at all. Their code is correct because the asm "mull" call divides the
> obtained product by 2^32 by throwing away the 32 low bits (i.e. EAX, since
> the mull result is in EDX:EAX), and the meaning of this is to do the division
> only at the very end (to improve accuracy).
>
> This bug is here at least since 2.6.16.
> Suggested solution:
> 1) have _our own_ delay.h, to avoid depending on subarchs' changes
> 2) first avoid playing so complex tricks, then maybe copy their
> implementation
> (note it is slightly different already among x86 and x86_64).
>
> > But I'm sure this is not the right solution, so what
> > do You guys suggest? And also is really i386 variant safely implemented?
>
> > thanks a lot!
> > nik.
>
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
User-mode-linux-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel