qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] target/i386: Remove core_id assert check in CPUID 0x8000001E


From: Babu Moger
Subject: [PATCH] target/i386: Remove core_id assert check in CPUID 0x8000001E
Date: Fri, 19 Jun 2020 08:39:16 -0500
User-agent: StGit/unknown-version

With x2apic enabled, configurations can have more that 255 cores.
Noticed the device add test is hitting an assert when during cpu
hotplug with core_id > 255. This is due to assert check in the
CPUID 0x8000001E.

We cannot really decode the CPUID 0x8000001E with cores greater
than 255. To support more than 255 cores we need x2apic support.
In that case topology is coming from CPUID 0xB which appears to
work fine.

Remove the assert check and fix the problem.

Fixes the bug:
Link: https://bugzilla.redhat.com/show_bug.cgi?id=1834200

Signed-off-by: Babu Moger <babu.moger@amd.com>
---
 target/i386/cpu.c |   10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index b1b311baa2..43df2a17f4 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -5917,8 +5917,14 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, 
uint32_t count,
         }
         break;
     case 0x8000001E:
-        assert(cpu->core_id <= 255);
-        encode_topo_cpuid8000001e(&topo_info, cpu, eax, ebx, ecx, edx);
+        if (cpu->core_id <= 255) {
+            encode_topo_cpuid8000001e(&topo_info, cpu, eax, ebx, ecx, edx);
+        } else {
+            *eax = 0;
+            *ebx = 0;
+            *ecx = 0;
+            *edx = 0;
+        }
         break;
     case 0xC0000000:
         *eax = env->cpuid_xlevel2;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]