diff options
author | RajithaY <rajithax.yerrumsetty@intel.com> | 2017-04-25 03:31:15 -0700 |
---|---|---|
committer | Rajitha Yerrumchetty <rajithax.yerrumsetty@intel.com> | 2017-05-22 06:48:08 +0000 |
commit | bb756eebdac6fd24e8919e2c43f7d2c8c4091f59 (patch) | |
tree | ca11e03542edf2d8f631efeca5e1626d211107e3 /qemu/include/hw/acpi | |
parent | a14b48d18a9ed03ec191cf16b162206998a895ce (diff) |
Adding qemu as a submodule of KVMFORNFV
This Patch includes the changes to add qemu as a submodule to
kvmfornfv repo and make use of the updated latest qemu for the
execution of all testcase
Change-Id: I1280af507a857675c7f81d30c95255635667bdd7
Signed-off-by:RajithaY<rajithax.yerrumsetty@intel.com>
Diffstat (limited to 'qemu/include/hw/acpi')
-rw-r--r-- | qemu/include/hw/acpi/acpi-defs.h | 573 | ||||
-rw-r--r-- | qemu/include/hw/acpi/acpi.h | 204 | ||||
-rw-r--r-- | qemu/include/hw/acpi/acpi_dev_interface.h | 43 | ||||
-rw-r--r-- | qemu/include/hw/acpi/aml-build.h | 375 | ||||
-rw-r--r-- | qemu/include/hw/acpi/bios-linker-loader.h | 25 | ||||
-rw-r--r-- | qemu/include/hw/acpi/cpu_hotplug.h | 38 | ||||
-rw-r--r-- | qemu/include/hw/acpi/ich9.h | 79 | ||||
-rw-r--r-- | qemu/include/hw/acpi/memory_hotplug.h | 57 | ||||
-rw-r--r-- | qemu/include/hw/acpi/pc-hotplug.h | 57 | ||||
-rw-r--r-- | qemu/include/hw/acpi/pcihp.h | 78 | ||||
-rw-r--r-- | qemu/include/hw/acpi/piix4.h | 6 | ||||
-rw-r--r-- | qemu/include/hw/acpi/tco.h | 81 | ||||
-rw-r--r-- | qemu/include/hw/acpi/tpm.h | 34 |
13 files changed, 0 insertions, 1650 deletions
diff --git a/qemu/include/hw/acpi/acpi-defs.h b/qemu/include/hw/acpi/acpi-defs.h deleted file mode 100644 index c7a03d43b..000000000 --- a/qemu/include/hw/acpi/acpi-defs.h +++ /dev/null @@ -1,573 +0,0 @@ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - - * You should have received a copy of the GNU General Public License along - * with this program; if not, see <http://www.gnu.org/licenses/>. - */ -#ifndef QEMU_ACPI_DEFS_H -#define QEMU_ACPI_DEFS_H - -enum { - ACPI_FADT_F_WBINVD, - ACPI_FADT_F_WBINVD_FLUSH, - ACPI_FADT_F_PROC_C1, - ACPI_FADT_F_P_LVL2_UP, - ACPI_FADT_F_PWR_BUTTON, - ACPI_FADT_F_SLP_BUTTON, - ACPI_FADT_F_FIX_RTC, - ACPI_FADT_F_RTC_S4, - ACPI_FADT_F_TMR_VAL_EXT, - ACPI_FADT_F_DCK_CAP, - ACPI_FADT_F_RESET_REG_SUP, - ACPI_FADT_F_SEALED_CASE, - ACPI_FADT_F_HEADLESS, - ACPI_FADT_F_CPU_SW_SLP, - ACPI_FADT_F_PCI_EXP_WAK, - ACPI_FADT_F_USE_PLATFORM_CLOCK, - ACPI_FADT_F_S4_RTC_STS_VALID, - ACPI_FADT_F_REMOTE_POWER_ON_CAPABLE, - ACPI_FADT_F_FORCE_APIC_CLUSTER_MODEL, - ACPI_FADT_F_FORCE_APIC_PHYSICAL_DESTINATION_MODE, - ACPI_FADT_F_HW_REDUCED_ACPI, - ACPI_FADT_F_LOW_POWER_S0_IDLE_CAPABLE, -}; - -/* - * ACPI 2.0 Generic Address Space definition. - */ -struct Acpi20GenericAddress { - uint8_t address_space_id; - uint8_t register_bit_width; - uint8_t register_bit_offset; - uint8_t reserved; - uint64_t address; -} QEMU_PACKED; -typedef struct Acpi20GenericAddress Acpi20GenericAddress; - -struct AcpiRsdpDescriptor { /* Root System Descriptor Pointer */ - uint64_t signature; /* ACPI signature, contains "RSD PTR " */ - uint8_t checksum; /* To make sum of struct == 0 */ - uint8_t oem_id [6]; /* OEM identification */ - uint8_t revision; /* Must be 0 for 1.0, 2 for 2.0 */ - uint32_t rsdt_physical_address; /* 32-bit physical address of RSDT */ - uint32_t length; /* XSDT Length in bytes including hdr */ - uint64_t xsdt_physical_address; /* 64-bit physical address of XSDT */ - uint8_t extended_checksum; /* Checksum of entire table */ - uint8_t reserved [3]; /* Reserved field must be 0 */ -} QEMU_PACKED; -typedef struct AcpiRsdpDescriptor AcpiRsdpDescriptor; - -/* Table structure from Linux kernel (the ACPI tables are under the - BSD license) */ - - -#define ACPI_TABLE_HEADER_DEF /* ACPI common table header */ \ - uint32_t signature; /* ACPI signature (4 ASCII characters) */ \ - uint32_t length; /* Length of table, in bytes, including header */ \ - uint8_t revision; /* ACPI Specification minor version # */ \ - uint8_t checksum; /* To make sum of entire table == 0 */ \ - uint8_t oem_id [6]; /* OEM identification */ \ - uint8_t oem_table_id [8]; /* OEM table identification */ \ - uint32_t oem_revision; /* OEM revision number */ \ - uint8_t asl_compiler_id [4]; /* ASL compiler vendor ID */ \ - uint32_t asl_compiler_revision; /* ASL compiler revision number */ - - -struct AcpiTableHeader /* ACPI common table header */ -{ - ACPI_TABLE_HEADER_DEF -} QEMU_PACKED; -typedef struct AcpiTableHeader AcpiTableHeader; - -/* - * ACPI Fixed ACPI Description Table (FADT) - */ -#define ACPI_FADT_COMMON_DEF /* FADT common definition */ \ - ACPI_TABLE_HEADER_DEF /* ACPI common table header */ \ - uint32_t firmware_ctrl; /* Physical address of FACS */ \ - uint32_t dsdt; /* Physical address of DSDT */ \ - uint8_t model; /* System Interrupt Model */ \ - uint8_t reserved1; /* Reserved */ \ - uint16_t sci_int; /* System vector of SCI interrupt */ \ - uint32_t smi_cmd; /* Port address of SMI command port */ \ - uint8_t acpi_enable; /* Value to write to smi_cmd to enable ACPI */ \ - uint8_t acpi_disable; /* Value to write to smi_cmd to disable ACPI */ \ - /* Value to write to SMI CMD to enter S4BIOS state */ \ - uint8_t S4bios_req; \ - uint8_t reserved2; /* Reserved - must be zero */ \ - /* Port address of Power Mgt 1a acpi_event Reg Blk */ \ - uint32_t pm1a_evt_blk; \ - /* Port address of Power Mgt 1b acpi_event Reg Blk */ \ - uint32_t pm1b_evt_blk; \ - uint32_t pm1a_cnt_blk; /* Port address of Power Mgt 1a Control Reg Blk */ \ - uint32_t pm1b_cnt_blk; /* Port address of Power Mgt 1b Control Reg Blk */ \ - uint32_t pm2_cnt_blk; /* Port address of Power Mgt 2 Control Reg Blk */ \ - uint32_t pm_tmr_blk; /* Port address of Power Mgt Timer Ctrl Reg Blk */ \ - /* Port addr of General Purpose acpi_event 0 Reg Blk */ \ - uint32_t gpe0_blk; \ - /* Port addr of General Purpose acpi_event 1 Reg Blk */ \ - uint32_t gpe1_blk; \ - uint8_t pm1_evt_len; /* Byte length of ports at pm1_x_evt_blk */ \ - uint8_t pm1_cnt_len; /* Byte length of ports at pm1_x_cnt_blk */ \ - uint8_t pm2_cnt_len; /* Byte Length of ports at pm2_cnt_blk */ \ - uint8_t pm_tmr_len; /* Byte Length of ports at pm_tm_blk */ \ - uint8_t gpe0_blk_len; /* Byte Length of ports at gpe0_blk */ \ - uint8_t gpe1_blk_len; /* Byte Length of ports at gpe1_blk */ \ - uint8_t gpe1_base; /* Offset in gpe model where gpe1 events start */ \ - uint8_t reserved3; /* Reserved */ \ - uint16_t plvl2_lat; /* Worst case HW latency to enter/exit C2 state */ \ - uint16_t plvl3_lat; /* Worst case HW latency to enter/exit C3 state */ \ - uint16_t flush_size; /* Size of area read to flush caches */ \ - uint16_t flush_stride; /* Stride used in flushing caches */ \ - uint8_t duty_offset; /* Bit location of duty cycle field in p_cnt reg */ \ - uint8_t duty_width; /* Bit width of duty cycle field in p_cnt reg */ \ - uint8_t day_alrm; /* Index to day-of-month alarm in RTC CMOS RAM */ \ - uint8_t mon_alrm; /* Index to month-of-year alarm in RTC CMOS RAM */ \ - uint8_t century; /* Index to century in RTC CMOS RAM */ - -struct AcpiFadtDescriptorRev1 -{ - ACPI_FADT_COMMON_DEF - uint8_t reserved4; /* Reserved */ - uint8_t reserved4a; /* Reserved */ - uint8_t reserved4b; /* Reserved */ - uint32_t flags; -} QEMU_PACKED; -typedef struct AcpiFadtDescriptorRev1 AcpiFadtDescriptorRev1; - -struct AcpiGenericAddress { - uint8_t space_id; /* Address space where struct or register exists */ - uint8_t bit_width; /* Size in bits of given register */ - uint8_t bit_offset; /* Bit offset within the register */ - uint8_t access_width; /* Minimum Access size (ACPI 3.0) */ - uint64_t address; /* 64-bit address of struct or register */ -} QEMU_PACKED; - -struct AcpiFadtDescriptorRev5_1 { - ACPI_FADT_COMMON_DEF - /* IA-PC Boot Architecture Flags (see below for individual flags) */ - uint16_t boot_flags; - uint8_t reserved; /* Reserved, must be zero */ - /* Miscellaneous flag bits (see below for individual flags) */ - uint32_t flags; - /* 64-bit address of the Reset register */ - struct AcpiGenericAddress reset_register; - /* Value to write to the reset_register port to reset the system */ - uint8_t reset_value; - /* ARM-Specific Boot Flags (see below for individual flags) (ACPI 5.1) */ - uint16_t arm_boot_flags; - uint8_t minor_revision; /* FADT Minor Revision (ACPI 5.1) */ - uint64_t Xfacs; /* 64-bit physical address of FACS */ - uint64_t Xdsdt; /* 64-bit physical address of DSDT */ - /* 64-bit Extended Power Mgt 1a Event Reg Blk address */ - struct AcpiGenericAddress xpm1a_event_block; - /* 64-bit Extended Power Mgt 1b Event Reg Blk address */ - struct AcpiGenericAddress xpm1b_event_block; - /* 64-bit Extended Power Mgt 1a Control Reg Blk address */ - struct AcpiGenericAddress xpm1a_control_block; - /* 64-bit Extended Power Mgt 1b Control Reg Blk address */ - struct AcpiGenericAddress xpm1b_control_block; - /* 64-bit Extended Power Mgt 2 Control Reg Blk address */ - struct AcpiGenericAddress xpm2_control_block; - /* 64-bit Extended Power Mgt Timer Ctrl Reg Blk address */ - struct AcpiGenericAddress xpm_timer_block; - /* 64-bit Extended General Purpose Event 0 Reg Blk address */ - struct AcpiGenericAddress xgpe0_block; - /* 64-bit Extended General Purpose Event 1 Reg Blk address */ - struct AcpiGenericAddress xgpe1_block; - /* 64-bit Sleep Control register (ACPI 5.0) */ - struct AcpiGenericAddress sleep_control; - /* 64-bit Sleep Status register (ACPI 5.0) */ - struct AcpiGenericAddress sleep_status; -} QEMU_PACKED; - -typedef struct AcpiFadtDescriptorRev5_1 AcpiFadtDescriptorRev5_1; - -enum { - ACPI_FADT_ARM_USE_PSCI_G_0_2 = 0, - ACPI_FADT_ARM_PSCI_USE_HVC = 1, -}; - -/* - * Serial Port Console Redirection Table (SPCR), Rev. 1.02 - * - * For .interface_type see Debug Port Table 2 (DBG2) serial port - * subtypes in Table 3, Rev. May 22, 2012 - */ -struct AcpiSerialPortConsoleRedirection { - ACPI_TABLE_HEADER_DEF - uint8_t interface_type; - uint8_t reserved1[3]; - struct AcpiGenericAddress base_address; - uint8_t interrupt_types; - uint8_t irq; - uint32_t gsi; - uint8_t baud; - uint8_t parity; - uint8_t stopbits; - uint8_t flowctrl; - uint8_t term_type; - uint8_t reserved2; - uint16_t pci_device_id; - uint16_t pci_vendor_id; - uint8_t pci_bus; - uint8_t pci_slot; - uint8_t pci_func; - uint32_t pci_flags; - uint8_t pci_seg; - uint32_t reserved3; -} QEMU_PACKED; -typedef struct AcpiSerialPortConsoleRedirection - AcpiSerialPortConsoleRedirection; - -/* - * ACPI 1.0 Root System Description Table (RSDT) - */ -struct AcpiRsdtDescriptorRev1 -{ - ACPI_TABLE_HEADER_DEF /* ACPI common table header */ - uint32_t table_offset_entry[0]; /* Array of pointers to other */ - /* ACPI tables */ -} QEMU_PACKED; -typedef struct AcpiRsdtDescriptorRev1 AcpiRsdtDescriptorRev1; - -/* - * ACPI 1.0 Firmware ACPI Control Structure (FACS) - */ -struct AcpiFacsDescriptorRev1 -{ - uint32_t signature; /* ACPI Signature */ - uint32_t length; /* Length of structure, in bytes */ - uint32_t hardware_signature; /* Hardware configuration signature */ - uint32_t firmware_waking_vector; /* ACPI OS waking vector */ - uint32_t global_lock; /* Global Lock */ - uint32_t flags; - uint8_t resverved3 [40]; /* Reserved - must be zero */ -} QEMU_PACKED; -typedef struct AcpiFacsDescriptorRev1 AcpiFacsDescriptorRev1; - -/* - * Differentiated System Description Table (DSDT) - */ - -/* - * MADT values and structures - */ - -/* Values for MADT PCATCompat */ - -#define ACPI_DUAL_PIC 0 -#define ACPI_MULTIPLE_APIC 1 - -/* Master MADT */ - -struct AcpiMultipleApicTable -{ - ACPI_TABLE_HEADER_DEF /* ACPI common table header */ - uint32_t local_apic_address; /* Physical address of local APIC */ - uint32_t flags; -} QEMU_PACKED; -typedef struct AcpiMultipleApicTable AcpiMultipleApicTable; - -/* Values for Type in APIC sub-headers */ - -#define ACPI_APIC_PROCESSOR 0 -#define ACPI_APIC_IO 1 -#define ACPI_APIC_XRUPT_OVERRIDE 2 -#define ACPI_APIC_NMI 3 -#define ACPI_APIC_LOCAL_NMI 4 -#define ACPI_APIC_ADDRESS_OVERRIDE 5 -#define ACPI_APIC_IO_SAPIC 6 -#define ACPI_APIC_LOCAL_SAPIC 7 -#define ACPI_APIC_XRUPT_SOURCE 8 -#define ACPI_APIC_LOCAL_X2APIC 9 -#define ACPI_APIC_LOCAL_X2APIC_NMI 10 -#define ACPI_APIC_GENERIC_INTERRUPT 11 -#define ACPI_APIC_GENERIC_DISTRIBUTOR 12 -#define ACPI_APIC_GENERIC_MSI_FRAME 13 -#define ACPI_APIC_GENERIC_REDISTRIBUTOR 14 -#define ACPI_APIC_RESERVED 15 /* 15 and greater are reserved */ - -/* - * MADT sub-structures (Follow MULTIPLE_APIC_DESCRIPTION_TABLE) - */ -#define ACPI_SUB_HEADER_DEF /* Common ACPI sub-structure header */\ - uint8_t type; \ - uint8_t length; - -/* Sub-structures for MADT */ - -struct AcpiMadtProcessorApic -{ - ACPI_SUB_HEADER_DEF - uint8_t processor_id; /* ACPI processor id */ - uint8_t local_apic_id; /* Processor's local APIC id */ - uint32_t flags; -} QEMU_PACKED; -typedef struct AcpiMadtProcessorApic AcpiMadtProcessorApic; - -struct AcpiMadtIoApic -{ - ACPI_SUB_HEADER_DEF - uint8_t io_apic_id; /* I/O APIC ID */ - uint8_t reserved; /* Reserved - must be zero */ - uint32_t address; /* APIC physical address */ - uint32_t interrupt; /* Global system interrupt where INTI - * lines start */ -} QEMU_PACKED; -typedef struct AcpiMadtIoApic AcpiMadtIoApic; - -struct AcpiMadtIntsrcovr { - ACPI_SUB_HEADER_DEF - uint8_t bus; - uint8_t source; - uint32_t gsi; - uint16_t flags; -} QEMU_PACKED; -typedef struct AcpiMadtIntsrcovr AcpiMadtIntsrcovr; - -struct AcpiMadtLocalNmi { - ACPI_SUB_HEADER_DEF - uint8_t processor_id; /* ACPI processor id */ - uint16_t flags; /* MPS INTI flags */ - uint8_t lint; /* Local APIC LINT# */ -} QEMU_PACKED; -typedef struct AcpiMadtLocalNmi AcpiMadtLocalNmi; - -struct AcpiMadtGenericInterrupt { - ACPI_SUB_HEADER_DEF - uint16_t reserved; - uint32_t cpu_interface_number; - uint32_t uid; - uint32_t flags; - uint32_t parking_version; - uint32_t performance_interrupt; - uint64_t parked_address; - uint64_t base_address; - uint64_t gicv_base_address; - uint64_t gich_base_address; - uint32_t vgic_interrupt; - uint64_t gicr_base_address; - uint64_t arm_mpidr; -} QEMU_PACKED; - -typedef struct AcpiMadtGenericInterrupt AcpiMadtGenericInterrupt; - -struct AcpiMadtGenericDistributor { - ACPI_SUB_HEADER_DEF - uint16_t reserved; - uint32_t gic_id; - uint64_t base_address; - uint32_t global_irq_base; - uint32_t reserved2; -} QEMU_PACKED; - -typedef struct AcpiMadtGenericDistributor AcpiMadtGenericDistributor; - -struct AcpiMadtGenericMsiFrame { - ACPI_SUB_HEADER_DEF - uint16_t reserved; - uint32_t gic_msi_frame_id; - uint64_t base_address; - uint32_t flags; - uint16_t spi_count; - uint16_t spi_base; -} QEMU_PACKED; - -typedef struct AcpiMadtGenericMsiFrame AcpiMadtGenericMsiFrame; - -struct AcpiMadtGenericRedistributor { - ACPI_SUB_HEADER_DEF - uint16_t reserved; - uint64_t base_address; - uint32_t range_length; -} QEMU_PACKED; - -typedef struct AcpiMadtGenericRedistributor AcpiMadtGenericRedistributor; - -/* - * Generic Timer Description Table (GTDT) - */ - -#define ACPI_GTDT_INTERRUPT_MODE (1 << 0) -#define ACPI_GTDT_INTERRUPT_POLARITY (1 << 1) -#define ACPI_GTDT_ALWAYS_ON (1 << 2) - -/* Triggering */ - -#define ACPI_LEVEL_SENSITIVE ((uint8_t) 0x00) -#define ACPI_EDGE_SENSITIVE ((uint8_t) 0x01) - -/* Polarity */ - -#define ACPI_ACTIVE_HIGH ((uint8_t) 0x00) -#define ACPI_ACTIVE_LOW ((uint8_t) 0x01) -#define ACPI_ACTIVE_BOTH ((uint8_t) 0x02) - -struct AcpiGenericTimerTable { - ACPI_TABLE_HEADER_DEF - uint64_t counter_block_addresss; - uint32_t reserved; - uint32_t secure_el1_interrupt; - uint32_t secure_el1_flags; - uint32_t non_secure_el1_interrupt; - uint32_t non_secure_el1_flags; - uint32_t virtual_timer_interrupt; - uint32_t virtual_timer_flags; - uint32_t non_secure_el2_interrupt; - uint32_t non_secure_el2_flags; - uint64_t counter_read_block_address; - uint32_t platform_timer_count; - uint32_t platform_timer_offset; -} QEMU_PACKED; -typedef struct AcpiGenericTimerTable AcpiGenericTimerTable; - -/* - * HPET Description Table - */ -struct Acpi20Hpet { - ACPI_TABLE_HEADER_DEF /* ACPI common table header */ - uint32_t timer_block_id; - Acpi20GenericAddress addr; - uint8_t hpet_number; - uint16_t min_tick; - uint8_t page_protect; -} QEMU_PACKED; -typedef struct Acpi20Hpet Acpi20Hpet; - -/* - * SRAT (NUMA topology description) table - */ - -struct AcpiSystemResourceAffinityTable -{ - ACPI_TABLE_HEADER_DEF - uint32_t reserved1; - uint32_t reserved2[2]; -} QEMU_PACKED; -typedef struct AcpiSystemResourceAffinityTable AcpiSystemResourceAffinityTable; - -#define ACPI_SRAT_PROCESSOR 0 -#define ACPI_SRAT_MEMORY 1 - -struct AcpiSratProcessorAffinity -{ - ACPI_SUB_HEADER_DEF - uint8_t proximity_lo; - uint8_t local_apic_id; - uint32_t flags; - uint8_t local_sapic_eid; - uint8_t proximity_hi[3]; - uint32_t reserved; -} QEMU_PACKED; -typedef struct AcpiSratProcessorAffinity AcpiSratProcessorAffinity; - -struct AcpiSratMemoryAffinity -{ - ACPI_SUB_HEADER_DEF - uint8_t proximity[4]; - uint16_t reserved1; - uint64_t base_addr; - uint64_t range_length; - uint32_t reserved2; - uint32_t flags; - uint32_t reserved3[2]; -} QEMU_PACKED; -typedef struct AcpiSratMemoryAffinity AcpiSratMemoryAffinity; - -/* PCI fw r3.0 MCFG table. */ -/* Subtable */ -struct AcpiMcfgAllocation { - uint64_t address; /* Base address, processor-relative */ - uint16_t pci_segment; /* PCI segment group number */ - uint8_t start_bus_number; /* Starting PCI Bus number */ - uint8_t end_bus_number; /* Final PCI Bus number */ - uint32_t reserved; -} QEMU_PACKED; -typedef struct AcpiMcfgAllocation AcpiMcfgAllocation; - -struct AcpiTableMcfg { - ACPI_TABLE_HEADER_DEF; - uint8_t reserved[8]; - AcpiMcfgAllocation allocation[0]; -} QEMU_PACKED; -typedef struct AcpiTableMcfg AcpiTableMcfg; - -/* - * TCPA Description Table - * - * Following Level 00, Rev 00.37 of specs: - * http://www.trustedcomputinggroup.org/resources/tcg_acpi_specification - */ -struct Acpi20Tcpa { - ACPI_TABLE_HEADER_DEF /* ACPI common table header */ - uint16_t platform_class; - uint32_t log_area_minimum_length; - uint64_t log_area_start_address; -} QEMU_PACKED; -typedef struct Acpi20Tcpa Acpi20Tcpa; - -/* - * TPM2 - * - * Following Level 00, Rev 00.37 of specs: - * http://www.trustedcomputinggroup.org/resources/tcg_acpi_specification - */ -struct Acpi20TPM2 { - ACPI_TABLE_HEADER_DEF - uint16_t platform_class; - uint16_t reserved; - uint64_t control_area_address; - uint32_t start_method; -} QEMU_PACKED; -typedef struct Acpi20TPM2 Acpi20TPM2; - -/* DMAR - DMA Remapping table r2.2 */ -struct AcpiTableDmar { - ACPI_TABLE_HEADER_DEF - uint8_t host_address_width; /* Maximum DMA physical addressability */ - uint8_t flags; - uint8_t reserved[10]; -} QEMU_PACKED; -typedef struct AcpiTableDmar AcpiTableDmar; - -/* Masks for Flags field above */ -#define ACPI_DMAR_INTR_REMAP 1 -#define ACPI_DMAR_X2APIC_OPT_OUT (1 << 1) - -/* Values for sub-structure type for DMAR */ -enum { - ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, /* DRHD */ - ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, /* RMRR */ - ACPI_DMAR_TYPE_ATSR = 2, /* ATSR */ - ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3, /* RHSR */ - ACPI_DMAR_TYPE_ANDD = 4, /* ANDD */ - ACPI_DMAR_TYPE_RESERVED = 5 /* Reserved for furture use */ -}; - -/* - * Sub-structures for DMAR - */ -/* Type 0: Hardware Unit Definition */ -struct AcpiDmarHardwareUnit { - uint16_t type; - uint16_t length; - uint8_t flags; - uint8_t reserved; - uint16_t pci_segment; /* The PCI Segment associated with this unit */ - uint64_t address; /* Base address of remapping hardware register-set */ -} QEMU_PACKED; -typedef struct AcpiDmarHardwareUnit AcpiDmarHardwareUnit; - -/* Masks for Flags field above */ -#define ACPI_DMAR_INCLUDE_PCI_ALL 1 - -#endif diff --git a/qemu/include/hw/acpi/acpi.h b/qemu/include/hw/acpi/acpi.h deleted file mode 100644 index e0978c8b9..000000000 --- a/qemu/include/hw/acpi/acpi.h +++ /dev/null @@ -1,204 +0,0 @@ -#ifndef QEMU_HW_ACPI_H -#define QEMU_HW_ACPI_H -/* - * Copyright (c) 2009 Isaku Yamahata <yamahata at valinux co jp> - * VA Linux Systems Japan K.K. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, see - * <http://www.gnu.org/licenses/>. - */ - -#include "qemu/notify.h" -#include "qemu/option.h" -#include "exec/memory.h" -#include "hw/irq.h" - -/* - * current device naming scheme supports up to 256 memory devices - */ -#define ACPI_MAX_RAM_SLOTS 256 - -/* from linux include/acpi/actype.h */ -/* Default ACPI register widths */ - -#define ACPI_GPE_REGISTER_WIDTH 8 -#define ACPI_PM1_REGISTER_WIDTH 16 -#define ACPI_PM2_REGISTER_WIDTH 8 -#define ACPI_PM_TIMER_WIDTH 32 - -/* PM Timer ticks per second (HZ) */ -#define PM_TIMER_FREQUENCY 3579545 - - -/* ACPI fixed hardware registers */ - -/* from linux/drivers/acpi/acpica/aclocal.h */ -/* Masks used to access the bit_registers */ - -/* PM1x_STS */ -#define ACPI_BITMASK_TIMER_STATUS 0x0001 -#define ACPI_BITMASK_BUS_MASTER_STATUS 0x0010 -#define ACPI_BITMASK_GLOBAL_LOCK_STATUS 0x0020 -#define ACPI_BITMASK_POWER_BUTTON_STATUS 0x0100 -#define ACPI_BITMASK_SLEEP_BUTTON_STATUS 0x0200 -#define ACPI_BITMASK_RT_CLOCK_STATUS 0x0400 -#define ACPI_BITMASK_PCIEXP_WAKE_STATUS 0x4000 /* ACPI 3.0 */ -#define ACPI_BITMASK_WAKE_STATUS 0x8000 - -#define ACPI_BITMASK_ALL_FIXED_STATUS (\ - ACPI_BITMASK_TIMER_STATUS | \ - ACPI_BITMASK_BUS_MASTER_STATUS | \ - ACPI_BITMASK_GLOBAL_LOCK_STATUS | \ - ACPI_BITMASK_POWER_BUTTON_STATUS | \ - ACPI_BITMASK_SLEEP_BUTTON_STATUS | \ - ACPI_BITMASK_RT_CLOCK_STATUS | \ - ACPI_BITMASK_WAKE_STATUS) - -/* PM1x_EN */ -#define ACPI_BITMASK_TIMER_ENABLE 0x0001 -#define ACPI_BITMASK_GLOBAL_LOCK_ENABLE 0x0020 -#define ACPI_BITMASK_POWER_BUTTON_ENABLE 0x0100 -#define ACPI_BITMASK_SLEEP_BUTTON_ENABLE 0x0200 -#define ACPI_BITMASK_RT_CLOCK_ENABLE 0x0400 -#define ACPI_BITMASK_PCIEXP_WAKE_DISABLE 0x4000 /* ACPI 3.0 */ - -#define ACPI_BITMASK_PM1_COMMON_ENABLED ( \ - ACPI_BITMASK_RT_CLOCK_ENABLE | \ - ACPI_BITMASK_POWER_BUTTON_ENABLE | \ - ACPI_BITMASK_GLOBAL_LOCK_ENABLE | \ - ACPI_BITMASK_TIMER_ENABLE) - -/* PM1x_CNT */ -#define ACPI_BITMASK_SCI_ENABLE 0x0001 -#define ACPI_BITMASK_BUS_MASTER_RLD 0x0002 -#define ACPI_BITMASK_GLOBAL_LOCK_RELEASE 0x0004 -#define ACPI_BITMASK_SLEEP_TYPE 0x1C00 -#define ACPI_BITMASK_SLEEP_ENABLE 0x2000 - -/* PM2_CNT */ -#define ACPI_BITMASK_ARB_DISABLE 0x0001 - -/* These values are part of guest ABI, and can not be changed */ -typedef enum { - ACPI_PCI_HOTPLUG_STATUS = 2, - ACPI_CPU_HOTPLUG_STATUS = 4, - ACPI_MEMORY_HOTPLUG_STATUS = 8, -} AcpiGPEStatusBits; - -/* structs */ -typedef struct ACPIPMTimer ACPIPMTimer; -typedef struct ACPIPM1EVT ACPIPM1EVT; -typedef struct ACPIPM1CNT ACPIPM1CNT; -typedef struct ACPIGPE ACPIGPE; -typedef struct ACPIREGS ACPIREGS; - -typedef void (*acpi_update_sci_fn)(ACPIREGS *ar); - -struct ACPIPMTimer { - QEMUTimer *timer; - MemoryRegion io; - int64_t overflow_time; - - acpi_update_sci_fn update_sci; -}; - -struct ACPIPM1EVT { - MemoryRegion io; - uint16_t sts; - uint16_t en; - acpi_update_sci_fn update_sci; -}; - -struct ACPIPM1CNT { - MemoryRegion io; - uint16_t cnt; - uint8_t s4_val; -}; - -struct ACPIGPE { - uint8_t len; - - uint8_t *sts; - uint8_t *en; -}; - -struct ACPIREGS { - ACPIPMTimer tmr; - ACPIGPE gpe; - struct { - ACPIPM1EVT evt; - ACPIPM1CNT cnt; - } pm1; - Notifier wakeup; -}; - -/* PM_TMR */ -void acpi_pm_tmr_update(ACPIREGS *ar, bool enable); -void acpi_pm_tmr_calc_overflow_time(ACPIREGS *ar); -void acpi_pm_tmr_init(ACPIREGS *ar, acpi_update_sci_fn update_sci, - MemoryRegion *parent); -void acpi_pm_tmr_reset(ACPIREGS *ar); - -#include "qemu/timer.h" -static inline int64_t acpi_pm_tmr_get_clock(void) -{ - return muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL), PM_TIMER_FREQUENCY, - NANOSECONDS_PER_SECOND); -} - -/* PM1a_EVT: piix and ich9 don't implement PM1b. */ -uint16_t acpi_pm1_evt_get_sts(ACPIREGS *ar); -void acpi_pm1_evt_power_down(ACPIREGS *ar); -void acpi_pm1_evt_reset(ACPIREGS *ar); -void acpi_pm1_evt_init(ACPIREGS *ar, acpi_update_sci_fn update_sci, - MemoryRegion *parent); - -/* PM1a_CNT: piix and ich9 don't implement PM1b CNT. */ -void acpi_pm1_cnt_init(ACPIREGS *ar, MemoryRegion *parent, - bool disable_s3, bool disable_s4, uint8_t s4_val); -void acpi_pm1_cnt_update(ACPIREGS *ar, - bool sci_enable, bool sci_disable); -void acpi_pm1_cnt_reset(ACPIREGS *ar); - -/* GPE0 */ -void acpi_gpe_init(ACPIREGS *ar, uint8_t len); -void acpi_gpe_reset(ACPIREGS *ar); - -void acpi_gpe_ioport_writeb(ACPIREGS *ar, uint32_t addr, uint32_t val); -uint32_t acpi_gpe_ioport_readb(ACPIREGS *ar, uint32_t addr); - -void acpi_send_gpe_event(ACPIREGS *ar, qemu_irq irq, - AcpiGPEStatusBits status); - -void acpi_update_sci(ACPIREGS *acpi_regs, qemu_irq irq); - -/* acpi.c */ -extern int acpi_enabled; -extern char unsigned *acpi_tables; -extern size_t acpi_tables_len; - -uint8_t *acpi_table_first(void); -uint8_t *acpi_table_next(uint8_t *current); -unsigned acpi_table_len(void *current); -void acpi_table_add(const QemuOpts *opts, Error **errp); -void acpi_table_add_builtin(const QemuOpts *opts, Error **errp); - -typedef struct AcpiSlicOem AcpiSlicOem; -struct AcpiSlicOem { - char *id; - char *table_id; -}; -int acpi_get_slic_oem(AcpiSlicOem *oem); - -#endif /* !QEMU_HW_ACPI_H */ diff --git a/qemu/include/hw/acpi/acpi_dev_interface.h b/qemu/include/hw/acpi/acpi_dev_interface.h deleted file mode 100644 index f245f8d23..000000000 --- a/qemu/include/hw/acpi/acpi_dev_interface.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef ACPI_DEV_INTERFACE_H -#define ACPI_DEV_INTERFACE_H - -#include "qom/object.h" -#include "qapi-types.h" - -#define TYPE_ACPI_DEVICE_IF "acpi-device-interface" - -#define ACPI_DEVICE_IF_CLASS(klass) \ - OBJECT_CLASS_CHECK(AcpiDeviceIfClass, (klass), \ - TYPE_ACPI_DEVICE_IF) -#define ACPI_DEVICE_IF_GET_CLASS(obj) \ - OBJECT_GET_CLASS(AcpiDeviceIfClass, (obj), \ - TYPE_ACPI_DEVICE_IF) -#define ACPI_DEVICE_IF(obj) \ - INTERFACE_CHECK(AcpiDeviceIf, (obj), \ - TYPE_ACPI_DEVICE_IF) - - -typedef struct AcpiDeviceIf { - /* <private> */ - Object Parent; -} AcpiDeviceIf; - -/** - * AcpiDeviceIfClass: - * - * ospm_status: returns status of ACPI device objects, reported - * via _OST method if device supports it. - * - * Interface is designed for providing unified interface - * to generic ACPI functionality that could be used without - * knowledge about internals of actual device that implements - * ACPI interface. - */ -typedef struct AcpiDeviceIfClass { - /* <private> */ - InterfaceClass parent_class; - - /* <public> */ - void (*ospm_status)(AcpiDeviceIf *adev, ACPIOSTInfoList ***list); -} AcpiDeviceIfClass; -#endif diff --git a/qemu/include/hw/acpi/aml-build.h b/qemu/include/hw/acpi/aml-build.h deleted file mode 100644 index 2c994b351..000000000 --- a/qemu/include/hw/acpi/aml-build.h +++ /dev/null @@ -1,375 +0,0 @@ -#ifndef HW_ACPI_GEN_UTILS_H -#define HW_ACPI_GEN_UTILS_H - -#include <glib.h> -#include "hw/acpi/acpi-defs.h" - -/* Reserve RAM space for tables: add another order of magnitude. */ -#define ACPI_BUILD_TABLE_MAX_SIZE 0x200000 - -#define ACPI_BUILD_APPNAME6 "BOCHS " -#define ACPI_BUILD_APPNAME4 "BXPC" - -#define ACPI_BUILD_TABLE_FILE "etc/acpi/tables" -#define ACPI_BUILD_RSDP_FILE "etc/acpi/rsdp" -#define ACPI_BUILD_TPMLOG_FILE "etc/tpm/log" - -#define AML_NOTIFY_METHOD "NTFY" - -typedef enum { - AML_NO_OPCODE = 0,/* has only data */ - AML_OPCODE, /* has opcode optionally followed by data */ - AML_PACKAGE, /* has opcode and uses PkgLength for its length */ - AML_EXT_PACKAGE, /* Same as AML_PACKAGE but also has 'ExOpPrefix' */ - AML_BUFFER, /* data encoded as 'DefBuffer' */ - AML_RES_TEMPLATE, /* encoded as ResourceTemplate macro */ -} AmlBlockFlags; - -struct Aml { - GArray *buf; - - /*< private >*/ - uint8_t op; - AmlBlockFlags block_flags; -}; -typedef struct Aml Aml; - -typedef enum { - AML_COMPATIBILITY = 0, - AML_TYPEA = 1, - AML_TYPEB = 2, - AML_TYPEF = 3, -} AmlDmaType; - -typedef enum { - AML_NOTBUSMASTER = 0, - AML_BUSMASTER = 1, -} AmlDmaBusMaster; - -typedef enum { - AML_TRANSFER8 = 0, - AML_TRANSFER8_16 = 1, - AML_TRANSFER16 = 2, -} AmlTransferSize; - -typedef enum { - AML_DECODE10 = 0, - AML_DECODE16 = 1, -} AmlIODecode; - -typedef enum { - AML_ANY_ACC = 0, - AML_BYTE_ACC = 1, - AML_WORD_ACC = 2, - AML_DWORD_ACC = 3, - AML_QWORD_ACC = 4, - AML_BUFFER_ACC = 5, -} AmlAccessType; - -typedef enum { - AML_NOLOCK = 0, - AML_LOCK = 1, -} AmlLockRule; - -typedef enum { - AML_PRESERVE = 0, - AML_WRITE_AS_ONES = 1, - AML_WRITE_AS_ZEROS = 2, -} AmlUpdateRule; - -typedef enum { - AML_SYSTEM_MEMORY = 0X00, - AML_SYSTEM_IO = 0X01, - AML_PCI_CONFIG = 0X02, -} AmlRegionSpace; - -typedef enum { - AML_MEMORY_RANGE = 0, - AML_IO_RANGE = 1, - AML_BUS_NUMBER_RANGE = 2, -} AmlResourceType; - -typedef enum { - AML_SUB_DECODE = 1 << 1, - AML_POS_DECODE = 0 -} AmlDecode; - -typedef enum { - AML_MAX_FIXED = 1 << 3, - AML_MAX_NOT_FIXED = 0, -} AmlMaxFixed; - -typedef enum { - AML_MIN_FIXED = 1 << 2, - AML_MIN_NOT_FIXED = 0 -} AmlMinFixed; - -/* - * ACPI 1.0b: Table 6-26 I/O Resource Flag (Resource Type = 1) Definitions - * _RNG field definition - */ -typedef enum { - AML_ISA_ONLY = 1, - AML_NON_ISA_ONLY = 2, - AML_ENTIRE_RANGE = 3, -} AmlISARanges; - -/* - * ACPI 1.0b: Table 6-25 Memory Resource Flag (Resource Type = 0) Definitions - * _MEM field definition - */ -typedef enum { - AML_NON_CACHEABLE = 0, - AML_CACHEABLE = 1, - AML_WRITE_COMBINING = 2, - AML_PREFETCHABLE = 3, -} AmlCacheable; - -/* - * ACPI 1.0b: Table 6-25 Memory Resource Flag (Resource Type = 0) Definitions - * _RW field definition - */ -typedef enum { - AML_READ_ONLY = 0, - AML_READ_WRITE = 1, -} AmlReadAndWrite; - -/* - * ACPI 5.0: Table 6-187 Extended Interrupt Descriptor Definition - * Interrupt Vector Flags Bits[0] Consumer/Producer - */ -typedef enum { - AML_CONSUMER_PRODUCER = 0, - AML_CONSUMER = 1, -} AmlConsumerAndProducer; - -/* - * ACPI 5.0: Table 6-187 Extended Interrupt Descriptor Definition - * _HE field definition - */ -typedef enum { - AML_LEVEL = 0, - AML_EDGE = 1, -} AmlLevelAndEdge; - -/* - * ACPI 5.0: Table 6-187 Extended Interrupt Descriptor Definition - * _LL field definition - */ -typedef enum { - AML_ACTIVE_HIGH = 0, - AML_ACTIVE_LOW = 1, -} AmlActiveHighAndLow; - -/* - * ACPI 5.0: Table 6-187 Extended Interrupt Descriptor Definition - * _SHR field definition - */ -typedef enum { - AML_EXCLUSIVE = 0, - AML_SHARED = 1, - AML_EXCLUSIVE_AND_WAKE = 2, - AML_SHARED_AND_WAKE = 3, -} AmlShared; - -/* ACPI 1.0b: 16.2.5.2 Named Objects Encoding: MethodFlags */ -typedef enum { - AML_NOTSERIALIZED = 0, - AML_SERIALIZED = 1, -} AmlSerializeFlag; - -/* - * ACPI 5.0: Table 6-189 GPIO Connection Descriptor Definition - * GPIO Connection Type - */ -typedef enum { - AML_INTERRUPT_CONNECTION = 0, - AML_IO_CONNECTION = 1, -} AmlGpioConnectionType; - -/* - * ACPI 5.0: Table 6-189 GPIO Connection Descriptor Definition - * _PPI field definition - */ -typedef enum { - AML_PULL_DEFAULT = 0, - AML_PULL_UP = 1, - AML_PULL_DOWN = 2, - AML_PULL_NONE = 3, -} AmlPinConfig; - -typedef -struct AcpiBuildTables { - GArray *table_data; - GArray *rsdp; - GArray *tcpalog; - GArray *linker; -} AcpiBuildTables; - -/** - * init_aml_allocator: - * - * Called for initializing API allocator which allow to use - * AML API. - * Returns: toplevel container which accumulates all other - * AML elements for a table. - */ -Aml *init_aml_allocator(void); - -/** - * free_aml_allocator: - * - * Releases all elements used by AML API, frees associated memory - * and invalidates AML allocator. After this call @init_aml_allocator - * should be called again if AML API is to be used again. - */ -void free_aml_allocator(void); - -/** - * aml_append: - * @parent_ctx: context to which @child element is added - * @child: element that is copied into @parent_ctx context - * - * Joins Aml elements together and helps to construct AML tables - * Examle of usage: - * Aml *table = aml_def_block("SSDT", ...); - * Aml *sb = aml_scope("\\_SB"); - * Aml *dev = aml_device("PCI0"); - * - * aml_append(dev, aml_name_decl("HID", aml_eisaid("PNP0A03"))); - * aml_append(sb, dev); - * aml_append(table, sb); - */ -void aml_append(Aml *parent_ctx, Aml *child); - -/* non block AML object primitives */ -Aml *aml_name(const char *name_format, ...) GCC_FMT_ATTR(1, 2); -Aml *aml_name_decl(const char *name, Aml *val); -Aml *aml_return(Aml *val); -Aml *aml_int(const uint64_t val); -Aml *aml_arg(int pos); -Aml *aml_to_integer(Aml *arg); -Aml *aml_to_hexstring(Aml *src, Aml *dst); -Aml *aml_to_buffer(Aml *src, Aml *dst); -Aml *aml_store(Aml *val, Aml *target); -Aml *aml_and(Aml *arg1, Aml *arg2, Aml *dst); -Aml *aml_or(Aml *arg1, Aml *arg2, Aml *dst); -Aml *aml_lor(Aml *arg1, Aml *arg2); -Aml *aml_shiftleft(Aml *arg1, Aml *count); -Aml *aml_shiftright(Aml *arg1, Aml *count, Aml *dst); -Aml *aml_lless(Aml *arg1, Aml *arg2); -Aml *aml_add(Aml *arg1, Aml *arg2, Aml *dst); -Aml *aml_subtract(Aml *arg1, Aml *arg2, Aml *dst); -Aml *aml_increment(Aml *arg); -Aml *aml_decrement(Aml *arg); -Aml *aml_index(Aml *arg1, Aml *idx); -Aml *aml_notify(Aml *arg1, Aml *arg2); -Aml *aml_call0(const char *method); -Aml *aml_call1(const char *method, Aml *arg1); -Aml *aml_call2(const char *method, Aml *arg1, Aml *arg2); -Aml *aml_call3(const char *method, Aml *arg1, Aml *arg2, Aml *arg3); -Aml *aml_call4(const char *method, Aml *arg1, Aml *arg2, Aml *arg3, Aml *arg4); -Aml *aml_gpio_int(AmlConsumerAndProducer con_and_pro, - AmlLevelAndEdge edge_level, - AmlActiveHighAndLow active_level, AmlShared shared, - AmlPinConfig pin_config, uint16_t debounce_timeout, - const uint32_t pin_list[], uint32_t pin_count, - const char *resource_source_name, - const uint8_t *vendor_data, uint16_t vendor_data_len); -Aml *aml_memory32_fixed(uint32_t addr, uint32_t size, - AmlReadAndWrite read_and_write); -Aml *aml_interrupt(AmlConsumerAndProducer con_and_pro, - AmlLevelAndEdge level_and_edge, - AmlActiveHighAndLow high_and_low, AmlShared shared, - uint32_t *irq_list, uint8_t irq_count); -Aml *aml_io(AmlIODecode dec, uint16_t min_base, uint16_t max_base, - uint8_t aln, uint8_t len); -Aml *aml_operation_region(const char *name, AmlRegionSpace rs, - Aml *offset, uint32_t len); -Aml *aml_irq_no_flags(uint8_t irq); -Aml *aml_named_field(const char *name, unsigned length); -Aml *aml_reserved_field(unsigned length); -Aml *aml_local(int num); -Aml *aml_string(const char *name_format, ...) GCC_FMT_ATTR(1, 2); -Aml *aml_lnot(Aml *arg); -Aml *aml_equal(Aml *arg1, Aml *arg2); -Aml *aml_lgreater(Aml *arg1, Aml *arg2); -Aml *aml_lgreater_equal(Aml *arg1, Aml *arg2); -Aml *aml_processor(uint8_t proc_id, uint32_t pblk_addr, uint8_t pblk_len, - const char *name_format, ...) GCC_FMT_ATTR(4, 5); -Aml *aml_eisaid(const char *str); -Aml *aml_word_bus_number(AmlMinFixed min_fixed, AmlMaxFixed max_fixed, - AmlDecode dec, uint16_t addr_gran, - uint16_t addr_min, uint16_t addr_max, - uint16_t addr_trans, uint16_t len); -Aml *aml_word_io(AmlMinFixed min_fixed, AmlMaxFixed max_fixed, - AmlDecode dec, AmlISARanges isa_ranges, - uint16_t addr_gran, uint16_t addr_min, - uint16_t addr_max, uint16_t addr_trans, - uint16_t len); -Aml *aml_dword_io(AmlMinFixed min_fixed, AmlMaxFixed max_fixed, - AmlDecode dec, AmlISARanges isa_ranges, - uint32_t addr_gran, uint32_t addr_min, - uint32_t addr_max, uint32_t addr_trans, - uint32_t len); -Aml *aml_dword_memory(AmlDecode dec, AmlMinFixed min_fixed, - AmlMaxFixed max_fixed, AmlCacheable cacheable, - AmlReadAndWrite read_and_write, - uint32_t addr_gran, uint32_t addr_min, - uint32_t addr_max, uint32_t addr_trans, - uint32_t len); -Aml *aml_qword_memory(AmlDecode dec, AmlMinFixed min_fixed, - AmlMaxFixed max_fixed, AmlCacheable cacheable, - AmlReadAndWrite read_and_write, - uint64_t addr_gran, uint64_t addr_min, - uint64_t addr_max, uint64_t addr_trans, - uint64_t len); -Aml *aml_dma(AmlDmaType typ, AmlDmaBusMaster bm, AmlTransferSize sz, - uint8_t channel); -Aml *aml_sleep(uint64_t msec); - -/* Block AML object primitives */ -Aml *aml_scope(const char *name_format, ...) GCC_FMT_ATTR(1, 2); -Aml *aml_device(const char *name_format, ...) GCC_FMT_ATTR(1, 2); -Aml *aml_method(const char *name, int arg_count, AmlSerializeFlag sflag); -Aml *aml_if(Aml *predicate); -Aml *aml_else(void); -Aml *aml_while(Aml *predicate); -Aml *aml_package(uint8_t num_elements); -Aml *aml_buffer(int buffer_size, uint8_t *byte_list); -Aml *aml_resource_template(void); -Aml *aml_field(const char *name, AmlAccessType type, AmlLockRule lock, - AmlUpdateRule rule); -Aml *aml_mutex(const char *name, uint8_t sync_level); -Aml *aml_acquire(Aml *mutex, uint16_t timeout); -Aml *aml_release(Aml *mutex); -Aml *aml_alias(const char *source_object, const char *alias_object); -Aml *aml_create_field(Aml *srcbuf, Aml *bit_index, Aml *num_bits, - const char *name); -Aml *aml_create_dword_field(Aml *srcbuf, Aml *index, const char *name); -Aml *aml_create_qword_field(Aml *srcbuf, Aml *index, const char *name); -Aml *aml_varpackage(uint32_t num_elements); -Aml *aml_touuid(const char *uuid); -Aml *aml_unicode(const char *str); -Aml *aml_derefof(Aml *arg); -Aml *aml_sizeof(Aml *arg); -Aml *aml_concatenate(Aml *source1, Aml *source2, Aml *target); - -void -build_header(GArray *linker, GArray *table_data, - AcpiTableHeader *h, const char *sig, int len, uint8_t rev, - const char *oem_id, const char *oem_table_id); -void *acpi_data_push(GArray *table_data, unsigned size); -unsigned acpi_data_len(GArray *table); -void acpi_add_table(GArray *table_offsets, GArray *table_data); -void acpi_build_tables_init(AcpiBuildTables *tables); -void acpi_build_tables_cleanup(AcpiBuildTables *tables, bool mfre); -void -build_rsdt(GArray *table_data, GArray *linker, GArray *table_offsets, - const char *oem_id, const char *oem_table_id); - -int -build_append_named_dword(GArray *array, const char *name_format, ...) -GCC_FMT_ATTR(2, 3); - -#endif diff --git a/qemu/include/hw/acpi/bios-linker-loader.h b/qemu/include/hw/acpi/bios-linker-loader.h deleted file mode 100644 index 82f1af643..000000000 --- a/qemu/include/hw/acpi/bios-linker-loader.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef BIOS_LINKER_LOADER_H -#define BIOS_LINKER_LOADER_H - -#include <glib.h> - -GArray *bios_linker_loader_init(void); - -void bios_linker_loader_alloc(GArray *linker, - const char *file, - uint32_t alloc_align, - bool alloc_fseg); - -void bios_linker_loader_add_checksum(GArray *linker, const char *file, - GArray *table, - void *start, unsigned size, - uint8_t *checksum); - -void bios_linker_loader_add_pointer(GArray *linker, - const char *dest_file, - const char *src_file, - GArray *table, void *pointer, - uint8_t pointer_size); - -void *bios_linker_loader_cleanup(GArray *linker); -#endif diff --git a/qemu/include/hw/acpi/cpu_hotplug.h b/qemu/include/hw/acpi/cpu_hotplug.h deleted file mode 100644 index f22640e38..000000000 --- a/qemu/include/hw/acpi/cpu_hotplug.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * QEMU ACPI hotplug utilities - * - * Copyright (C) 2013 Red Hat Inc - * - * Authors: - * Igor Mammedov <imammedo@redhat.com> - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - */ -#ifndef ACPI_HOTPLUG_H -#define ACPI_HOTPLUG_H - -#include "hw/acpi/acpi.h" -#include "hw/acpi/pc-hotplug.h" -#include "hw/acpi/aml-build.h" - -typedef struct AcpiCpuHotplug { - MemoryRegion io; - uint8_t sts[ACPI_GPE_PROC_LEN]; -} AcpiCpuHotplug; - -void acpi_cpu_plug_cb(ACPIREGS *ar, qemu_irq irq, - AcpiCpuHotplug *g, DeviceState *dev, Error **errp); - -void acpi_cpu_hotplug_init(MemoryRegion *parent, Object *owner, - AcpiCpuHotplug *gpe_cpu, uint16_t base); - -#define CPU_EJECT_METHOD "CPEJ" -#define CPU_MAT_METHOD "CPMA" -#define CPU_ON_BITMAP "CPON" -#define CPU_STATUS_METHOD "CPST" -#define CPU_STATUS_MAP "PRS" -#define CPU_SCAN_METHOD "PRSC" - -void build_cpu_hotplug_aml(Aml *ctx); -#endif diff --git a/qemu/include/hw/acpi/ich9.h b/qemu/include/hw/acpi/ich9.h deleted file mode 100644 index 63fa19814..000000000 --- a/qemu/include/hw/acpi/ich9.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * QEMU GMCH/ICH9 LPC PM Emulation - * - * Copyright (c) 2009 Isaku Yamahata <yamahata at valinux co jp> - * VA Linux Systems Japan K.K. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, see <http://www.gnu.org/licenses/> - */ - -#ifndef HW_ACPI_ICH9_H -#define HW_ACPI_ICH9_H - -#include "hw/acpi/acpi.h" -#include "hw/acpi/cpu_hotplug.h" -#include "hw/acpi/memory_hotplug.h" -#include "hw/acpi/acpi_dev_interface.h" -#include "hw/acpi/tco.h" - -typedef struct ICH9LPCPMRegs { - /* - * In ich9 spec says that pm1_cnt register is 32bit width and - * that the upper 16bits are reserved and unused. - * PM1a_CNT_BLK = 2 in FADT so it is defined as uint16_t. - */ - ACPIREGS acpi_regs; - - MemoryRegion io; - MemoryRegion io_gpe; - MemoryRegion io_smi; - - uint32_t smi_en; - uint32_t smi_en_wmask; - uint32_t smi_sts; - - qemu_irq irq; /* SCI */ - - uint32_t pm_io_base; - Notifier powerdown_notifier; - - AcpiCpuHotplug gpe_cpu; - - MemHotplugState acpi_memory_hotplug; - - uint8_t disable_s3; - uint8_t disable_s4; - uint8_t s4_val; - uint8_t smm_enabled; - bool enable_tco; - TCOIORegs tco_regs; -} ICH9LPCPMRegs; - -void ich9_pm_init(PCIDevice *lpc_pci, ICH9LPCPMRegs *pm, - bool smm_enabled, - qemu_irq sci_irq); - -void ich9_pm_iospace_update(ICH9LPCPMRegs *pm, uint32_t pm_io_base); -extern const VMStateDescription vmstate_ich9_pm; - -void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm, Error **errp); - -void ich9_pm_device_plug_cb(ICH9LPCPMRegs *pm, DeviceState *dev, Error **errp); -void ich9_pm_device_unplug_request_cb(ICH9LPCPMRegs *pm, DeviceState *dev, - Error **errp); -void ich9_pm_device_unplug_cb(ICH9LPCPMRegs *pm, DeviceState *dev, - Error **errp); - -void ich9_pm_ospm_status(AcpiDeviceIf *adev, ACPIOSTInfoList ***list); -#endif /* HW_ACPI_ICH9_H */ diff --git a/qemu/include/hw/acpi/memory_hotplug.h b/qemu/include/hw/acpi/memory_hotplug.h deleted file mode 100644 index 3a646b12e..000000000 --- a/qemu/include/hw/acpi/memory_hotplug.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef QEMU_HW_ACPI_MEMORY_HOTPLUG_H -#define QEMU_HW_ACPI_MEMORY_HOTPLUG_H - -#include "hw/qdev-core.h" -#include "hw/acpi/acpi.h" -#include "migration/vmstate.h" -#include "hw/acpi/aml-build.h" - -/** - * MemStatus: - * @is_removing: the memory device in slot has been requested to be ejected. - * - * This structure stores memory device's status. - */ -typedef struct MemStatus { - DeviceState *dimm; - bool is_enabled; - bool is_inserting; - bool is_removing; - uint32_t ost_event; - uint32_t ost_status; -} MemStatus; - -typedef struct MemHotplugState { - bool is_enabled; /* true if memory hotplug is supported */ - MemoryRegion io; - uint32_t selector; - uint32_t dev_count; - MemStatus *devs; -} MemHotplugState; - -void acpi_memory_hotplug_init(MemoryRegion *as, Object *owner, - MemHotplugState *state); - -void acpi_memory_plug_cb(ACPIREGS *ar, qemu_irq irq, MemHotplugState *mem_st, - DeviceState *dev, Error **errp); -void acpi_memory_unplug_request_cb(ACPIREGS *ar, qemu_irq irq, - MemHotplugState *mem_st, - DeviceState *dev, Error **errp); -void acpi_memory_unplug_cb(MemHotplugState *mem_st, - DeviceState *dev, Error **errp); - -extern const VMStateDescription vmstate_memory_hotplug; -#define VMSTATE_MEMORY_HOTPLUG(memhp, state) \ - VMSTATE_STRUCT(memhp, state, 1, \ - vmstate_memory_hotplug, MemHotplugState) - -void acpi_memory_ospm_status(MemHotplugState *mem_st, ACPIOSTInfoList ***list); - -#define MEMORY_HOTPLUG_DEVICE "MHPD" -#define MEMORY_SLOT_SCAN_METHOD "MSCN" -#define MEMORY_HOTPLUG_HANDLER_PATH "\\_SB.PCI0." \ - MEMORY_HOTPLUG_DEVICE "." MEMORY_SLOT_SCAN_METHOD - -void build_memory_hotplug_aml(Aml *ctx, uint32_t nr_mem, - uint16_t io_base, uint16_t io_len); -#endif diff --git a/qemu/include/hw/acpi/pc-hotplug.h b/qemu/include/hw/acpi/pc-hotplug.h deleted file mode 100644 index 6a8d268f8..000000000 --- a/qemu/include/hw/acpi/pc-hotplug.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * QEMU ACPI hotplug utilities shared defines - * - * Copyright (C) 2014 Red Hat Inc - * - * Authors: - * Igor Mammedov <imammedo@redhat.com> - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - */ -#ifndef PC_HOTPLUG_H -#define PC_HOTPLUG_H - -/* - * ONLY DEFINEs are permited in this file since it's shared - * between C and ASL code. - */ - -/* Limit for CPU arch IDs for CPU hotplug. All hotpluggable CPUs should - * have CPUClass.get_arch_id() < ACPI_CPU_HOTPLUG_ID_LIMIT. - */ -#define ACPI_CPU_HOTPLUG_ID_LIMIT 256 - -/* 256 CPU IDs, 8 bits per entry: */ -#define ACPI_GPE_PROC_LEN 32 - -#define ICH9_CPU_HOTPLUG_IO_BASE 0x0CD8 -#define PIIX4_CPU_HOTPLUG_IO_BASE 0xaf00 -#define CPU_HOTPLUG_RESOURCE_DEVICE PRES - -#define ACPI_MEMORY_HOTPLUG_IO_LEN 24 -#define ACPI_MEMORY_HOTPLUG_BASE 0x0a00 - -#define MEMORY_SLOTS_NUMBER "MDNR" -#define MEMORY_HOTPLUG_IO_REGION "HPMR" -#define MEMORY_SLOT_ADDR_LOW "MRBL" -#define MEMORY_SLOT_ADDR_HIGH "MRBH" -#define MEMORY_SLOT_SIZE_LOW "MRLL" -#define MEMORY_SLOT_SIZE_HIGH "MRLH" -#define MEMORY_SLOT_PROXIMITY "MPX" -#define MEMORY_SLOT_ENABLED "MES" -#define MEMORY_SLOT_INSERT_EVENT "MINS" -#define MEMORY_SLOT_REMOVE_EVENT "MRMV" -#define MEMORY_SLOT_EJECT "MEJ" -#define MEMORY_SLOT_SLECTOR "MSEL" -#define MEMORY_SLOT_OST_EVENT "MOEV" -#define MEMORY_SLOT_OST_STATUS "MOSC" -#define MEMORY_SLOT_LOCK "MLCK" -#define MEMORY_SLOT_STATUS_METHOD "MRST" -#define MEMORY_SLOT_CRS_METHOD "MCRS" -#define MEMORY_SLOT_OST_METHOD "MOST" -#define MEMORY_SLOT_PROXIMITY_METHOD "MPXM" -#define MEMORY_SLOT_EJECT_METHOD "MEJ0" -#define MEMORY_SLOT_NOTIFY_METHOD "MTFY" - -#endif diff --git a/qemu/include/hw/acpi/pcihp.h b/qemu/include/hw/acpi/pcihp.h deleted file mode 100644 index 79a43923e..000000000 --- a/qemu/include/hw/acpi/pcihp.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * QEMU<->ACPI BIOS PCI hotplug interface - * - * QEMU supports PCI hotplug via ACPI. This module - * implements the interface between QEMU and the ACPI BIOS. - * Interface specification - see docs/specs/acpi_pci_hotplug.txt - * - * Copyright (c) 2013, Red Hat Inc, Michael S. Tsirkin (mst@redhat.com) - * Copyright (c) 2006 Fabrice Bellard - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2 as published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, see <http://www.gnu.org/licenses/> - * - * Contributions after 2012-01-13 are licensed under the terms of the - * GNU GPL, version 2 or (at your option) any later version. - */ - -#ifndef HW_ACPI_PCIHP_H -#define HW_ACPI_PCIHP_H - -#include "hw/acpi/acpi.h" -#include "migration/vmstate.h" - -#define ACPI_PCIHP_IO_BASE_PROP "acpi-pcihp-io-base" -#define ACPI_PCIHP_IO_LEN_PROP "acpi-pcihp-io-len" - -typedef struct AcpiPciHpPciStatus { - uint32_t up; - uint32_t down; - uint32_t hotplug_enable; -} AcpiPciHpPciStatus; - -#define ACPI_PCIHP_PROP_BSEL "acpi-pcihp-bsel" -#define ACPI_PCIHP_MAX_HOTPLUG_BUS 256 -#define ACPI_PCIHP_BSEL_DEFAULT 0x0 - -typedef struct AcpiPciHpState { - AcpiPciHpPciStatus acpi_pcihp_pci_status[ACPI_PCIHP_MAX_HOTPLUG_BUS]; - uint32_t hotplug_select; - PCIBus *root; - MemoryRegion io; - bool legacy_piix; - uint16_t io_base; - uint16_t io_len; -} AcpiPciHpState; - -void acpi_pcihp_init(Object *owner, AcpiPciHpState *, PCIBus *root, - MemoryRegion *address_space_io, bool bridges_enabled); - -void acpi_pcihp_device_plug_cb(ACPIREGS *ar, qemu_irq irq, AcpiPciHpState *s, - DeviceState *dev, Error **errp); -void acpi_pcihp_device_unplug_cb(ACPIREGS *ar, qemu_irq irq, AcpiPciHpState *s, - DeviceState *dev, Error **errp); - -/* Called on reset */ -void acpi_pcihp_reset(AcpiPciHpState *s); - -extern const VMStateDescription vmstate_acpi_pcihp_pci_status; - -#define VMSTATE_PCI_HOTPLUG(pcihp, state, test_pcihp) \ - VMSTATE_UINT32_TEST(pcihp.hotplug_select, state, \ - test_pcihp), \ - VMSTATE_STRUCT_ARRAY_TEST(pcihp.acpi_pcihp_pci_status, state, \ - ACPI_PCIHP_MAX_HOTPLUG_BUS, \ - test_pcihp, 1, \ - vmstate_acpi_pcihp_pci_status, \ - AcpiPciHpPciStatus) - -#endif diff --git a/qemu/include/hw/acpi/piix4.h b/qemu/include/hw/acpi/piix4.h deleted file mode 100644 index 26c2370e3..000000000 --- a/qemu/include/hw/acpi/piix4.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef HW_ACPI_PIIX4_H -#define HW_ACPI_PIIX4_H - -Object *piix4_pm_find(void); - -#endif diff --git a/qemu/include/hw/acpi/tco.h b/qemu/include/hw/acpi/tco.h deleted file mode 100644 index 52ad767dd..000000000 --- a/qemu/include/hw/acpi/tco.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * QEMU ICH9 TCO emulation - * - * Copyright (c) 2015 Paulo Alcantara <pcacjr@zytor.com> - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - */ -#ifndef HW_ACPI_TCO_H -#define HW_ACPI_TCO_H - -#include "qemu-common.h" - -/* As per ICH9 spec, the internal timer has an error of ~0.6s on every tick */ -#define TCO_TICK_NSEC 600000000LL - -/* TCO I/O register offsets */ -enum { - TCO_RLD = 0x00, - TCO_DAT_IN = 0x02, - TCO_DAT_OUT = 0x03, - TCO1_STS = 0x04, - TCO2_STS = 0x06, - TCO1_CNT = 0x08, - TCO2_CNT = 0x0a, - TCO_MESSAGE1 = 0x0c, - TCO_MESSAGE2 = 0x0d, - TCO_WDCNT = 0x0e, - SW_IRQ_GEN = 0x10, - TCO_TMR = 0x12, -}; - -/* TCO I/O register control/status bits */ -enum { - SW_TCO_SMI = 1 << 1, - TCO_INT_STS = 1 << 2, - TCO_LOCK = 1 << 12, - TCO_TMR_HLT = 1 << 11, - TCO_TIMEOUT = 1 << 3, - TCO_SECOND_TO_STS = 1 << 1, - TCO_BOOT_STS = 1 << 2, -}; - -/* TCO I/O registers mask bits */ -enum { - TCO_RLD_MASK = 0x3ff, - TCO1_STS_MASK = 0xe870, - TCO2_STS_MASK = 0xfff8, - TCO1_CNT_MASK = 0xfeff, - TCO_TMR_MASK = 0x3ff, -}; - -typedef struct TCOIORegs { - struct { - uint16_t rld; - uint8_t din; - uint8_t dout; - uint16_t sts1; - uint16_t sts2; - uint16_t cnt1; - uint16_t cnt2; - uint8_t msg1; - uint8_t msg2; - uint8_t wdcnt; - uint16_t tmr; - } tco; - uint8_t sw_irq_gen; - - QEMUTimer *tco_timer; - int64_t expire_time; - uint8_t timeouts_no; - - MemoryRegion io; -} TCOIORegs; - -/* tco.c */ -void acpi_pm_tco_init(TCOIORegs *tr, MemoryRegion *parent); - -extern const VMStateDescription vmstate_tco_io_sts; - -#endif /* HW_ACPI_TCO_H */ diff --git a/qemu/include/hw/acpi/tpm.h b/qemu/include/hw/acpi/tpm.h deleted file mode 100644 index 6d516c6a7..000000000 --- a/qemu/include/hw/acpi/tpm.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * tpm.h - TPM ACPI definitions - * - * Copyright (C) 2014 IBM Corporation - * - * Authors: - * Stefan Berger <stefanb@us.ibm.com> - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - * - * Implementation of the TIS interface according to specs found at - * http://www.trustedcomputinggroup.org - * - */ -#ifndef HW_ACPI_TPM_H -#define HW_ACPI_TPM_H - -#define TPM_TIS_ADDR_BASE 0xFED40000 -#define TPM_TIS_ADDR_SIZE 0x5000 - -#define TPM_TIS_IRQ 5 - -#define TPM_LOG_AREA_MINIMUM_SIZE (64 * 1024) - -#define TPM_TCPA_ACPI_CLASS_CLIENT 0 -#define TPM_TCPA_ACPI_CLASS_SERVER 1 - -#define TPM2_ACPI_CLASS_CLIENT 0 -#define TPM2_ACPI_CLASS_SERVER 1 - -#define TPM2_START_METHOD_MMIO 6 - -#endif /* HW_ACPI_TPM_H */ |