qemu does not generate guest cpu topology properly Adding the option -smp 12,sockets=2,cores=6,threads=1 exposes Machine (12GB) Socket #0 L2 L#0 (512KB) + L1 L#0 (64KB) + Core L#0 + PU L#0 (P#0) L2 L#1 (512KB) + L1 L#1 (64KB) + Core L#1 + PU L#1 (P#1) L2 L#2 (512KB) + L1 L#2 (64KB) + Core L#2 + PU L#2 (P#2) L2 L#3 (512KB) + L1 L#3 (64KB) + Core L#3 + PU L#3 (P#3) L2 L#4 (512KB) + L1 L#4 (64KB) + Core L#4 + PU L#4 (P#4) L2 L#5 (512KB) + L1 L#5 (64KB) + Core L#5 + PU L#5 (P#5) L2 L#6 (512KB) + L1 L#6 (64KB) + Core L#6 + PU L#6 (P#6) L2 L#7 (512KB) + L1 L#7 (64KB) + Core L#7 + PU L#7 (P#7) Socket #1 L2 L#8 (512KB) + L1 L#8 (64KB) + Core L#8 + PU L#8 (P#8) L2 L#9 (512KB) + L1 L#9 (64KB) + Core L#9 + PU L#9 (P#9) L2 L#10 (512KB) + L1 L#10 (64KB) + Core L#10 + PU L#10 (P#10) L2 L#11 (512KB) + L1 L#11 (64KB) + Core L#11 + PU L#11 (P#11) Rather than: Machine (12GB) Socket #0 L2 L#0 (512KB) + L1 L#0 (64KB) + Core L#0 + PU L#0 (P#0) L2 L#1 (512KB) + L1 L#1 (64KB) + Core L#1 + PU L#1 (P#1) L2 L#2 (512KB) + L1 L#2 (64KB) + Core L#2 + PU L#2 (P#2) L2 L#3 (512KB) + L1 L#3 (64KB) + Core L#3 + PU L#3 (P#3) L2 L#4 (512KB) + L1 L#4 (64KB) + Core L#4 + PU L#4 (P#4) L2 L#5 (512KB) + L1 L#5 (64KB) + Core L#5 + PU L#5 (P#5) Socket #1 L2 L#6 (512KB) + L1 L#6 (64KB) + Core L#6 + PU L#6 (P#6) L2 L#7 (512KB) + L1 L#7 (64KB) + Core L#7 + PU L#7 (P#7) L2 L#8 (512KB) + L1 L#8 (64KB) + Core L#8 + PU L#8 (P#8) L2 L#9 (512KB) + L1 L#9 (64KB) + Core L#9 + PU L#9 (P#9) L2 L#10 (512KB) + L1 L#10 (64KB) + Core L#10 + PU L#10 (P#10) L2 L#11 (512KB) + L1 L#11 (64KB) + Core L#11 + PU L#11 (P#11) Here is a cpuid dump from inside the guest and dump from more recent version of cpuid, in which you can see a bit more detail. The later contains data for a single CPU, because the others are the same. Reproducible on qemu 1.0 and 1.2. with guest os Fedora 17, Debian 6, Debian Squeeze and Windows 2008 R2.