Skip to content

Commit 6485666

Browse files
JasonChenCJNanlinXie
authored andcommitted
Revert "hv: x2apic support for acrn"
This reverts commit 348e2ba.
1 parent 85ececd commit 6485666

File tree

14 files changed

+326
-132
lines changed

14 files changed

+326
-132
lines changed

hypervisor/arch/x86/cpu.c

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ static void cpu_cap_detect(void);
5454
static void cpu_xsave_init(void);
5555
static void set_current_cpu_id(uint16_t pcpu_id);
5656
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);
5858
int ibrs_type;
5959
static uint64_t start_tsc __attribute__((__section__(".bss_noinit")));
6060

@@ -276,9 +276,9 @@ static void alloc_phy_cpu_data(uint16_t pcpu_num)
276276
ASSERT(per_cpu_data_base_ptr != NULL, "");
277277
}
278278

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])
280280
{
281-
static const uint32_t lapic_id[] = {0U, 2U, 4U, 6U};
281+
static const uint8_t lapic_id[] = {0U, 2U, 4U, 6U};
282282
uint32_t i;
283283

284284
for (i = 0U; i < ARRAY_SIZE(lapic_id); i++) {
@@ -292,7 +292,7 @@ static void init_percpu_data_area(void)
292292
{
293293
uint16_t i;
294294
uint16_t pcpu_num = 0U;
295-
uint32_t lapic_id_array[MAX_PCPU_NUM];
295+
uint8_t lapic_id_array[MAX_PCPU_NUM];
296296

297297
/* Save all lapic_id detected via parse_mdt in lapic_id_array */
298298
pcpu_num = parse_madt(lapic_id_array);
@@ -306,6 +306,9 @@ static void init_percpu_data_area(void)
306306
for (i = 0U; i < pcpu_num; i++) {
307307
per_cpu(lapic_id, i) = lapic_id_array[i];
308308
}
309+
310+
ASSERT(get_cpu_id_from_lapic_id(get_cur_lapic_id()) != INVALID_CPU_ID,
311+
"fail to get phy cpu id");
309312
}
310313

311314
static void cpu_set_current_state(uint16_t pcpu_id, enum pcpu_boot_state state)
@@ -403,10 +406,6 @@ void bsp_boot_init(void)
403406
/* Initialize the hypervisor paging */
404407
init_paging();
405408

406-
if (!cpu_has_cap(X86_FEATURE_X2APIC)) {
407-
panic("x2APIC is not present!");
408-
}
409-
410409
early_init_lapic();
411410

412411
init_percpu_data_area();
@@ -582,7 +581,7 @@ static void cpu_secondary_post(void)
582581
cpu_dead(get_cpu_id());
583582
}
584583

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)
586585
{
587586
uint16_t i;
588587

hypervisor/arch/x86/guest/vmsr.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ static const uint32_t emulated_msrs[] = {
1414
MSR_IA32_BIOS_SIGN_ID, /* Enable MSR_IA32_BIOS_SIGN_ID */
1515
MSR_IA32_TIME_STAMP_COUNTER,
1616
MSR_IA32_PAT,
17-
MSR_IA32_APIC_BASE,
1817

1918
/* following MSR not emulated now */
2019
/*
20+
* MSR_IA32_APIC_BASE,
2121
* MSR_IA32_SYSENTER_CS,
2222
* MSR_IA32_SYSENTER_ESP,
2323
* MSR_IA32_SYSENTER_EIP,

hypervisor/arch/x86/irq.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,7 @@ void interrupt_init(uint16_t pcpu_id)
484484
struct host_idt_descriptor *idtd = &HOST_IDTR;
485485

486486
set_idt(idtd);
487-
init_lapic();
487+
init_lapic(pcpu_id);
488488
init_default_irqs(pcpu_id);
489489
#ifndef CONFIG_EFI_STUB
490490
CPU_IRQ_ENABLE();

0 commit comments

Comments
 (0)