On 08/27/2015 09:10 PM, Greg Kurz wrote: > 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 >
Yes, this seems fine.