mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-22 05:30:24 +00:00
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:
parent
860d9e6bd7
commit
5f406fb335
@ -308,6 +308,27 @@ static void set_fs_base(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#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)
|
void bsp_boot_init(void)
|
||||||
{
|
{
|
||||||
uint64_t start_tsc = rdtsc();
|
uint64_t start_tsc = rdtsc();
|
||||||
@ -375,6 +396,8 @@ void bsp_boot_init(void)
|
|||||||
*/
|
*/
|
||||||
get_cpu_capabilities();
|
get_cpu_capabilities();
|
||||||
|
|
||||||
|
get_cpu_name();
|
||||||
|
|
||||||
/* Initialize the hypervisor paging */
|
/* Initialize the hypervisor paging */
|
||||||
init_paging();
|
init_paging();
|
||||||
|
|
||||||
@ -434,6 +457,8 @@ void bsp_boot_init(void)
|
|||||||
printf("API version %d.%d\r\n",
|
printf("API version %d.%d\r\n",
|
||||||
HV_API_MAJOR_VERSION, HV_API_MINOR_VERSION);
|
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);
|
pr_dbg("Core %d is up", CPU_BOOT_ID);
|
||||||
|
|
||||||
/* Warn for security feature not ready */
|
/* Warn for security feature not ready */
|
||||||
|
@ -236,6 +236,7 @@ struct cpuinfo_x86 {
|
|||||||
uint8_t x86, x86_model;
|
uint8_t x86, x86_model;
|
||||||
uint64_t physical_address_mask;
|
uint64_t physical_address_mask;
|
||||||
uint32_t cpuid_leaves[FEATURE_WORDS];
|
uint32_t cpuid_leaves[FEATURE_WORDS];
|
||||||
|
char model_name[64];
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct cpuinfo_x86 boot_cpu_data;
|
extern struct cpuinfo_x86 boot_cpu_data;
|
||||||
|
@ -115,6 +115,9 @@
|
|||||||
#define CPUID_EXTEND_FEATURE 7
|
#define CPUID_EXTEND_FEATURE 7
|
||||||
#define CPUID_MAX_EXTENDED_FUNCTION 0x80000000
|
#define CPUID_MAX_EXTENDED_FUNCTION 0x80000000
|
||||||
#define CPUID_EXTEND_FUNCTION_1 0x80000001
|
#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
|
#define CPUID_EXTEND_ADDRESS_SIZE 0x80000008
|
||||||
|
|
||||||
static inline void __cpuid(uint32_t *eax, uint32_t *ebx,
|
static inline void __cpuid(uint32_t *eax, uint32_t *ebx,
|
||||||
|
Loading…
Reference in New Issue
Block a user