mbox series

[v3,0/8] Add AVX10.1 CPUID support and GraniteRapids-v2 model

Message ID 20241031085233.425388-1-tao1.su@linux.intel.com
Headers show
Series Add AVX10.1 CPUID support and GraniteRapids-v2 model | expand

Message

Tao Su Oct. 31, 2024, 8:52 a.m. UTC
Add AVX10.1 CPUID support, i.e. add AVX10 support bit via
CPUID.(EAX=07H, ECX=01H):EDX[bit 19] and new CPUID leaf 0x24H so that
guest OS and applications can query the AVX10 CPUIDs directly. The AVX10.1
spec can be found in [1], it is worth mentioning that
VL128 (CPUID.(EAX=24H, ECX=00H):EBX[bit 16]) was dropped in rev3.0, but it
will be added back and reserved as 1 (SDM and AVX10.2 spec[2] have already
described).

Since GraniteRapids (stepping 1) is the first platform to support AVX10,
introduce GraniteRapids-v2 CPU model to add AVX10 in this patch set, and
add some missing features as well.

[1] https://cdrdv2.intel.com/v1/dl/getContent/671200
[2] https://cdrdv2.intel.com/v1/dl/getContent/828965

---
Changelog:

v2->v3:
 - Move assigning avx10_version from max_x86_cpu_realize() to
   x86_cpu_expand_features().
 - Add CPUIDs of vector lengths back in cpu_x86_cpuid().
 - Update comment on x86_cpu_expand_features(). (Zhao)
 - Tell user about revised version if version is invalid. (Zhao)
 - Handle when AVX10 enable bit is disabled but user sets avx10-verion.
   (Zhao)
 - Add Zhao's Reviewed-by and Xuelian's Tested-by.

v2: https://lore.kernel.org/all/20241029151858.550269-1-pbonzini@redhat.com/
v1: https://lore.kernel.org/all/20241028024512.156724-1-tao1.su@linux.intel.com/

---
Paolo Bonzini (3):
  target/i386: cpu: set correct supported XCR0 features for TCG
  target/i386: do not rely on ExtSaveArea for accelerator-supported XCR0
    bits
  target/i386: return bool from x86_cpu_filter_features

Tao Su (5):
  target/i386: add AVX10 feature and AVX10 version property
  target/i386: add CPUID.24 features for AVX10
  target/i386: Add feature dependencies for AVX10
  target/i386: Add AVX512 state when AVX10 is supported
  target/i386: Introduce GraniteRapids-v2 model

 target/i386/cpu.c         | 177 ++++++++++++++++++++++++++++++++++----
 target/i386/cpu.h         |  16 ++++
 target/i386/kvm/kvm-cpu.c |   4 -
 target/i386/kvm/kvm.c     |   3 +-
 4 files changed, 176 insertions(+), 24 deletions(-)


base-commit: 58d49b5895f2e0b5cfe4b2901bf24f3320b74f29