On 4/22/26 6:30 AM, Arun Menon wrote:
From: Arun Menon <[email protected]>

- Add subsection in VMState for TPM CRB with the newly introduced
   command and response buffer GByteArrays, along with a needed callback,
   so that newer QEMU only sends the buffers if it is necessary.
- Implement a migration blocker to prevent migration of the VM if the
   user manually enables chunking capability, cap-chunk, but the machine
   type does not support it, using a new hw_compat property called
   allow_chunk_migration.
- Add a post_load_errp hook so that during a migration, the buffers are
   validated before destination VM is started.

Signed-off-by: Arun Menon <[email protected]>
---
  hw/core/machine.c |  1 +
  hw/tpm/tpm_crb.c  | 71 +++++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 72 insertions(+)

@@ -422,6 +478,7 @@ static void tpm_crb_reset(void *dev)
  static void tpm_crb_realize(DeviceState *dev, Error **errp)
  {
      CRBState *s = CRB(dev);
+    int ret;
if (!tpm_find()) {
          error_setg(errp, "at most one TPM device is permitted");
@@ -431,6 +488,15 @@ static void tpm_crb_realize(DeviceState *dev, Error **errp)
          error_setg(errp, "'tpmdev' property is required");
          return;
      }
+    if (s->cap_chunk && !s->allow_chunk_migration) {
+        error_setg(&s->migration_blocker,
+                   "The tpm-crb device does not support chunk migration with "
+                   "machine version less than 11.1");
+        ret = migrate_add_blocker_normal(&s->migration_blocker, errp);
+        if (ret < 0) {
+            return;

Should this do an error_report() and exit(1)?


Reply via email to