On 04/12/2010 11:55 PM, Fernando Luis Vazquez Cao wrote:
Sadly we don't have that for 32bit. We have to implement by ourselves.
I tested two temporary implementations for 32bit:
1. This version using copy_from_user() and copy_to_user() with
not nice vmalloc().
2. Loop with __get_user() and __put_user().
The result was 1 is much faster than 2.
What about copy_from_user()/copy_to_user() through a 512 byte buffer
on the kernel stack?
Reserving 512 bytes on the stack looks like too much, I'd rather
kmalloc a 512 byte buffer at VM
creation time and pass it down to the dirty page tracking code. Would
you be OK with such an
approach?
But a generic copy_in_user() can't access that (I guess I wasn't clear -
just like I want a generic set_bit_user(), I want a generic
copy_in_user() instead of ifdefs in my code). But I guess we can make
it as simple as possible using get_user()/put_user(), and someone will
optimize it.
Alternatively use a 256 byte buffer, should be fine for the stack and
for performance.
--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html