i386: kvm: extract CPUID entry lookup to cpuid_find_entry() function
No behavior change, just code movement. Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
This commit is contained in:
		
							parent
							
								
									829ae2f9fa
								
							
						
					
					
						commit
						4fb73f1d3b
					
				@ -145,11 +145,28 @@ static uint32_t cpuid_entry_get_reg(struct kvm_cpuid_entry2 *entry, int reg)
 | 
				
			|||||||
    return ret;
 | 
					    return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Find matching entry for function/index on kvm_cpuid2 struct
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					static struct kvm_cpuid_entry2 *cpuid_find_entry(struct kvm_cpuid2 *cpuid,
 | 
				
			||||||
 | 
					                                                 uint32_t function,
 | 
				
			||||||
 | 
					                                                 uint32_t index)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    int i;
 | 
				
			||||||
 | 
					    for (i = 0; i < cpuid->nent; ++i) {
 | 
				
			||||||
 | 
					        if (cpuid->entries[i].function == function &&
 | 
				
			||||||
 | 
					            cpuid->entries[i].index == index) {
 | 
				
			||||||
 | 
					            return &cpuid->entries[i];
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    /* not found: */
 | 
				
			||||||
 | 
					    return NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint32_t kvm_arch_get_supported_cpuid(KVMState *s, uint32_t function,
 | 
					uint32_t kvm_arch_get_supported_cpuid(KVMState *s, uint32_t function,
 | 
				
			||||||
                                      uint32_t index, int reg)
 | 
					                                      uint32_t index, int reg)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    struct kvm_cpuid2 *cpuid;
 | 
					    struct kvm_cpuid2 *cpuid;
 | 
				
			||||||
    int i, max;
 | 
					    int max;
 | 
				
			||||||
    uint32_t ret = 0;
 | 
					    uint32_t ret = 0;
 | 
				
			||||||
    uint32_t cpuid_1_edx;
 | 
					    uint32_t cpuid_1_edx;
 | 
				
			||||||
    bool found = false;
 | 
					    bool found = false;
 | 
				
			||||||
@ -159,14 +176,11 @@ uint32_t kvm_arch_get_supported_cpuid(KVMState *s, uint32_t function,
 | 
				
			|||||||
        max *= 2;
 | 
					        max *= 2;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (i = 0; i < cpuid->nent; ++i) {
 | 
					    struct kvm_cpuid_entry2 *entry = cpuid_find_entry(cpuid, function, index);
 | 
				
			||||||
        if (cpuid->entries[i].function == function &&
 | 
					    if (entry) {
 | 
				
			||||||
            cpuid->entries[i].index == index) {
 | 
					 | 
				
			||||||
            struct kvm_cpuid_entry2 *entry = &cpuid->entries[i];
 | 
					 | 
				
			||||||
        found = true;
 | 
					        found = true;
 | 
				
			||||||
        ret = cpuid_entry_get_reg(entry, reg);
 | 
					        ret = cpuid_entry_get_reg(entry, reg);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Fixups for the data returned by KVM, below */
 | 
					    /* Fixups for the data returned by KVM, below */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user