* [PATCH] fix do_xor_speed 64-bit devision issue on 32-bits arch
@ 2011-12-07 14:08 Benny Halevy
2011-12-23 6:41 ` fanchaoting
0 siblings, 1 reply; 8+ messages in thread
From: Benny Halevy @ 2011-12-07 14:08 UTC (permalink / raw)
To: linux-nfs; +Cc: Benny Halevy
I am trying to build a pnfs client on a 32 bit system and the
pnfs-latest kernel fails to compile. I get the following error
> Building modules, stage 2.
> TEST posttest
> MODPOST 2046 modules
>ERROR: "__udivdi3" [crypto/xor.ko] undefined!
>make[1]: *** [__modpost] Error 1
>make: *** [modules] Error 2
>make: *** Waiting for unfinished jobs....
>Succeed: decoded and checked 1244492 instructions
Reported-by: Rita Sequeira <rita.prajval@gmail.com>
Signed-off-by: Benny Halevy <bhalevy@tonian.com>
---
untested patch yet...
crypto/xor.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/crypto/xor.c b/crypto/xor.c
index 65433f5..2151ded 100644
--- a/crypto/xor.c
+++ b/crypto/xor.c
@@ -95,7 +95,8 @@
ns_end -= ns_begin;
if (ns_end > 0)
- speed = BENCH_SIZE / 1024 * count * NSEC_PER_SEC / ns_end;
+ speed = BENCH_SIZE / 1024 * count *
+ (unsigned)(NSEC_PER_SEC / ns_end);
else
speed = 17;
tmpl->speed = speed;
--
1.7.6
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] fix do_xor_speed 64-bit devision issue on 32-bits arch
2011-12-07 14:08 [PATCH] fix do_xor_speed 64-bit devision issue on 32-bits arch Benny Halevy
@ 2011-12-23 6:41 ` fanchaoting
2011-12-23 13:25 ` Jim Rees
0 siblings, 1 reply; 8+ messages in thread
From: fanchaoting @ 2011-12-23 6:41 UTC (permalink / raw)
To: Benny Halevy; +Cc: linux-nfs
Benny Halevy 写道:
> I am trying to build a pnfs client on a 32 bit system and the
> pnfs-latest kernel fails to compile. I get the following error
>
> > Building modules, stage 2.
> > TEST posttest
> > MODPOST 2046 modules
> >ERROR: "__udivdi3" [crypto/xor.ko] undefined!
> >make[1]: *** [__modpost] Error 1
> >make: *** [modules] Error 2
> >make: *** Waiting for unfinished jobs....
> >Succeed: decoded and checked 1244492 instructions
>
> Reported-by: Rita Sequeira <rita.prajval@gmail.com>
> Signed-off-by: Benny Halevy <bhalevy@tonian.com>
> ---
>
> untested patch yet...
>
> crypto/xor.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/crypto/xor.c b/crypto/xor.c
> index 65433f5..2151ded 100644
> --- a/crypto/xor.c
> +++ b/crypto/xor.c
> @@ -95,7 +95,8 @@
>
> ns_end -= ns_begin;
> if (ns_end > 0)
> - speed = BENCH_SIZE / 1024 * count * NSEC_PER_SEC / ns_end;
> + speed = BENCH_SIZE / 1024 * count *
> + (unsigned)(NSEC_PER_SEC / ns_end);
> else
> speed = 17;
> tmpl->speed = speed;
Hi,I also meet this problem ,but when i use you patch ,i can't solve this problem.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] fix do_xor_speed 64-bit devision issue on 32-bits arch
2011-12-23 6:41 ` fanchaoting
@ 2011-12-23 13:25 ` Jim Rees
2011-12-25 5:31 ` Benny Halevy
0 siblings, 1 reply; 8+ messages in thread
From: Jim Rees @ 2011-12-23 13:25 UTC (permalink / raw)
To: fanchaoting; +Cc: Benny Halevy, linux-nfs
fanchaoting wrote:
Benny Halevy 写道:
> I am trying to build a pnfs client on a 32 bit system and the
> pnfs-latest kernel fails to compile. I get the following error
>
> > Building modules, stage 2.
> > TEST posttest
> > MODPOST 2046 modules
> >ERROR: "__udivdi3" [crypto/xor.ko] undefined!
> >make[1]: *** [__modpost] Error 1
> >make: *** [modules] Error 2
> >make: *** Waiting for unfinished jobs....
> >Succeed: decoded and checked 1244492 instructions
>
> Reported-by: Rita Sequeira <rita.prajval@gmail.com>
> Signed-off-by: Benny Halevy <bhalevy@tonian.com>
> ---
>
> untested patch yet...
>
> crypto/xor.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/crypto/xor.c b/crypto/xor.c
> index 65433f5..2151ded 100644
> --- a/crypto/xor.c
> +++ b/crypto/xor.c
> @@ -95,7 +95,8 @@
>
> ns_end -= ns_begin;
> if (ns_end > 0)
> - speed = BENCH_SIZE / 1024 * count * NSEC_PER_SEC / ns_end;
> + speed = BENCH_SIZE / 1024 * count *
> + (unsigned)(NSEC_PER_SEC / ns_end);
> else
> speed = 17;
> tmpl->speed = speed;
Hi,I also meet this problem ,but when i use you patch ,i can't solve this
problem.
Maybe something like this?
speed = do_div(BENCH_SIZE, 1024) * count * do_div(NSEC_PER_SEC, ns_end);
This might not be exactly right because it changes the operator precedence,
but it should eliminate the calls to __udivdi3.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] fix do_xor_speed 64-bit devision issue on 32-bits arch
2011-12-23 13:25 ` Jim Rees
@ 2011-12-25 5:31 ` Benny Halevy
2011-12-25 13:54 ` Jim Rees
2011-12-25 15:25 ` Boaz Harrosh
0 siblings, 2 replies; 8+ messages in thread
From: Benny Halevy @ 2011-12-25 5:31 UTC (permalink / raw)
To: Boaz Harrosh; +Cc: Jim Rees, fanchaoting, Benny Halevy, linux-nfs
On 2011-12-23 15:25, Jim Rees wrote:
> fanchaoting wrote:
>
> Benny Halevy 写道:
> > I am trying to build a pnfs client on a 32 bit system and the
> > pnfs-latest kernel fails to compile. I get the following error
> >
> > > Building modules, stage 2.
> > > TEST posttest
> > > MODPOST 2046 modules
> > >ERROR: "__udivdi3" [crypto/xor.ko] undefined!
> > >make[1]: *** [__modpost] Error 1
> > >make: *** [modules] Error 2
> > >make: *** Waiting for unfinished jobs....
> > >Succeed: decoded and checked 1244492 instructions
> >
> > Reported-by: Rita Sequeira <rita.prajval@gmail.com>
> > Signed-off-by: Benny Halevy <bhalevy@tonian.com>
> > ---
> >
> > untested patch yet...
> >
> > crypto/xor.c | 3 ++-
> > 1 files changed, 2 insertions(+), 1 deletions(-)
> >
> > diff --git a/crypto/xor.c b/crypto/xor.c
> > index 65433f5..2151ded 100644
> > --- a/crypto/xor.c
> > +++ b/crypto/xor.c
> > @@ -95,7 +95,8 @@
> >
> > ns_end -= ns_begin;
> > if (ns_end > 0)
> > - speed = BENCH_SIZE / 1024 * count * NSEC_PER_SEC / ns_end;
> > + speed = BENCH_SIZE / 1024 * count *
> > + (unsigned)(NSEC_PER_SEC / ns_end);
> > else
> > speed = 17;
> > tmpl->speed = speed;
>
> Hi,I also meet this problem ,but when i use you patch ,i can't solve this
> problem.
>
> Maybe something like this?
>
> speed = do_div(BENCH_SIZE, 1024) * count * do_div(NSEC_PER_SEC, ns_end);
>
> This might not be exactly right because it changes the operator precedence,
> but it should eliminate the calls to __udivdi3.
Hmm, you mean execution order? (which you do not)
C (and fortunately gcc too :) treats multiplication and division with the
same priority and executes them from left to right...
Boaz, please ack...
Benny
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] fix do_xor_speed 64-bit devision issue on 32-bits arch
2011-12-25 5:31 ` Benny Halevy
@ 2011-12-25 13:54 ` Jim Rees
2011-12-25 15:25 ` Boaz Harrosh
1 sibling, 0 replies; 8+ messages in thread
From: Jim Rees @ 2011-12-25 13:54 UTC (permalink / raw)
To: Benny Halevy; +Cc: Boaz Harrosh, fanchaoting, Benny Halevy, linux-nfs
Benny Halevy wrote:
> speed = do_div(BENCH_SIZE, 1024) * count * do_div(NSEC_PER_SEC, ns_end);
>
> This might not be exactly right because it changes the operator precedence,
> but it should eliminate the calls to __udivdi3.
Hmm, you mean execution order? (which you do not)
C (and fortunately gcc too :) treats multiplication and division with the
same priority and executes them from left to right...
Yes, execution order. The original code executes left-to-right, my code
executes the divisions first.
But I wouldn't blindly apply this without understanding what's going on
here. I thought the -fno-tree-scev-cprop compiler flag was supposed to
emit division code instead of calling into a library.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] fix do_xor_speed 64-bit devision issue on 32-bits arch
2011-12-25 5:31 ` Benny Halevy
2011-12-25 13:54 ` Jim Rees
@ 2011-12-25 15:25 ` Boaz Harrosh
2011-12-25 15:57 ` Jim Rees
2011-12-26 7:11 ` Benny Halevy
1 sibling, 2 replies; 8+ messages in thread
From: Boaz Harrosh @ 2011-12-25 15:25 UTC (permalink / raw)
To: Benny Halevy; +Cc: Jim Rees, fanchaoting, Benny Halevy, linux-nfs
On 12/25/2011 07:31 AM, Benny Halevy wrote:
> On 2011-12-23 15:25, Jim Rees wrote:
>> fanchaoting wrote:
>>
>> Benny Halevy 写道:
>> > I am trying to build a pnfs client on a 32 bit system and the
>> > pnfs-latest kernel fails to compile. I get the following error
>> >
>> > > Building modules, stage 2.
>> > > TEST posttest
>> > > MODPOST 2046 modules
>> > >ERROR: "__udivdi3" [crypto/xor.ko] undefined!
>> > >make[1]: *** [__modpost] Error 1
>> > >make: *** [modules] Error 2
>> > >make: *** Waiting for unfinished jobs....
>> > >Succeed: decoded and checked 1244492 instructions
>> >
>> > Reported-by: Rita Sequeira <rita.prajval@gmail.com>
>> > Signed-off-by: Benny Halevy <bhalevy@tonian.com>
>> > ---
>> >
>> > untested patch yet...
>> >
>> > crypto/xor.c | 3 ++-
>> > 1 files changed, 2 insertions(+), 1 deletions(-)
>> >
>> > diff --git a/crypto/xor.c b/crypto/xor.c
>> > index 65433f5..2151ded 100644
>> > --- a/crypto/xor.c
>> > +++ b/crypto/xor.c
>> > @@ -95,7 +95,8 @@
>> >
>> > ns_end -= ns_begin;
>> > if (ns_end > 0)
>> > - speed = BENCH_SIZE / 1024 * count * NSEC_PER_SEC / ns_end;
>> > + speed = BENCH_SIZE / 1024 * count *
>> > + (unsigned)(NSEC_PER_SEC / ns_end);
>> > else
>> > speed = 17;
>> > tmpl->speed = speed;
>>
>> Hi,I also meet this problem ,but when i use you patch ,i can't solve this
>> problem.
>>
>> Maybe something like this?
>>
>> speed = do_div(BENCH_SIZE, 1024) * count * do_div(NSEC_PER_SEC, ns_end);
>>
>> This might not be exactly right because it changes the operator precedence,
>> but it should eliminate the calls to __udivdi3.
>
> Hmm, you mean execution order? (which you do not)
> C (and fortunately gcc too :) treats multiplication and division with the
> same priority and executes them from left to right...
>
> Boaz, please ack...
>
Hi
Please trash this patch for now. I will carry it out of tree for my use.
(Looks I'm the only one who's using UML and the XOR engine)
By next Connectathon I'll have a better patch sent to the right
people.
Thanks for your efforts, and sorry for the grief it caused.
Boaz
> Benny
>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] fix do_xor_speed 64-bit devision issue on 32-bits arch
2011-12-25 15:25 ` Boaz Harrosh
@ 2011-12-25 15:57 ` Jim Rees
2011-12-26 7:11 ` Benny Halevy
1 sibling, 0 replies; 8+ messages in thread
From: Jim Rees @ 2011-12-25 15:57 UTC (permalink / raw)
To: Boaz Harrosh; +Cc: Benny Halevy, fanchaoting, Benny Halevy, linux-nfs
Boaz Harrosh wrote:
Please trash this patch for now. I will carry it out of tree for my use.
(Looks I'm the only one who's using UML and the XOR engine)
UML would explain it. Regular kernels should be ok.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] fix do_xor_speed 64-bit devision issue on 32-bits arch
2011-12-25 15:25 ` Boaz Harrosh
2011-12-25 15:57 ` Jim Rees
@ 2011-12-26 7:11 ` Benny Halevy
1 sibling, 0 replies; 8+ messages in thread
From: Benny Halevy @ 2011-12-26 7:11 UTC (permalink / raw)
To: Boaz Harrosh; +Cc: Jim Rees, fanchaoting, linux-nfs
No problem. I'll revert it then.
Thanks,
Benny
On Sun, Dec 25, 2011 at 5:25 PM, Boaz Harrosh <bharrosh@panasas.com> wrote:
> On 12/25/2011 07:31 AM, Benny Halevy wrote:
>> On 2011-12-23 15:25, Jim Rees wrote:
>>> fanchaoting wrote:
>>>
>>> Benny Halevy 写道:
>>> > I am trying to build a pnfs client on a 32 bit system and the
>>> > pnfs-latest kernel fails to compile. I get the following error
>>> >
>>> > > Building modules, stage 2.
>>> > > TEST posttest
>>> > > MODPOST 2046 modules
>>> > >ERROR: "__udivdi3" [crypto/xor.ko] undefined!
>>> > >make[1]: *** [__modpost] Error 1
>>> > >make: *** [modules] Error 2
>>> > >make: *** Waiting for unfinished jobs....
>>> > >Succeed: decoded and checked 1244492 instructions
>>> >
>>> > Reported-by: Rita Sequeira <rita.prajval@gmail.com>
>>> > Signed-off-by: Benny Halevy <bhalevy@tonian.com>
>>> > ---
>>> >
>>> > untested patch yet...
>>> >
>>> > crypto/xor.c | 3 ++-
>>> > 1 files changed, 2 insertions(+), 1 deletions(-)
>>> >
>>> > diff --git a/crypto/xor.c b/crypto/xor.c
>>> > index 65433f5..2151ded 100644
>>> > --- a/crypto/xor.c
>>> > +++ b/crypto/xor.c
>>> > @@ -95,7 +95,8 @@
>>> >
>>> > ns_end -= ns_begin;
>>> > if (ns_end > 0)
>>> > - speed = BENCH_SIZE / 1024 * count * NSEC_PER_SEC / ns_end;
>>> > + speed = BENCH_SIZE / 1024 * count *
>>> > + (unsigned)(NSEC_PER_SEC / ns_end);
>>> > else
>>> > speed = 17;
>>> > tmpl->speed = speed;
>>>
>>> Hi,I also meet this problem ,but when i use you patch ,i can't solve this
>>> problem.
>>>
>>> Maybe something like this?
>>>
>>> speed = do_div(BENCH_SIZE, 1024) * count * do_div(NSEC_PER_SEC, ns_end);
>>>
>>> This might not be exactly right because it changes the operator precedence,
>>> but it should eliminate the calls to __udivdi3.
>>
>> Hmm, you mean execution order? (which you do not)
>> C (and fortunately gcc too :) treats multiplication and division with the
>> same priority and executes them from left to right...
>>
>> Boaz, please ack...
>>
>
> Hi
>
> Please trash this patch for now. I will carry it out of tree for my use.
> (Looks I'm the only one who's using UML and the XOR engine)
>
> By next Connectathon I'll have a better patch sent to the right
> people.
>
> Thanks for your efforts, and sorry for the grief it caused.
> Boaz
>
>> Benny
>>
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
>>> the body of a message to majordomo@vger.kernel.org
>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2011-12-26 7:11 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-07 14:08 [PATCH] fix do_xor_speed 64-bit devision issue on 32-bits arch Benny Halevy
2011-12-23 6:41 ` fanchaoting
2011-12-23 13:25 ` Jim Rees
2011-12-25 5:31 ` Benny Halevy
2011-12-25 13:54 ` Jim Rees
2011-12-25 15:25 ` Boaz Harrosh
2011-12-25 15:57 ` Jim Rees
2011-12-26 7:11 ` Benny Halevy
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).