An alternate fix for #1866 without touching can_do_io, and is
perhaps a bit cleaner and clearer.
Instead, the current cpu checks whether an address space update
is required on each entry to the slow path. This certainly
catches all i/o. It easily works for the sequential case of
two i/o, the first of which changes the address space and the
second of which requires the new address space.
I've done a tiny bit of performance testing between the two
solutions and it seems to be a wash. So now it's simply a
matter of cleanliness.
r~
Richard Henderson (3):
softmmu: Use cpu->created in tcg_commit
softmmu: Introduce AddressSpaceDispatch generation numbers
softmmu: Introduce cpu_address_space_sync
include/exec/memory.h | 6 ++++++
accel/tcg/cputlb.c | 2 ++
softmmu/physmem.c | 46 ++++++++++++++++++++++++++++++++++++-------
3 files changed, 47 insertions(+), 7 deletions(-)