Short story is that the first two patches resolve the observed problem, by completely bypassing quite a lot of code in memory.c.
Longer story is that we should either use that code in memory.c, or we should bypass it to an even lower level, so that we don't have multiple locations doing the partial-read assembly thing. Patch 13 exposes a number of obvious device bugs via make check. I'm sure there are more in devices that are less well tested. Patch 15 has an obvious drawback: it breaks the original #360. But it starts the conversation as to whether the check in memory.c is in fact broken. r~ Mark Cave-Ayland (2): NOTFORMERGE q800: test case for do_unaligned_access issue accel/tcg: Use byte ops for unaligned loads Philippe Mathieu-Daudé (1): accel/tcg: Extract load_helper_unaligned from load_helper Richard Henderson (12): accel/tcg: Don't test for watchpoints for code read accel/tcg: Handle page span access before i/o access softmmu/memory: Inline memory_region_dispatch_read1 softmmu/memory: Simplify access_with_adjusted_size interface hw/net/e1000e: Fix size of io operations hw/net/e1000e: Fix impl.min_access_size hw/pci-host/q35: Improve blackhole_ops hw/scsi/megasas: Fix megasas_mmio_ops sizes hw/scsi/megasas: Improve megasas_queue_ops min_access_size softmmu/memory: Disallow short writes softmmu/memory: Support some unaligned access RFC accel/tcg: Defer some unaligned accesses to memory subsystem accel/tcg/cputlb.c | 147 +++++++++++++---------------- hw/m68k/q800.c | 131 ++------------------------ hw/net/e1000e.c | 8 +- hw/pci-host/q35.c | 9 +- hw/scsi/megasas.c | 6 +- softmmu/memory.c | 226 +++++++++++++++++++++++++++++++++------------ 6 files changed, 251 insertions(+), 276 deletions(-) -- 2.25.1
