74 lines
2.5 KiB
Diff
74 lines
2.5 KiB
Diff
From 5c3ab9a195310186be83501c20c95033a2fff594 Mon Sep 17 00:00:00 2001
|
|
From: Paolo Bonzini <pbonzini@redhat.com>
|
|
Date: Fri, 18 Jul 2025 18:03:43 +0200
|
|
Subject: [PATCH 001/115] target/i386: Make invtsc migratable when user sets
|
|
tsc-khz explicitly
|
|
|
|
RH-Author: Paolo Bonzini <pbonzini@redhat.com>
|
|
RH-MergeRequest: 391: TDX support, including attestation and device assignment
|
|
RH-Jira: RHEL-15710 RHEL-20798 RHEL-49728
|
|
RH-Acked-by: Yash Mankad <None>
|
|
RH-Acked-by: Peter Xu <peterx@redhat.com>
|
|
RH-Acked-by: David Hildenbrand <david@redhat.com>
|
|
RH-Commit: [1/115] 14556e7f141ab24aa977392eb30819df061b608a (bonzini/rhel-qemu-kvm)
|
|
|
|
When user sets tsc-frequency explicitly, the invtsc feature is actually
|
|
migratable because the tsc-frequency is supposed to be fixed during the
|
|
migration.
|
|
|
|
See commit d99569d9d856 ("kvm: Allow invtsc migration if tsc-khz
|
|
is set explicitly") for referrence.
|
|
|
|
Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
|
|
Link: https://lore.kernel.org/r/20240814075431.339209-10-xiaoyao.li@intel.com
|
|
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
(cherry picked from commit 87c88db3143e91076d167a62dd7febf49afca8a2)
|
|
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
(cherry picked from commit 3a7e5d481be248bf0b81f23fd84da43663597504)
|
|
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
---
|
|
target/i386/cpu.c | 11 +++++++++--
|
|
1 file changed, 9 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
|
|
index fdfa183f4d..0ac6cd8ad7 100644
|
|
--- a/target/i386/cpu.c
|
|
+++ b/target/i386/cpu.c
|
|
@@ -1917,9 +1917,10 @@ static inline uint64_t x86_cpu_xsave_xss_components(X86CPU *cpu)
|
|
* Returns the set of feature flags that are supported and migratable by
|
|
* QEMU, for a given FeatureWord.
|
|
*/
|
|
-static uint64_t x86_cpu_get_migratable_flags(FeatureWord w)
|
|
+static uint64_t x86_cpu_get_migratable_flags(X86CPU *cpu, FeatureWord w)
|
|
{
|
|
FeatureWordInfo *wi = &feature_word_info[w];
|
|
+ CPUX86State *env = &cpu->env;
|
|
uint64_t r = 0;
|
|
int i;
|
|
|
|
@@ -1933,6 +1934,12 @@ static uint64_t x86_cpu_get_migratable_flags(FeatureWord w)
|
|
r |= f;
|
|
}
|
|
}
|
|
+
|
|
+ /* when tsc-khz is set explicitly, invtsc is migratable */
|
|
+ if ((w == FEAT_8000_0007_EDX) && env->user_tsc_khz) {
|
|
+ r |= CPUID_APM_INVTSC;
|
|
+ }
|
|
+
|
|
return r;
|
|
}
|
|
|
|
@@ -6650,7 +6657,7 @@ uint64_t x86_cpu_get_supported_feature_word(X86CPU *cpu, FeatureWord w)
|
|
|
|
r &= ~unavail;
|
|
if (cpu && cpu->migratable) {
|
|
- r &= x86_cpu_get_migratable_flags(w);
|
|
+ r &= x86_cpu_get_migratable_flags(cpu, w);
|
|
}
|
|
return r;
|
|
}
|
|
--
|
|
2.50.1
|
|
|