49 lines
2.1 KiB
Diff
49 lines
2.1 KiB
Diff
From bfd9b7a87e4a8add0536d6252b60c8d90a16ad1b Mon Sep 17 00:00:00 2001
|
|
Message-ID: <bfd9b7a87e4a8add0536d6252b60c8d90a16ad1b.1759908360.git.jdenemar@redhat.com>
|
|
From: Zhenzhong Duan <zhenzhong.duan@intel.com>
|
|
Date: Thu, 10 Jul 2025 03:21:20 -0400
|
|
Subject: [PATCH] qemu: Avoid duplicate FakeReboot for secure guest
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
For secure guest, FakeReboot kills original QEMU instance and
|
|
create new one. During this process, QEMU send SHUTDOWN event
|
|
with "host-signal" reason which can trigger another FakeReboot.
|
|
|
|
Check if a FakeReboot is ongoing and bypass "host-signal"
|
|
processing which originally comes from FakeReboot.
|
|
|
|
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
|
|
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
|
|
(cherry picked from commit 194a36f4fe14b489b4697396d908c2a2c578ca5c)
|
|
Resolves: https://issues.redhat.com/browse/RHEL-111863
|
|
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
---
|
|
src/qemu/qemu_monitor.c | 10 ++++++++++
|
|
1 file changed, 10 insertions(+)
|
|
|
|
diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
|
|
index 6d984df412..d726175d42 100644
|
|
--- a/src/qemu/qemu_monitor.c
|
|
+++ b/src/qemu/qemu_monitor.c
|
|
@@ -1073,6 +1073,16 @@ qemuMonitorEmitShutdown(qemuMonitor *mon, virTristateBool guest,
|
|
* with it here. */
|
|
if (vm->def->sec &&
|
|
vm->def->sec->sectype == VIR_DOMAIN_LAUNCH_SECURITY_TDX) {
|
|
+ qemuDomainObjPrivate *priv = vm->privateData;
|
|
+
|
|
+ /* For secure guest, FakeReboot kills original QEMU instance and
|
|
+ * create new one. During this process, QEMU send SHUTDOWN event
|
|
+ * with "host-signal" reason which can trigger another FakeReboot.
|
|
+ * Check if a FakeReboot is ongoing and bypass "host-signal"
|
|
+ * processing which is originally come from FakeReboot. */
|
|
+ if (priv->fakeReboot && STREQ_NULLABLE(reason, "host-signal"))
|
|
+ return;
|
|
+
|
|
if ((STREQ_NULLABLE(reason, "guest-shutdown") &&
|
|
vm->def->onPoweroff == VIR_DOMAIN_LIFECYCLE_ACTION_RESTART) ||
|
|
(STREQ_NULLABLE(reason, "guest-reset") &&
|
|
--
|
|
2.51.0
|