Re: [RFC][PATCH resend 8/12] asm-generic: bitops: introduce le bit
Avi Kivity <[email protected]> Tue, 04 May 2010 16:08:23 +0000
| Newsgroups | org.kernel.vger.kvm-ia64,org.kernel.vger.kvm,org.kernel.vger.kvm-ppc,org.kernel.vger.linux-arch,org.kernel.vger.linux-kernel,org.ozlabs.lists.linuxppc-dev |
|---|---|
| Message-ID | <[email protected]> |
On 05/04/2010 06:03 PM, Arnd Bergmann wrote: > On Tuesday 04 May 2010, Takuya Yoshikawa wrote: > >> Although we can use *_le_bit() helpers to treat bitmaps le arranged, >> having le bit offset calculation as a seperate macro gives us more freedom. >> >> For example, KVM has le arranged dirty bitmaps for VGA, live-migration >> and they are used in user space too. To avoid bitmap copies between kernel >> and user space, we want to update the bitmaps in user space directly. >> To achive this, le bit offset with *_user() functions help us a lot. >> >> So let us use the le bit offset calculation part by defining it as a new >> macro: generic_le_bit_offset() . >> > Does this work correctly if your user space is 32 bits (i.e. unsigned long > is different size in user space and kernel) in both big- and little-endian > systems? > > I'm not sure about all the details, but I think you cannot in general share > bitmaps between user space and kernel because of this. > That's why the bitmaps are defined as little endian u64 aligned, even on big endian 32-bit systems. Little endian bitmaps are wordsize agnostic, and u64 alignment ensures we can use long-sized bitops on mixed size systems. -- error compiling committee.c: too many arguments to function