From d1d88a351aee83d957af07e001ee10010d9e4adb Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Mon, 31 Oct 2022 11:30:07 +0800 Subject: [PATCH] migration/cgs: add cgs_mig_savevm_state_cleanup cgs_mig_savevm_state_cleanup is invoked after migration is done or cancelled to invoke the vendor specific cleanup to do some house keeping work. Signed-off-by: Wei Wang --- migration/cgs.c | 9 +++++++++ migration/cgs.h | 2 ++ migration/savevm.c | 1 + 3 files changed, 12 insertions(+) diff --git a/migration/cgs.c b/migration/cgs.c index 9969f85ed3..1b17705f05 100644 --- a/migration/cgs.c +++ b/migration/cgs.c @@ -162,3 +162,12 @@ int cgs_mig_savevm_state_ram_cancel(QEMUFile *f, hwaddr gfn_end) return ret; } + +void cgs_mig_savevm_state_cleanup(void) +{ + if (!cgs_mig.savevm_state_cleanup) { + return; + } + + cgs_mig.savevm_state_cleanup(); +} diff --git a/migration/cgs.h b/migration/cgs.h index 8439fe4e43..c5aaef6395 100644 --- a/migration/cgs.h +++ b/migration/cgs.h @@ -27,6 +27,7 @@ typedef struct CgsMig { int (*savevm_state_downtime)(void); int (*savevm_state_end)(QEMUFile *f); int (*savevm_state_ram_cancel)(hwaddr gfn_end); + void (*savevm_state_cleanup)(void); } CgsMig; bool cgs_mig_is_ready(void); @@ -38,5 +39,6 @@ long cgs_mig_savevm_state_ram(QEMUFile *f, RAMBlock *block, ram_addr_t offset, int cgs_mig_savevm_state_downtime(QEMUFile *f); int cgs_mig_savevm_state_end(QEMUFile *f); int cgs_mig_savevm_state_ram_cancel(QEMUFile *f, hwaddr gfn_end); +void cgs_mig_savevm_state_cleanup(void); #endif diff --git a/migration/savevm.c b/migration/savevm.c index 083894f79e..ccec6d69e8 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -1529,6 +1529,7 @@ void qemu_savevm_state_cleanup(void) } trace_savevm_state_cleanup(); + cgs_mig_savevm_state_cleanup(); QTAILQ_FOREACH(se, &savevm_state.handlers, entry) { if (se->ops && se->ops->save_cleanup) { se->ops->save_cleanup(se->opaque);