mirror of https://github.com/xqemu/xqemu.git
target-i386: do not override nr_cores for -cpu host
Commit 787aaf5
(target-i386: forward CPUID cache leaves when -cpu host is
used, 2013-09-02) brings bits 31..26 of CPUID leaf 04h out of sync with
the APIC IDs that QEMU reserves for each package. This number must come
from "-smp" options rather than from the host CPUID.
It also turns out that this unsyncing makes Windows Server 2012R2 fail
to boot.
Tested-by: Peter Lieven <pl@kamp.de>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Benoit Canet <benoit@irqsave.net>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Message-id: 1384879786-6721-1-git-send-email-pbonzini@redhat.com
Signed-off-by: Anthony Liguori <aliguori@amazon.com>
This commit is contained in:
parent
54e755588c
commit
76c2975a6f
|
@ -2086,14 +2086,10 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
|
||||||
/* cache info: needed for Core compatibility */
|
/* cache info: needed for Core compatibility */
|
||||||
if (cpu->cache_info_passthrough) {
|
if (cpu->cache_info_passthrough) {
|
||||||
host_cpuid(index, count, eax, ebx, ecx, edx);
|
host_cpuid(index, count, eax, ebx, ecx, edx);
|
||||||
break;
|
*eax &= ~0xFC000000;
|
||||||
}
|
|
||||||
if (cs->nr_cores > 1) {
|
|
||||||
*eax = (cs->nr_cores - 1) << 26;
|
|
||||||
} else {
|
} else {
|
||||||
*eax = 0;
|
*eax = 0;
|
||||||
}
|
switch (count) {
|
||||||
switch (count) {
|
|
||||||
case 0: /* L1 dcache info */
|
case 0: /* L1 dcache info */
|
||||||
*eax |= CPUID_4_TYPE_DCACHE | \
|
*eax |= CPUID_4_TYPE_DCACHE | \
|
||||||
CPUID_4_LEVEL(1) | \
|
CPUID_4_LEVEL(1) | \
|
||||||
|
@ -2133,6 +2129,12 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
|
||||||
*ecx = 0;
|
*ecx = 0;
|
||||||
*edx = 0;
|
*edx = 0;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* QEMU gives out its own APIC IDs, never pass down bits 31..26. */
|
||||||
|
if ((*eax & 31) && cs->nr_cores > 1) {
|
||||||
|
*eax |= (cs->nr_cores - 1) << 26;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
|
|
Loading…
Reference in New Issue