On 10/05/2009 02:42 PM, Jan Kiszka wrote:
Yes, for big-endian 32/64 and s390. There are some patches floating around.Well, that's for fixing up the endianess of the bitmap itself. But the problem with void * in compat code are their different sizes. And GET_DIRTY_LOG solves this via padding: union { void __user *dirty_bitmap; __u64 padding2; }; So this should not make pointers a no-go, should it?
No, it doesn't work. Big-endian will place the pointer at offset zero which is the high-end word when read by the host; and 31-bit s390 needs something unsurprisingly strange to be done to the pointer.
The patches I mentioned involve creating a compat_ioctl callback, something which I tried to avoid but failed, not having considered big-endian and s390.
We'll probably have to deal with both. Therefore, I'm looking for a unified solution.array of struct { __u16 type; __u16 offset; } ?For sure possible, just the setup of such data structure in user space gets a bit, well, unhandy.
Yes. Fixed-offset substructures are a lot easier and less error-prone. -- error compiling committee.c: too many arguments to function -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
