On Mon, 29 Mar 2021 18:24:40 +0100 Stefan Hajnoczi wrote: > On Thu, Mar 25, 2021 at 04:07:31PM +0100, Greg Kurz wrote: > > diff --git a/softmmu/memory.c b/softmmu/memory.c > > index 1b1942d521cc..0279e5671bcb 100644 > > --- a/softmmu/memory.c > > +++ b/softmmu/memory.c > > @@ -2368,7 +2368,7 @@ void memory_region_add_eventfd_full(MemoryRegion *mr, > > if (size) { > > adjust_endianness(mr, &mrfd.data, size_memop(size) | MO_TE); > > } > > - if (transaction) { > > + if (!transaction) { > > memory_region_transaction_begin(); > > } > > for (i = 0; i < mr->ioeventfd_nb; ++i) { > > @@ -2383,7 +2383,7 @@ void memory_region_add_eventfd_full(MemoryRegion *mr, > > sizeof(*mr->ioeventfds) * (mr->ioeventfd_nb-1 - i)); > > mr->ioeventfds[i] = mrfd; > > ioeventfd_update_pending |= mr->enabled; > > - if (transaction) { > > + if (!transaction) { > > memory_region_transaction_commit(); > > } > > Looks like these two hunks belong in a previous patch. And they are actually wrong... we *do* want a nested transaction if 'transaction' is true :) This is a leftover I thought I had removed but obviously not...