On Thu, 27 May 2021, Paul Gofman wrote: [...]
I have AMD Ryzen 5 3500X, Windows 10 Pro, 20H2 Build 19042.985. Everything was the same with these test results at the moment of writing the original patch. Maybe this depends on CPU feature flags, or AVX2. As far as I looked up, i7-2600K is from early 2010s and doesn't support AVX2, maybe it doesn't support some other xstate related features like xsavec or xsaveopt (I don't have a full cpuid for that CPU to be sure).
I think it has to do with the xsavec support. Running the (Linux) cpuid tool on the cw-* machines gives:
i7-2600K: XSAVE features (0xd/1): XSAVEOPT instruction = true XSAVEC instruction = false XGETBV instruction = false XSAVES/XRSTORS instructions = false SAVE area size in bytes = 0x00000000 (0) IA32_XSS lower 32 bits valid bit field mask = 0x00000000 IA32_XSS upper 32 bits valid bit field mask = 0x00000000
(same thing in the TestBot VMs and on my i7-4790K)
And the test does not get the broken case if I run it in a Windows 10 VM on my laptop where cpuid says:
i7-8565U: XSAVE features (0xd/1): XSAVEOPT instruction = true XSAVEC instruction = true XGETBV instruction = true XSAVES/XRSTORS instructions = true SAVE area size in bytes = 0x000003c0 (960) IA32_XSS lower 32 bits valid bit field mask = 0x00000100 IA32_XSS upper 32 bits valid bit field mask = 0x00000000
I think that's also the reason for the failure on Windows 8.1. So I'll send a patch.