Hi Andy,
On 11/07/2011 08:23 AM, Tomas Mraz via RT wrote:
> No, the test is bypassed if XSAVE is 0, not 1. XSAVE being 0 also
> implies that AVX flag [as well as FMA and XOP] is 0, which is why is
> jumps to 'done' and not 'clear_avx'.
This assertion is unfortunately not true on RHEL-6 guests on AVX capable
CPUs in XEN VM.
In fact, I can't find in any spec the assertion that XSAVE=0 implies
AVX=FMA=XOP=0 (I checked "Intel 64 and IA-32 Architectures
Software Developer's Manual" volumes 1/2/3 and Intel appnote 485, "Intel
Processor Identification and the CPUID Instruction".
The only assertion I found is that XSAVE=0 implies OSXSAVE=0 (and
OSXSAVE=1 implies XSAVE=1). It's in 13.8.1 of the SDM volume 3A, and
the text there roughly matches my patch and x86_64cpuid.pl:
Applications do not need to check the value of CPUID.01H:ECX.XSAVE
because "CPUID.01H:ECX.OSXSAVE = 1" implies OS has successfully
verified CPUID.01H:ECX.XSAVE = 1. CPUID.01H:ECX.OSXSAVE reflects the
value of CR4.OSXSAVE, and this bit cannot be set to 1 unless
CPUID.01H:ECX.XSAVE = 1.
(Regarding my statement that "the whole test is bypassed if XSAVE=1",
that was indeed my mistake).
Paolo
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List openssl-dev@openssl.org
Automated List Manager majord...@openssl.org