Reviewed-by: Alwalid Salama <quic_asalama@xxxxxxxxxxxx>
On 6/20/2024 5:22 PM, Alex Bennée wrote:
If the plugin in controlling time there is some state that might be
missing from the plugin tracking it. Migration is unlikely to work in
this case so lets put a migration blocker in to let the user know if
they try.
Signed-off-by: Alex Bennée <alex.bennee@xxxxxxxxxx>
Suggested-by: "Dr. David Alan Gilbert" <dave@xxxxxxxxxxx>
---
plugins/api.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/plugins/api.c b/plugins/api.c
index 4431a0ea7e..c4239153af 100644
--- a/plugins/api.c
+++ b/plugins/api.c
@@ -47,6 +47,8 @@
#include "disas/disas.h"
#include "plugin.h"
#ifndef CONFIG_USER_ONLY
+#include "qapi/error.h"
+#include "migration/blocker.h"
#include "exec/ram_addr.h"
#include "qemu/plugin-memory.h"
#include "hw/boards.h"
@@ -589,11 +591,17 @@ uint64_t qemu_plugin_u64_sum(qemu_plugin_u64 entry)
* Time control
*/
static bool has_control;
+Error *migration_blocker;
const void *qemu_plugin_request_time_control(void)
{
if (!has_control) {
has_control = true;
+#ifdef CONFIG_SOFTMMU
+ error_setg(&migration_blocker,
+ "TCG plugin time control does not support migration");
+ migrate_add_blocker(&migration_blocker, NULL);
+#endif
return &has_control;
}
return NULL;