On 03/03/20 00:56, Sean Christopherson wrote: > (KVM hard caps CPUID 0xD at a single sub-leaf). Hmm... no it doesn't? for (idx = 1, i = 1; idx < 64; ++idx) { u64 mask = ((u64)1 << idx); if (*nent >= maxnent) goto out; do_host_cpuid(&entry[i], function, idx); if (idx == 1) { entry[i].eax &= kvm_cpuid_D_1_eax_x86_features; cpuid_mask(&entry[i].eax, CPUID_D_1_EAX); entry[i].ebx = 0; if (entry[i].eax & (F(XSAVES)|F(XSAVEC))) entry[i].ebx = xstate_required_size(supported, true); } else { if (entry[i].eax == 0 || !(supported & mask)) continue; if (WARN_ON_ONCE(entry[i].ecx & 1)) continue; } entry[i].ecx = 0; entry[i].edx = 0; ++*nent; ++i; } I still think the patch is correct, what matters is that no KVM in existence supports enough processor features to reach 100 or so subleaves. Paolo