hw/arm/virt-acpi-build: name GIC CPU Interface Structure appropriately
Also move the enabled flag definition from mach-virt code to acpi common. Signed-off-by: Andrew Jones <drjones@redhat.com> Message-id: 20170102200153.28864-3-drjones@redhat.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
330afe0599
commit
6e2ed65f4a
@ -581,11 +581,11 @@ build_madt(GArray *table_data, BIOSLinker *linker, VirtGuestInfo *guest_info)
|
|||||||
gicd->version = guest_info->gic_version;
|
gicd->version = guest_info->gic_version;
|
||||||
|
|
||||||
for (i = 0; i < guest_info->smp_cpus; i++) {
|
for (i = 0; i < guest_info->smp_cpus; i++) {
|
||||||
AcpiMadtGenericInterrupt *gicc = acpi_data_push(table_data,
|
AcpiMadtGenericCpuInterface *gicc = acpi_data_push(table_data,
|
||||||
sizeof *gicc);
|
sizeof(*gicc));
|
||||||
ARMCPU *armcpu = ARM_CPU(qemu_get_cpu(i));
|
ARMCPU *armcpu = ARM_CPU(qemu_get_cpu(i));
|
||||||
|
|
||||||
gicc->type = ACPI_APIC_GENERIC_INTERRUPT;
|
gicc->type = ACPI_APIC_GENERIC_CPU_INTERFACE;
|
||||||
gicc->length = sizeof(*gicc);
|
gicc->length = sizeof(*gicc);
|
||||||
if (guest_info->gic_version == 2) {
|
if (guest_info->gic_version == 2) {
|
||||||
gicc->base_address = cpu_to_le64(memmap[VIRT_GIC_CPU].base);
|
gicc->base_address = cpu_to_le64(memmap[VIRT_GIC_CPU].base);
|
||||||
@ -593,7 +593,7 @@ build_madt(GArray *table_data, BIOSLinker *linker, VirtGuestInfo *guest_info)
|
|||||||
gicc->cpu_interface_number = cpu_to_le32(i);
|
gicc->cpu_interface_number = cpu_to_le32(i);
|
||||||
gicc->arm_mpidr = cpu_to_le64(armcpu->mp_affinity);
|
gicc->arm_mpidr = cpu_to_le64(armcpu->mp_affinity);
|
||||||
gicc->uid = cpu_to_le32(i);
|
gicc->uid = cpu_to_le32(i);
|
||||||
gicc->flags = cpu_to_le32(ACPI_GICC_ENABLED);
|
gicc->flags = cpu_to_le32(ACPI_MADT_GICC_ENABLED);
|
||||||
|
|
||||||
if (arm_feature(&armcpu->env, ARM_FEATURE_PMU)) {
|
if (arm_feature(&armcpu->env, ARM_FEATURE_PMU)) {
|
||||||
gicc->performance_interrupt = cpu_to_le32(PPI(VIRTUAL_PMU_IRQ));
|
gicc->performance_interrupt = cpu_to_le32(PPI(VIRTUAL_PMU_IRQ));
|
||||||
|
@ -290,7 +290,7 @@ typedef struct AcpiMultipleApicTable AcpiMultipleApicTable;
|
|||||||
#define ACPI_APIC_XRUPT_SOURCE 8
|
#define ACPI_APIC_XRUPT_SOURCE 8
|
||||||
#define ACPI_APIC_LOCAL_X2APIC 9
|
#define ACPI_APIC_LOCAL_X2APIC 9
|
||||||
#define ACPI_APIC_LOCAL_X2APIC_NMI 10
|
#define ACPI_APIC_LOCAL_X2APIC_NMI 10
|
||||||
#define ACPI_APIC_GENERIC_INTERRUPT 11
|
#define ACPI_APIC_GENERIC_CPU_INTERFACE 11
|
||||||
#define ACPI_APIC_GENERIC_DISTRIBUTOR 12
|
#define ACPI_APIC_GENERIC_DISTRIBUTOR 12
|
||||||
#define ACPI_APIC_GENERIC_MSI_FRAME 13
|
#define ACPI_APIC_GENERIC_MSI_FRAME 13
|
||||||
#define ACPI_APIC_GENERIC_REDISTRIBUTOR 14
|
#define ACPI_APIC_GENERIC_REDISTRIBUTOR 14
|
||||||
@ -361,7 +361,7 @@ struct AcpiMadtLocalX2ApicNmi {
|
|||||||
} QEMU_PACKED;
|
} QEMU_PACKED;
|
||||||
typedef struct AcpiMadtLocalX2ApicNmi AcpiMadtLocalX2ApicNmi;
|
typedef struct AcpiMadtLocalX2ApicNmi AcpiMadtLocalX2ApicNmi;
|
||||||
|
|
||||||
struct AcpiMadtGenericInterrupt {
|
struct AcpiMadtGenericCpuInterface {
|
||||||
ACPI_SUB_HEADER_DEF
|
ACPI_SUB_HEADER_DEF
|
||||||
uint16_t reserved;
|
uint16_t reserved;
|
||||||
uint32_t cpu_interface_number;
|
uint32_t cpu_interface_number;
|
||||||
@ -378,7 +378,10 @@ struct AcpiMadtGenericInterrupt {
|
|||||||
uint64_t arm_mpidr;
|
uint64_t arm_mpidr;
|
||||||
} QEMU_PACKED;
|
} QEMU_PACKED;
|
||||||
|
|
||||||
typedef struct AcpiMadtGenericInterrupt AcpiMadtGenericInterrupt;
|
typedef struct AcpiMadtGenericCpuInterface AcpiMadtGenericCpuInterface;
|
||||||
|
|
||||||
|
/* GICC CPU Interface Flags */
|
||||||
|
#define ACPI_MADT_GICC_ENABLED 1
|
||||||
|
|
||||||
struct AcpiMadtGenericDistributor {
|
struct AcpiMadtGenericDistributor {
|
||||||
ACPI_SUB_HEADER_DEF
|
ACPI_SUB_HEADER_DEF
|
||||||
|
@ -24,8 +24,6 @@
|
|||||||
#include "hw/arm/virt.h"
|
#include "hw/arm/virt.h"
|
||||||
#include "qemu/notify.h"
|
#include "qemu/notify.h"
|
||||||
|
|
||||||
#define ACPI_GICC_ENABLED 1
|
|
||||||
|
|
||||||
typedef struct VirtGuestInfo {
|
typedef struct VirtGuestInfo {
|
||||||
int smp_cpus;
|
int smp_cpus;
|
||||||
FWCfgState *fw_cfg;
|
FWCfgState *fw_cfg;
|
||||||
|
Loading…
Reference in New Issue
Block a user