KVM: x86: Clean up CPUID 0x7 sub-leaf loop
authorSean Christopherson <sean.j.christopherson@intel.com>
Mon, 2 Mar 2020 23:56:13 +0000 (15:56 -0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 16 Mar 2020 16:58:01 +0000 (17:58 +0100)
Refactor the sub-leaf loop for CPUID 0x7 to move the main leaf out of
said loop.  The emitted code savings is basically a mirage, as the
handling of the main leaf can easily be split to its own helper to avoid
code bloat.

No functional change intended.

Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/cpuid.c

index 6e1685a..b626893 100644 (file)
@@ -573,16 +573,16 @@ static inline int __do_cpuid_func(struct kvm_cpuid_entry2 *entry, u32 function,
        case 7: {
                int i;
 
-               for (i = 0; ; ) {
-                       do_cpuid_7_mask(&entry[i], i);
-                       if (i == entry->eax)
-                               break;
+               do_cpuid_7_mask(entry, 0);
+
+               for (i = 1; i <= entry->eax; i++) {
                        if (*nent >= maxnent)
                                goto out;
 
-                       ++i;
                        do_host_cpuid(&entry[i], function, i);
                        ++*nent;
+
+                       do_cpuid_7_mask(&entry[i], i);
                }
                break;
        }