On Fri, Jun 08, 2018 at 06:56:17PM -0400, Babu Moger wrote: > Add support for cpuid leaf CPUID_8000_001E. Build the config that closely > match the underlying hardware. Please refer to the Processor Programming > Reference (PPR) for AMD Family 17h Model for more details. > > Signed-off-by: Babu Moger <babu.moger@xxxxxxx> [...] > + case 0x8000001E: > + assert(cpu->core_id <= 255); It is possible to trigger this assert using: $ qemu-system-x86_64 -machine q35,accel=kvm,kernel-irqchip=split -device intel-iommu,intremap=on,eim=on -smp 1,maxcpus=258,cores=258,threads=1,sockets=1 -cpu qemu64,xlevel=0x8000001e -device qemu64-x86_64-cpu,apic-id=257 qemu-system-x86_64: warning: Number of hotpluggable cpus requested (258) exceeds the recommended cpus supported by KVM (240) qemu-system-x86_64: /home/ehabkost/rh/proj/virt/qemu/target/i386/cpu.c:5888: cpu_x86_cpuid: Assertion `cpu->core_id <= 255' failed. Aborted (core dumped) See bug report and discussion at https://bugzilla.redhat.com/show_bug.cgi?id=1834200 Also, it looks like encode_topo_cpuid8000001e() assumes core_id has only 3 bits, so the existing assert() is not even sufficient. We need to decide what to do if the user requests nr_cores > 8. Probably omitting CPUID[0x8000001E] if the VCPU topology is incompatible with encode_topo_cpuid8000001e() (and printing a warning) is the safest thing to do right now. > + encode_topo_cpuid8000001e(cs, cpu, > + eax, ebx, ecx, edx); > + break; > case 0xC0000000: > *eax = env->cpuid_xlevel2; > *ebx = 0; > -- > 1.8.3.1 > -- Eduardo