aboutsummaryrefslogtreecommitdiff
path: root/target
diff options
context:
space:
mode:
authorAlexander Graf <agraf@csgraf.de>2022-10-05 00:56:41 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2022-10-11 09:36:01 +0200
commit62a44fddb24fec35a6baf7e2c52b0e935a5bfa90 (patch)
tree354dea0d102d32456619975236027ee8b6cbc33c /target
parente3a79e0e87831602e41819591a8e6dcc70a2a231 (diff)
downloadqemu-62a44fddb24fec35a6baf7e2c52b0e935a5bfa90.zip
qemu-62a44fddb24fec35a6baf7e2c52b0e935a5bfa90.tar.gz
qemu-62a44fddb24fec35a6baf7e2c52b0e935a5bfa90.tar.bz2
x86: Implement MSR_CORE_THREAD_COUNT MSR
Intel CPUs starting with Haswell-E implement a new MSR called MSR_CORE_THREAD_COUNT which exposes the number of threads and cores inside of a package. This MSR is used by XNU to populate internal data structures and not implementing it prevents virtual machines with more than 1 vCPU from booting if the emulated CPU generation is at least Haswell-E. This patch propagates the existing hvf logic from patch 027ac0cb516 ("target/i386/hvf: add rdmsr 35H MSR_CORE_THREAD_COUNT") to TCG. Signed-off-by: Alexander Graf <agraf@csgraf.de> Message-Id: <20221004225643.65036-2-agraf@csgraf.de> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'target')
-rw-r--r--target/i386/tcg/sysemu/misc_helper.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/target/i386/tcg/sysemu/misc_helper.c b/target/i386/tcg/sysemu/misc_helper.c
index 1328aa6..e1528b7 100644
--- a/target/i386/tcg/sysemu/misc_helper.c
+++ b/target/i386/tcg/sysemu/misc_helper.c
@@ -450,6 +450,11 @@ void helper_rdmsr(CPUX86State *env)
case MSR_IA32_UCODE_REV:
val = x86_cpu->ucode_rev;
break;
+ case MSR_CORE_THREAD_COUNT: {
+ CPUState *cs = CPU(x86_cpu);
+ val = (cs->nr_threads * cs->nr_cores) | (cs->nr_cores << 16);
+ break;
+ }
default:
if ((uint32_t)env->regs[R_ECX] >= MSR_MC0_CTL
&& (uint32_t)env->regs[R_ECX] < MSR_MC0_CTL +