From: "Chalios, Babis" <bchalios@amazon.es>
To: "mst@redhat.com" <mst@redhat.com>,
"imammedo@redhat.com" <imammedo@redhat.com>,
"cohuck@redhat.com" <cohuck@redhat.com>,
"pbonzini@redhat.com" <pbonzini@redhat.com>
Cc: "qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
"dwmw2@infradead.org" <dwmw2@infradead.org>,
"Chalios, Babis" <bchalios@amazon.es>, "Graf (AWS),
Alexander" <graf@amazon.de>,
"mzxreary@0pointer.de" <mzxreary@0pointer.de>
Subject: [RFC PATCH 3/4] hw/acpi: add VM generation counter field to VMClock
Date: Mon, 1 Dec 2025 12:51:10 +0000 [thread overview]
Message-ID: <20251201125023.18344-5-bchalios@amazon.es> (raw)
In-Reply-To: <20251201125023.18344-1-bchalios@amazon.es>
The final published version of the VMClock specification adds support
for an extra vm_generation_counter field which allows hypervisors to
differentiate between live migration and snapshot loading events. During
the latter, apart from adjusting clocks, guests might want to take
further actions such as resetting network devices, updating UUIDs,
reseeding entropy pools, etc.
VM generation counter itself is stored in the guest memory region and
exposed to guest userspace, so we don't need to serialize it within
vmstate_vmclock as well.
Signed-off-by: Babis Chalios <bchalios@amazon.es>
---
hw/acpi/vmclock.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/hw/acpi/vmclock.c b/hw/acpi/vmclock.c
index c582c0c1f8..47cbba4496 100644
--- a/hw/acpi/vmclock.c
+++ b/hw/acpi/vmclock.c
@@ -20,6 +20,7 @@
#include "hw/qdev-properties.h"
#include "hw/qdev-properties-system.h"
#include "migration/vmstate.h"
+#include "migration/misc.h"
#include "system/reset.h"
#include "standard-headers/linux/vmclock-abi.h"
@@ -64,6 +65,7 @@ void vmclock_build_acpi(VmclockState *vms, GArray *table_data,
static void vmclock_update_guest(VmclockState *vms)
{
uint64_t disruption_marker;
+ uint64_t vm_generation_counter;
uint32_t seq_count;
if (!vms->clk) {
@@ -79,6 +81,16 @@ static void vmclock_update_guest(VmclockState *vms)
disruption_marker++;
vms->clk->disruption_marker = cpu_to_le64(disruption_marker);
+ /*
+ * We only increase the vm_generation_counter when loading from a snapshot,
+ * not during live migration
+ */
+ if (!migration_is_running()) {
+ vm_generation_counter = le64_to_cpu(vms->clk->vm_generation_counter);
+ vm_generation_counter++;
+ vms->clk->vm_generation_counter = cpu_to_le64(vm_generation_counter);
+ }
+
/* These barriers pair with read barriers in the guest */
smp_wmb();
vms->clk->seq_count = cpu_to_le32(seq_count + 1);
@@ -144,6 +156,7 @@ static void vmclock_realize(DeviceState *dev, Error **errp)
vms->clk->magic = cpu_to_le32(VMCLOCK_MAGIC);
vms->clk->size = cpu_to_le16(VMCLOCK_SIZE);
vms->clk->version = cpu_to_le16(1);
+ vms->clk->flags = cpu_to_le64(VMCLOCK_FLAG_VM_GEN_COUNTER_PRESENT);
/* These are all zero and thus default, but be explicit */
vms->clk->clock_status = VMCLOCK_STATUS_UNKNOWN;
--
2.34.1
next prev parent reply other threads:[~2025-12-01 12:51 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-01 12:50 [RFC PATCH 0/4] vmclock: add support for VM generation counter and notifications Chalios, Babis
2025-12-01 12:50 ` Chalios, Babis
2025-12-01 12:52 ` Babis Chalios
2025-12-01 12:50 ` [RFC PATCH 1/4] acpi: fix acpi_send_gpe_event() to handle more events Chalios, Babis
2025-12-01 12:50 ` [RFC PATCH 2/4] hw/acpi: add new fields in VMClock ABI Chalios, Babis
2025-12-01 13:04 ` Cornelia Huck
2025-12-01 13:11 ` Babis Chalios
2025-12-01 13:36 ` Cornelia Huck
2025-12-01 13:24 ` David Woodhouse
2025-12-01 13:38 ` Cornelia Huck
2025-12-01 14:27 ` David Woodhouse
2025-12-01 15:05 ` Babis Chalios
2025-12-01 15:21 ` David Woodhouse
2025-12-01 15:10 ` Cornelia Huck
2025-12-01 12:51 ` Chalios, Babis [this message]
2025-12-01 14:12 ` [RFC PATCH 3/4] hw/acpi: add VM generation counter field to VMClock Daniel P. Berrangé
2025-12-01 14:29 ` David Woodhouse
2025-12-01 14:41 ` Daniel P. Berrangé
2025-12-01 15:01 ` Babis Chalios
2025-12-01 15:28 ` David Woodhouse
2025-12-01 12:51 ` [RFC PATCH 4/4] hw/acpi: add ACPI notification to VMClock device Chalios, Babis
2025-12-01 15:10 ` [RFC PATCH 0/4] vmclock: add support for VM generation counter and notifications Daniel P. Berrangé
2025-12-01 15:23 ` David Woodhouse
2025-12-01 15:46 ` Babis Chalios
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251201125023.18344-5-bchalios@amazon.es \
--to=bchalios@amazon.es \
--cc=cohuck@redhat.com \
--cc=dwmw2@infradead.org \
--cc=graf@amazon.de \
--cc=imammedo@redhat.com \
--cc=mst@redhat.com \
--cc=mzxreary@0pointer.de \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).