@@ -54,7 +54,7 @@ static void cpu_cap_detect(void);
54
54
static void cpu_xsave_init (void );
55
55
static void set_current_cpu_id (uint16_t pcpu_id );
56
56
static void print_hv_banner (void );
57
- static uint16_t get_cpu_id_from_lapic_id (uint32_t lapic_id );
57
+ static uint16_t get_cpu_id_from_lapic_id (uint8_t lapic_id );
58
58
int ibrs_type ;
59
59
static uint64_t start_tsc __attribute__((__section__ (".bss_noinit" )));
60
60
@@ -276,9 +276,9 @@ static void alloc_phy_cpu_data(uint16_t pcpu_num)
276
276
ASSERT (per_cpu_data_base_ptr != NULL , "" );
277
277
}
278
278
279
- uint16_t __attribute__((weak )) parse_madt (uint32_t lapic_id_array [MAX_PCPU_NUM ])
279
+ uint16_t __attribute__((weak )) parse_madt (uint8_t lapic_id_array [MAX_PCPU_NUM ])
280
280
{
281
- static const uint32_t lapic_id [] = {0U , 2U , 4U , 6U };
281
+ static const uint8_t lapic_id [] = {0U , 2U , 4U , 6U };
282
282
uint32_t i ;
283
283
284
284
for (i = 0U ; i < ARRAY_SIZE (lapic_id ); i ++ ) {
@@ -292,7 +292,7 @@ static void init_percpu_data_area(void)
292
292
{
293
293
uint16_t i ;
294
294
uint16_t pcpu_num = 0U ;
295
- uint32_t lapic_id_array [MAX_PCPU_NUM ];
295
+ uint8_t lapic_id_array [MAX_PCPU_NUM ];
296
296
297
297
/* Save all lapic_id detected via parse_mdt in lapic_id_array */
298
298
pcpu_num = parse_madt (lapic_id_array );
@@ -306,6 +306,9 @@ static void init_percpu_data_area(void)
306
306
for (i = 0U ; i < pcpu_num ; i ++ ) {
307
307
per_cpu (lapic_id , i ) = lapic_id_array [i ];
308
308
}
309
+
310
+ ASSERT (get_cpu_id_from_lapic_id (get_cur_lapic_id ()) != INVALID_CPU_ID ,
311
+ "fail to get phy cpu id" );
309
312
}
310
313
311
314
static void cpu_set_current_state (uint16_t pcpu_id , enum pcpu_boot_state state )
@@ -403,10 +406,6 @@ void bsp_boot_init(void)
403
406
/* Initialize the hypervisor paging */
404
407
init_paging ();
405
408
406
- if (!cpu_has_cap (X86_FEATURE_X2APIC )) {
407
- panic ("x2APIC is not present!" );
408
- }
409
-
410
409
early_init_lapic ();
411
410
412
411
init_percpu_data_area ();
@@ -582,7 +581,7 @@ static void cpu_secondary_post(void)
582
581
cpu_dead (get_cpu_id ());
583
582
}
584
583
585
- static uint16_t get_cpu_id_from_lapic_id (uint32_t lapic_id )
584
+ static uint16_t get_cpu_id_from_lapic_id (uint8_t lapic_id )
586
585
{
587
586
uint16_t i ;
588
587
0 commit comments