This is part 2 of the memory/IOMMU patches. These reorganize the handling of unassigned accesses so that they are propagated as errors during I/O dispatch. In the end, a return value is added to address_space_rw/read/write. This is particularly useful when an IOMMU is available, because it lets devices detect faulting accesses.
Compared to v1, there is no special casing of the "unassigned" dummy section and subpages are handled correctly. Most of the patches are new. The updated full series, including the IOMMU and ref/unref patches, is available at refs/heads/iommu on my github repository. Paolo Paolo Bonzini (22): exec: eliminate io_mem_ram exec: drop useless #if cputlb: simplify tlb_set_page exec: make io_mem_unassigned private exec: do not use error_mem_read memory: dispatch unassigned accesses based on .valid.accepts memory: add address_space_translate memory: move unassigned_mem_ops to memory.c memory: assign MemoryRegionOps to all regions exec: expect mr->ops to be initialized for ROM exec: introduce memory_access_is_direct exec: introduce memory_access_size memory: export memory_region_access_valid to exec.c exec: implement .valid.accepts for subpages memory: add address_space_access_valid memory: accept mismatching sizes in memory_region_access_valid memory: add big endian support to access_with_adjusted_size memory: split accesses even when the old MMIO callbacks are used memory: correctly handle endian-swapped 64-bit accesses exec: just use io_mem_read/io_mem_write for 8-byte I/O accesses memory: propagate errors on I/O dispatch memory: add return value to address_space_rw/read/write cputlb.c | 31 ++- dma-helpers.c | 5 + exec.c | 412 ++++++++++++++++++++-------------------- include/exec/cpu-common.h | 2 - include/exec/cputlb.h | 12 +- include/exec/exec-all.h | 6 +- include/exec/memory-internal.h | 5 + include/exec/memory.h | 58 ++++-- include/exec/softmmu_template.h | 36 +--- include/sysemu/dma.h | 3 +- memory.c | 215 +++++++++++++-------- translate-all.c | 6 +- 12 files changed, 419 insertions(+), 372 deletions(-) -- 1.8.1.4