Message ID | 160072824160.9666.8890355282135970684.stgit@naples-babu.amd.com |
---|---|
State | New |
Headers | show |
Series | [v2] target/i386: Remove core_id assert check in CPUID 0x8000001E | expand |
On Mon, Sep 21, 2020 at 05:47:28PM -0500, Babu Moger wrote: > 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. > > 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> Queued, thanks! > --- > v2: > Resubmitting an old patch which was lost in the mix. > Just rebased on the latest tree. > v1: > https://lore.kernel.org/qemu-devel/159257395689.52908.4409314503988289481.stgit@naples-babu.amd.com/ > > target/i386/cpu.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/target/i386/cpu.c b/target/i386/cpu.c > index 1c58f764dc..4f1d62c838 100644 > --- a/target/i386/cpu.c > +++ b/target/i386/cpu.c > @@ -5912,9 +5912,14 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, > } > break; > case 0x8000001E: > - assert(cpu->core_id <= 255); > - encode_topo_cpuid8000001e(cpu, &topo_info, > - eax, ebx, ecx, edx); > + if (cpu->core_id <= 255) { > + encode_topo_cpuid8000001e(cpu, &topo_info, eax, ebx, ecx, edx); > + } else { > + *eax = 0; > + *ebx = 0; > + *ecx = 0; > + *edx = 0; > + } > break; > case 0xC0000000: > *eax = env->cpuid_xlevel2; >
diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 1c58f764dc..4f1d62c838 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -5912,9 +5912,14 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, } break; case 0x8000001E: - assert(cpu->core_id <= 255); - encode_topo_cpuid8000001e(cpu, &topo_info, - eax, ebx, ecx, edx); + if (cpu->core_id <= 255) { + encode_topo_cpuid8000001e(cpu, &topo_info, eax, ebx, ecx, edx); + } else { + *eax = 0; + *ebx = 0; + *ecx = 0; + *edx = 0; + } break; case 0xC0000000: *eax = env->cpuid_xlevel2;
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. 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> --- v2: Resubmitting an old patch which was lost in the mix. Just rebased on the latest tree. v1: https://lore.kernel.org/qemu-devel/159257395689.52908.4409314503988289481.stgit@naples-babu.amd.com/ target/i386/cpu.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)