KVM: x86: Advertise AMX-COMPLEX CPUID to userspace
authorTao Su <tao1.su@linux.intel.com>
Wed, 2 Aug 2023 02:29:54 +0000 (10:29 +0800)
committerSean Christopherson <seanjc@google.com>
Thu, 3 Aug 2023 22:40:17 +0000 (15:40 -0700)
commit99b668545356115e11a6cca519361c8cfd02569e
tree1b580315ab04ebd32546d3eb2f4b6b5a4fbceed7
parenta788fbb763b5001f67f2ecdf207a357f9b12838f
KVM: x86: Advertise AMX-COMPLEX CPUID to userspace

Latest Intel platform GraniteRapids-D introduces AMX-COMPLEX, which adds
two instructions to perform matrix multiplication of two tiles containing
complex elements and accumulate the results into a packed single precision
tile.

AMX-COMPLEX is enumerated via CPUID.(EAX=7,ECX=1):EDX[bit 8]

Advertise AMX_COMPLEX if it's supported in hardware.  There are no VMX
controls for the feature, i.e. the instructions can't be interecepted, and
KVM advertises base AMX in CPUID if AMX is supported in hardware, even if
KVM doesn't advertise AMX as being supported in XCR0, e.g. because the
process didn't opt-in to allocating tile data.

Signed-off-by: Tao Su <tao1.su@linux.intel.com>
Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
Link: https://lore.kernel.org/r/20230802022954.193843-1-tao1.su@linux.intel.com
[sean: tweak last paragraph of changelog]
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/cpuid.c
arch/x86/kvm/reverse_cpuid.h