This patch changes how MSHV constructs and registers the guest CPUID table.
It consists of two commits:
1. i386/cpu.c: Adjust minimum xlevel to 0x8000_001E when TOPOEXT is enabled
2. mshv/mshv-cpu.c: Collect all Intel topology subleaves and AMD cache subleaves
The first commit changes the extended CPUID level to 0x8000_001E when the TOPOEXT
feature is enabled.
This fix correctly reports CPU topology and cache leaves when TOPOEXT is
enabled.
Previous to the second commit, `collect_cpuid_entries` treated `0x0b` and `0x1f`
like ordinary leaves and collected only sub-leaf zero. But these Intel topology
leaves contain one sub-leaf per topology level.
With this patch, now it repeatedly calls `cpu_x86_cpuid` and stores every
result until ECX[15:8] becomes zero (same as kvm does).
Doru Blânzeanu (2):
i386/cpu.c: Adjust minimum xlevel to 0x8000_001E when TOPOEXT is
enabled
mshv/mshv-cpu.c: Collect all Intel topology subleaves and AMD cache
subleaves
target/i386/cpu.c | 5 +++++
target/i386/mshv/mshv-cpu.c | 41 +++++++++++++++++++++++++++++--------
2 files changed, 38 insertions(+), 8 deletions(-)
--
2.53.0