diff options
author | Peter Xu <peterx@redhat.com> | 2025-06-13 10:12:10 -0400 |
---|---|---|
committer | Fabiano Rosas <farosas@suse.de> | 2025-07-11 10:37:38 -0300 |
commit | 271a1940e91a32fab6165841279f250204f53ae4 (patch) | |
tree | 0f07c6bdb4ca385b72698154154550fd027575c0 | |
parent | a098761f63e019b75a23575bb8d5a520c0dbce64 (diff) | |
download | qemu-271a1940e91a32fab6165841279f250204f53ae4.zip qemu-271a1940e91a32fab6165841279f250204f53ae4.tar.gz qemu-271a1940e91a32fab6165841279f250204f53ae4.tar.bz2 |
migration/postcopy: Add blocktime fault counts per-vcpu
Add a field to count how many remote faults one vCPU has taken. So far
it's still not used, but will be soon.
Reviewed-by: Fabiano Rosas <farosas@suse.de>
Link: https://lore.kernel.org/r/20250613141217.474825-8-peterx@redhat.com
Signed-off-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Fabiano Rosas <farosas@suse.de>
-rw-r--r-- | migration/postcopy-ram.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 9dfa92a..15ea106 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -116,6 +116,8 @@ typedef struct PostcopyBlocktimeContext { uint64_t *vcpu_blocktime_start; /* blocktime per vCPU */ uint64_t *vcpu_blocktime_total; + /* count of faults per vCPU */ + uint64_t *vcpu_faults_count; /* page address per vCPU */ uintptr_t *vcpu_addr; /* total blocktime when all vCPUs are stopped */ @@ -136,6 +138,7 @@ static void destroy_blocktime_context(struct PostcopyBlocktimeContext *ctx) { g_free(ctx->vcpu_blocktime_start); g_free(ctx->vcpu_blocktime_total); + g_free(ctx->vcpu_faults_count); g_free(ctx->vcpu_addr); g_free(ctx); } @@ -155,6 +158,7 @@ static struct PostcopyBlocktimeContext *blocktime_context_new(void) ctx->vcpu_blocktime_start = g_new0(uint64_t, smp_cpus); ctx->vcpu_blocktime_total = g_new0(uint64_t, smp_cpus); + ctx->vcpu_faults_count = g_new0(uint64_t, smp_cpus); ctx->vcpu_addr = g_new0(uintptr_t, smp_cpus); ctx->exit_notifier.notify = migration_exit_cb; qemu_add_exit_notifier(&ctx->exit_notifier); @@ -857,6 +861,7 @@ void mark_postcopy_blocktime_begin(uintptr_t addr, uint32_t ptid, dc->last_begin = current; dc->vcpu_blocktime_start[cpu] = current; dc->vcpu_addr[cpu] = addr; + dc->vcpu_faults_count[cpu]++; /* * The caller should only inject a blocktime entry when the page is |