lkml.org 
[lkml]   [2009]   [Jan]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: copy_{to,from}_user
From
Date
On Fri, 2009-01-09 at 12:52 -0500, Brad Parker wrote:
> I have a question about copy_{to,from}_user.
>
> Most implementations I've seen do in-order copies and notice when an
> exception occurs and report back the progress. This is straight
> forward.
>
> (but to be honest, I have suspicions about how just how accurate those
> reports are i.e. +/- 1-3 bytes on some architectures)
>
> On some cpu's it is advantageous to do an out-of-order copy to take
> advantage of various cache fill mechanisms.
>
> The problem is that the out-of-order copy makes it impossible to know
> where the exception occurred (in terms of progress).
>
> Would it be permissible to have a version of copy_{to,from}_user which
> does an out-of-order copy and when an exception occurs, restarts the
> copy from the beginning using a simple in-order copy, to make it
> possible to identify where the exception occurs?
>
> The idea is that exceptions are rare and so the performance hit of doing
> the "recopy" would be minimal and would provide the required accuracy.

x86_64 already does some unrolling and is inaccurate as to where exactly
it happens. The only thing that is very important is that you _never_
say you copied more than you actually did.

That was the source of a data corruption bug a while ago, the code did
something like sequences: read 8 words, write 8 words. And reported the
number of bytes read, instead of bytes written, which is an
over-estimation.


\
 
 \ /
  Last update: 2009-01-09 22:57    [W:0.038 / U:0.208 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site