On Thu, 27 Aug 2015 15:30:55 +0300 "Michael S. Tsirkin" <m...@redhat.com> wrote:
> On Thu, Aug 27, 2015 at 01:27:54PM +0100, Peter Maydell wrote: > > On 27 August 2015 at 13:25, Michael S. Tsirkin <m...@redhat.com> wrote: > > > On Thu, Aug 27, 2015 at 01:20:52PM +0100, Peter Maydell wrote: > > >> On 27 August 2015 at 13:17, Michael S. Tsirkin <m...@redhat.com> wrote: > > >> > Basically the point is that ABI is extended to make > > >> > ioeventfd with len = 0 mean "any length". > > >> > 0 is thus not meaningless anymore. > > >> > > >> But how can you do adjustment for incorrect endianness > > >> if you don't know the size of the data that you're > > >> trying to work with? That's why this switch insists > > >> that the size is 1, 2, 4 or 8. > > > > > For kvm at least, "any length" implies "any data". > > > So data is eventually discarded, we don't really need > > > to adjust it for endian-ness. > > > > I'm still confused. If you have data it needs to be > > adjusted. If we're not actually doing anything with > > the data why are we calling this function in the first > > place? > > > > -- PMM > > I guess you could skip calls to adjust_endianness when len == 0, > that should work just as well. > adjust_endianness() is called from 4 different locations: - memory_region_dispatch_read() - memory_region_dispatch_write() - memory_region_add_eventfd() - memory_region_del_eventfd() Since the issue was raised for the eventfd ones, it makes more sense to check in the caller indeed... and to preserve other paths. Cheers. -- Greg