This series fixes the inconsistency between CPUID[7].EBX features
and all the rest of the configurable CPU features. This ensures
that level/xlevel/xlevel2 will be set to appropriate values
depending on the set of features enabled in a CPU model or in the

Changes v1 -> v2:
* Coding style changes (split long lines)
* Simplify compat logic: instead of 3 max_level* fields and
  2 cpuid_auto_level_* fields, add a single full_cpuid_auto_level
  boolean field
* If the user set level/xlevel/xlevel2 to 0 explicitly, do what
  was asked for (use UINT32_MAX as default value)

Eduardo Habkost (6):
  target-i386: Remove unused X86CPUDefinition::xlevel2 field
  target-i386: Add a marker to end of the region zeroed on reset
  tests: Add test code for CPUID level/xlevel handling
  tests: Test CPUID level handling for old machines
  target-i386: Automatically set level/xlevel/xlevel2 when needed
  target-i386: Enable CPUID[0x8000000A] if SVM is enabled

 include/hw/i386/pc.h          |   7 +-
 target-i386/cpu.c             |  92 +++++++++++++++++++----
 target-i386/cpu.h             |  13 +++-
 tests/Makefile.include        |   2 +
 tests/test-x86-cpuid-compat.c | 171 ++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 268 insertions(+), 17 deletions(-)
 create mode 100644 tests/test-x86-cpuid-compat.c


Reply via email to