mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-08-14 06:16:38 +00:00
hv: vacpi: add ioapic madt table
Add IOAPIC MADT table support so that guest could detect IOAPIC exist. Tracked-On: #4623 Signed-off-by: Li Fei1 <fei1.li@intel.com>
This commit is contained in:
parent
1dccbdbaa2
commit
113f2f1e35
@ -87,6 +87,12 @@ static struct acpi_table_info acpi_table_template[CONFIG_MAX_VM_NUM] = {
|
|||||||
.address = 0xFEE00000U, /* Local APIC Address */
|
.address = 0xFEE00000U, /* Local APIC Address */
|
||||||
.flags = 0x1U, /* PC-AT Compatibility=1 */
|
.flags = 0x1U, /* PC-AT Compatibility=1 */
|
||||||
},
|
},
|
||||||
|
.ioapic_struct = {
|
||||||
|
.header.type = ACPI_MADT_TYPE_IOAPIC,
|
||||||
|
.header.length = sizeof(struct acpi_madt_ioapic),
|
||||||
|
.id = 0x1U,
|
||||||
|
.addr = VIOAPIC_BASE,
|
||||||
|
},
|
||||||
.lapic_nmi = {
|
.lapic_nmi = {
|
||||||
.header.type = ACPI_MADT_TYPE_LOCAL_APIC_NMI,
|
.header.type = ACPI_MADT_TYPE_LOCAL_APIC_NMI,
|
||||||
.header.length = sizeof(struct acpi_madt_local_apic_nmi),
|
.header.length = sizeof(struct acpi_madt_local_apic_nmi),
|
||||||
@ -166,7 +172,7 @@ void build_vacpi(struct acrn_vm *vm)
|
|||||||
}
|
}
|
||||||
|
|
||||||
madt = &acpi_table_template[vm->vm_id].madt;
|
madt = &acpi_table_template[vm->vm_id].madt;
|
||||||
madt->header.length = sizeof(struct acpi_table_madt)
|
madt->header.length = sizeof(struct acpi_table_madt) + sizeof(struct acpi_madt_ioapic)
|
||||||
+ sizeof(struct acpi_madt_local_apic_nmi)
|
+ sizeof(struct acpi_madt_local_apic_nmi)
|
||||||
+ (sizeof(struct acpi_madt_local_apic) * (size_t)vm->hw.created_vcpus);
|
+ (sizeof(struct acpi_madt_local_apic) * (size_t)vm->hw.created_vcpus);
|
||||||
madt->header.checksum = calculate_checksum8(madt, madt->header.length);
|
madt->header.checksum = calculate_checksum8(madt, madt->header.length);
|
||||||
|
@ -66,6 +66,7 @@ struct acpi_table_info {
|
|||||||
struct acpi_table_mcfg mcfg;
|
struct acpi_table_mcfg mcfg;
|
||||||
struct acpi_mcfg_allocation mcfg_entry; /* mcfg_entry msut be declared fellowing mcfg */
|
struct acpi_mcfg_allocation mcfg_entry; /* mcfg_entry msut be declared fellowing mcfg */
|
||||||
struct acpi_table_madt madt;
|
struct acpi_table_madt madt;
|
||||||
|
struct acpi_madt_ioapic ioapic_struct;
|
||||||
struct acpi_madt_local_apic_nmi lapic_nmi;
|
struct acpi_madt_local_apic_nmi lapic_nmi;
|
||||||
struct acpi_madt_local_apic lapic_array[MAX_PCPU_NUM];
|
struct acpi_madt_local_apic lapic_array[MAX_PCPU_NUM];
|
||||||
} __packed;
|
} __packed;
|
||||||
|
Loading…
Reference in New Issue
Block a user