+-- On Mon, 17 Aug 2020, Philippe Mathieu-Daudé wrote --+ | Fix by initializing the MemoryRegionOps to ram_device_mem_ops, this way the | memory accesses are properly dispatched using | memory_region_ram_device_read() / memory_region_ram_device_write(). | | Fixes: 4a2e242bbb ("memory: Don't use memcpy for ram_device regions") | Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> | --- | Since v1: Corrected description (PJP) | Cc: P J P <ppan...@redhat.com> | --- | softmmu/memory.c | 10 ++++++++++ | 1 file changed, 10 insertions(+) | | diff --git a/softmmu/memory.c b/softmmu/memory.c | index 651705b7d1..8139da1a58 100644 | --- a/softmmu/memory.c | +++ b/softmmu/memory.c | @@ -1517,6 +1517,8 @@ void memory_region_init_ram_shared_nomigrate(MemoryRegion *mr, | Error *err = NULL; | memory_region_init(mr, owner, name, size); | mr->ram = true; | + mr->ops = &ram_device_mem_ops; | + mr->opaque = mr; | mr->terminates = true;
I wonder if 'mr->ops = &ram_device_mem_ops' could be done in memory_region_init() instead? Otherwise looks okay. Thank you. -- Prasad J Pandit / Red Hat Product Security Team 8685 545E B54C 486B C6EB 271E E285 8B5A F050 DE8D