|
@@ -2447,16 +2447,17 @@ static void do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function,
|
|
|
break;
|
|
|
}
|
|
|
case 0xd: {
|
|
|
- int i;
|
|
|
+ int idx, i;
|
|
|
|
|
|
entry->flags |= KVM_CPUID_FLAG_SIGNIFCANT_INDEX;
|
|
|
- for (i = 1; *nent < maxnent && i < 64; ++i) {
|
|
|
- if (entry[i].eax == 0 || !supported_xcr0_bit(i))
|
|
|
+ for (idx = 1, i = 1; *nent < maxnent && idx < 64; ++idx) {
|
|
|
+ do_cpuid_1_ent(&entry[i], function, idx);
|
|
|
+ if (entry[i].eax == 0 || !supported_xcr0_bit(idx))
|
|
|
continue;
|
|
|
- do_cpuid_1_ent(&entry[i], function, i);
|
|
|
entry[i].flags |=
|
|
|
KVM_CPUID_FLAG_SIGNIFCANT_INDEX;
|
|
|
++*nent;
|
|
|
+ ++i;
|
|
|
}
|
|
|
break;
|
|
|
}
|