- kvm-scsi-adjust-error_prepend-formatting.patch [RHEL-158243] - kvm-scsi-always-send-valid-PREEMPT-TYPE-field.patch [RHEL-158243] - kvm-scsi-register-again-after-PREEMPT-without-reservatio.patch [RHEL-158243] - kvm-accel-mshv-Remove-remap-overlapping-mappings-code.patch [RHEL-177969] - kvm-accel-mshv-implement-cpu_thread_is_idle-hook.patch [RHEL-177969] - Resolves: RHEL-158243 (live migration failed the VM just register key only [rhel-9.9]) - Resolves: RHEL-177969 (MSHV backport onto QEMU 10.1.0 is not able to launch MSHV guests)
59 lines
2.2 KiB
Diff
59 lines
2.2 KiB
Diff
From 4356c4191e1b7ba491a2dd6d8c6167f7eb9a3de1 Mon Sep 17 00:00:00 2001
|
|
From: Magnus Kulke <magnuskulke@linux.microsoft.com>
|
|
Date: Tue, 21 Apr 2026 05:21:54 +0000
|
|
Subject: [PATCH 5/5] accel/mshv: implement cpu_thread_is_idle() hook
|
|
|
|
RH-Author: Magnus Kulke <None>
|
|
RH-MergeRequest: 491: accel/mshv: backport required patches for mshv guests
|
|
RH-Jira: RHEL-177969
|
|
RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
|
RH-Commit: [2/2] 4880ec9edc01fda07186687f9d19159f3afd0689 (mkulke/qemu-kvm)
|
|
|
|
In MSHV the hypervisor APIC is always used, so we to implement this hook
|
|
to make sure the AP's vcpu thread is not blocked waiting for an INIT SIPI
|
|
by the BSP. Without this change soft reboots with -smp cpus>=2 will
|
|
hang.
|
|
|
|
Signed-off-by: Magnus Kulke <magnuskulke@linux.microsoft.com>
|
|
Reviewed-by: Mohamed Mediouni <mohamed@unpredictable.fr>
|
|
Link: https://lore.kernel.org/r/20260421-mshv_accel_arm64_supp-v3-9-469f544778ba@linux.microsoft.com
|
|
[Make comment not x86 specific. - Paolo]
|
|
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
(cherry picked from commit dbfb680772d5184544f7c0a8bba96bec229c96e6)
|
|
---
|
|
accel/mshv/mshv-all.c | 12 ++++++++++++
|
|
1 file changed, 12 insertions(+)
|
|
|
|
diff --git a/accel/mshv/mshv-all.c b/accel/mshv/mshv-all.c
|
|
index 88b66f2992..d7df89dbd2 100644
|
|
--- a/accel/mshv/mshv-all.c
|
|
+++ b/accel/mshv/mshv-all.c
|
|
@@ -699,11 +699,23 @@ static const TypeInfo mshv_accel_type = {
|
|
.instance_size = sizeof(MshvState),
|
|
};
|
|
|
|
+/*
|
|
+ * MSHV manages secondary processors in the hypervisor. SIPI for x86 and
|
|
+ * PSCI for Arm are handled internally. Halted vCPUs must still enter
|
|
+ * mshv_cpu_exec() so that MSHV_RUN_VP is called and the hypervisor will
|
|
+ * wake APs.
|
|
+ */
|
|
+static bool mshv_vcpu_thread_is_idle(CPUState *cpu)
|
|
+{
|
|
+ return false;
|
|
+}
|
|
+
|
|
static void mshv_accel_ops_class_init(ObjectClass *oc, const void *data)
|
|
{
|
|
AccelOpsClass *ops = ACCEL_OPS_CLASS(oc);
|
|
|
|
ops->create_vcpu_thread = mshv_start_vcpu_thread;
|
|
+ ops->cpu_thread_is_idle = mshv_vcpu_thread_is_idle;
|
|
ops->synchronize_post_init = mshv_cpu_synchronize_post_init;
|
|
ops->synchronize_post_reset = mshv_cpu_synchronize_post_reset;
|
|
ops->synchronize_state = mshv_cpu_synchronize;
|
|
--
|
|
2.52.0
|
|
|