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 <wei.w.wang@intel.com>
This commit is contained in:
Wei Wang
2022-10-31 11:30:07 +08:00
committed by Nikolay Borisov
parent 1bf0585f28
commit d1d88a351a
3 changed files with 12 additions and 0 deletions

View File

@@ -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();
}

View File

@@ -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

View File

@@ -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);