qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] target/i386: Remove core_id assert check in CPUID 0x8000001E
@ 2020-06-19 13:39 Babu Moger
  2020-06-19 14:45 ` no-reply
  0 siblings, 1 reply; 3+ messages in thread
From: Babu Moger @ 2020-06-19 13:39 UTC (permalink / raw)
  To: pbonzini, rth, ehabkost; +Cc: qemu-devel

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;



^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-06-19 16:50 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-06-19 13:39 [PATCH] target/i386: Remove core_id assert check in CPUID 0x8000001E Babu Moger
2020-06-19 14:45 ` no-reply
2020-06-19 16:49   ` Babu Moger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).