On 8/16/19 8:38 AM, tony.ngu...@bt.com wrote: > +static void adjust_endianness(MemoryRegion *mr, uint64_t *data, MemOp op) > { > + if ((op & MO_BSWAP) != mr->ops->endianness) { > + switch (op & MO_SIZE) {
You'll want to use devend_memop() here, as previously discussed. > @@ -2331,7 +2322,7 @@ void memory_region_add_eventfd(MemoryRegion *mr, > } > > if (size) { > - adjust_endianness(mr, &mrfd.data, size); > + adjust_endianness(mr, &mrfd.data, size_memop(size)); > } > memory_region_transaction_begin(); > for (i = 0; i < mr->ioeventfd_nb; ++i) { > @@ -2366,7 +2357,7 @@ void memory_region_del_eventfd(MemoryRegion *mr, > unsigned i; > > if (size) { > - adjust_endianness(mr, &mrfd.data, size); > + adjust_endianness(mr, &mrfd.data, size_memop(size)); > } > memory_region_transaction_begin(); > for (i = 0; i < mr->ioeventfd_nb; ++i) { To preserve behaviour it would appear that these need MO_TE. r~