This only traces named memory regions as it is otherwise quite noisy every time the address map changes.
Signed-off-by: Alex Bennée <[email protected]> --- system/memory.c | 5 +++++ system/trace-events | 1 + 2 files changed, 6 insertions(+) diff --git a/system/memory.c b/system/memory.c index 8b84661ae36..fd7c3192ed4 100644 --- a/system/memory.c +++ b/system/memory.c @@ -1821,6 +1821,11 @@ static void memory_region_finalize(Object *obj) * memory_region_set_enabled instead could trigger a transaction and * cause an infinite loop. */ + + if (mr->name) { + trace_memory_region_finalize(mr, mr->name); + } + mr->enabled = false; memory_region_transaction_begin(); if (mr->container) { diff --git a/system/trace-events b/system/trace-events index 82856e44f2e..a8ef2326e14 100644 --- a/system/trace-events +++ b/system/trace-events @@ -23,6 +23,7 @@ memory_region_subpage_write(int cpu_index, void *mr, uint64_t offset, uint64_t v memory_region_ram_device_read(int cpu_index, void *mr, uint64_t addr, uint64_t value, unsigned size) "cpu %d mr %p addr 0x%"PRIx64" value 0x%"PRIx64" size %u" memory_region_ram_device_write(int cpu_index, void *mr, uint64_t addr, uint64_t value, unsigned size) "cpu %d mr %p addr 0x%"PRIx64" value 0x%"PRIx64" size %u" memory_region_sync_dirty(const char *mr, const char *listener, int global) "mr '%s' listener '%s' synced (global=%d)" +memory_region_finalize(void *mr, const char *name) "mr %p, %s" flatview_new(void *view, void *root) "%p (root %p)" flatview_destroy(void *view, void *root) "%p (root %p)" flatview_destroy_rcu(void *view, void *root) "%p (root %p)" -- 2.47.3
