HV: add cpu model name

The cpu model name would be used to distinguish which hard coded data
need to be loaded to boot_cpu_data;

Signed-off-by: Victor Sun <victor.sun@intel.com>
Acked-by: Kevin Tian <kevin.tian@intel.com>
This commit is contained in:
Victor Sun 2018-04-04 13:30:19 +08:00 committed by lijinxia
parent 860d9e6bd7
commit 5f406fb335
3 changed files with 29 additions and 0 deletions

View File

@ -308,6 +308,27 @@ static void set_fs_base(void)
}
#endif
static void get_cpu_name(void)
{
cpuid(CPUID_EXTEND_FUNCTION_2,
(uint32_t *)(boot_cpu_data.model_name),
(uint32_t *)(boot_cpu_data.model_name + 4),
(uint32_t *)(boot_cpu_data.model_name + 8),
(uint32_t *)(boot_cpu_data.model_name + 12));
cpuid(CPUID_EXTEND_FUNCTION_3,
(uint32_t *)(boot_cpu_data.model_name + 16),
(uint32_t *)(boot_cpu_data.model_name + 20),
(uint32_t *)(boot_cpu_data.model_name + 24),
(uint32_t *)(boot_cpu_data.model_name + 28));
cpuid(CPUID_EXTEND_FUNCTION_4,
(uint32_t *)(boot_cpu_data.model_name + 32),
(uint32_t *)(boot_cpu_data.model_name + 36),
(uint32_t *)(boot_cpu_data.model_name + 40),
(uint32_t *)(boot_cpu_data.model_name + 44));
boot_cpu_data.model_name[48] = '\0';
}
void bsp_boot_init(void)
{
uint64_t start_tsc = rdtsc();
@ -375,6 +396,8 @@ void bsp_boot_init(void)
*/
get_cpu_capabilities();
get_cpu_name();
/* Initialize the hypervisor paging */
init_paging();
@ -434,6 +457,8 @@ void bsp_boot_init(void)
printf("API version %d.%d\r\n",
HV_API_MAJOR_VERSION, HV_API_MINOR_VERSION);
printf("Detect processor: %s\n", boot_cpu_data.model_name);
pr_dbg("Core %d is up", CPU_BOOT_ID);
/* Warn for security feature not ready */

View File

@ -236,6 +236,7 @@ struct cpuinfo_x86 {
uint8_t x86, x86_model;
uint64_t physical_address_mask;
uint32_t cpuid_leaves[FEATURE_WORDS];
char model_name[64];
};
extern struct cpuinfo_x86 boot_cpu_data;

View File

@ -115,6 +115,9 @@
#define CPUID_EXTEND_FEATURE 7
#define CPUID_MAX_EXTENDED_FUNCTION 0x80000000
#define CPUID_EXTEND_FUNCTION_1 0x80000001
#define CPUID_EXTEND_FUNCTION_2 0x80000002
#define CPUID_EXTEND_FUNCTION_3 0x80000003
#define CPUID_EXTEND_FUNCTION_4 0x80000004
#define CPUID_EXTEND_ADDRESS_SIZE 0x80000008
static inline void __cpuid(uint32_t *eax, uint32_t *ebx,