Print this page
update to acpica-unix2-20131218
acpica-unix2-20130823
PANKOVs restructure

*** 3,13 **** * Name: actbl1.h - Additional ACPI table definitions * *****************************************************************************/ /* ! * Copyright (C) 2000 - 2011, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: --- 3,13 ---- * Name: actbl1.h - Additional ACPI table definitions * *****************************************************************************/ /* ! * Copyright (C) 2000 - 2013, Intel Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met:
*** 80,92 **** * the tables are provided by the system BIOS. */ #pragma pack(1) /* ! * Note about bitfields: The UINT8 type is used for bitfields in ACPI tables. ! * This is the only type that is even remotely portable. Anything else is not ! * portable, so do not use any other bitfield types. */ /******************************************************************************* * --- 80,98 ---- * the tables are provided by the system BIOS. */ #pragma pack(1) /* ! * Note: C bitfields are not used for this reason: ! * ! * "Bitfields are great and easy to read, but unfortunately the C language ! * does not specify the layout of bitfields in memory, which means they are ! * essentially useless for dealing with packed data in on-disk formats or ! * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, ! * this decision was a design error in C. Ritchie could have picked an order ! * and stuck with it." Norman Ramsey. ! * See http://stackoverflow.com/a/1053662/41661 */ /******************************************************************************* *
*** 128,138 **** typedef struct acpi_table_bert { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT32 RegionLength; /* Length of the boot error region */ ! UINT64 Address; /* Physical addresss of the error region */ } ACPI_TABLE_BERT; /* Boot Error Region (not a subtable, pointed to by Address field above) */ --- 134,144 ---- typedef struct acpi_table_bert { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT32 RegionLength; /* Length of the boot error region */ ! UINT64 Address; /* Physical address of the error region */ } ACPI_TABLE_BERT; /* Boot Error Region (not a subtable, pointed to by Address field above) */
*** 258,268 **** ACPI_EINJ_GET_ERROR_TYPE = 3, ACPI_EINJ_END_OPERATION = 4, ACPI_EINJ_EXECUTE_OPERATION = 5, ACPI_EINJ_CHECK_BUSY_STATUS = 6, ACPI_EINJ_GET_COMMAND_STATUS = 7, ! ACPI_EINJ_ACTION_RESERVED = 8, /* 8 and greater are reserved */ ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */ }; /* Values for Instruction field above */ --- 264,275 ---- ACPI_EINJ_GET_ERROR_TYPE = 3, ACPI_EINJ_END_OPERATION = 4, ACPI_EINJ_EXECUTE_OPERATION = 5, ACPI_EINJ_CHECK_BUSY_STATUS = 6, ACPI_EINJ_GET_COMMAND_STATUS = 7, ! ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS = 8, ! ACPI_EINJ_ACTION_RESERVED = 9, /* 9 and greater are reserved */ ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */ }; /* Values for Instruction field above */
*** 271,284 **** ACPI_EINJ_READ_REGISTER = 0, ACPI_EINJ_READ_REGISTER_VALUE = 1, ACPI_EINJ_WRITE_REGISTER = 2, ACPI_EINJ_WRITE_REGISTER_VALUE = 3, ACPI_EINJ_NOOP = 4, ! ACPI_EINJ_INSTRUCTION_RESERVED = 5 /* 5 and greater are reserved */ }; /* EINJ Trigger Error Action Table */ typedef struct acpi_einj_trigger { UINT32 HeaderSize; --- 278,315 ---- ACPI_EINJ_READ_REGISTER = 0, ACPI_EINJ_READ_REGISTER_VALUE = 1, ACPI_EINJ_WRITE_REGISTER = 2, ACPI_EINJ_WRITE_REGISTER_VALUE = 3, ACPI_EINJ_NOOP = 4, ! ACPI_EINJ_FLUSH_CACHELINE = 5, ! ACPI_EINJ_INSTRUCTION_RESERVED = 6 /* 6 and greater are reserved */ }; + typedef struct acpi_einj_error_type_with_addr + { + UINT32 ErrorType; + UINT32 VendorStructOffset; + UINT32 Flags; + UINT32 ApicId; + UINT64 Address; + UINT64 Range; + UINT32 PcieId; + } ACPI_EINJ_ERROR_TYPE_WITH_ADDR; + + typedef struct acpi_einj_vendor + { + UINT32 Length; + UINT32 PcieId; + UINT16 VendorId; + UINT16 DeviceId; + UINT8 RevisionId; + UINT8 Reserved[3]; + + } ACPI_EINJ_VENDOR; + + /* EINJ Trigger Error Action Table */ typedef struct acpi_einj_trigger { UINT32 HeaderSize;
*** 311,320 **** --- 342,352 ---- #define ACPI_EINJ_PCIX_UNCORRECTABLE (1<<7) #define ACPI_EINJ_PCIX_FATAL (1<<8) #define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9) #define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10) #define ACPI_EINJ_PLATFORM_FATAL (1<<11) + #define ACPI_EINJ_VENDOR_DEFINED (1<<31) /******************************************************************************* * * ERST - Error Record Serialization Table (ACPI 4.0)
*** 490,500 **** UINT16 Reserved1; UINT8 Flags; UINT8 Enabled; UINT32 RecordsToPreallocate; UINT32 MaxSectionsPerRecord; ! UINT32 Bus; UINT16 Device; UINT16 Function; UINT16 DeviceControl; UINT16 Reserved2; UINT32 UncorrectableMask; --- 522,532 ---- UINT16 Reserved1; UINT8 Flags; UINT8 Enabled; UINT32 RecordsToPreallocate; UINT32 MaxSectionsPerRecord; ! UINT32 Bus; /* Bus and Segment numbers */ UINT16 Device; UINT16 Function; UINT16 DeviceControl; UINT16 Reserved2; UINT32 UncorrectableMask;
*** 507,517 **** --- 539,557 ---- /* Masks for HEST Flags fields */ #define ACPI_HEST_FIRMWARE_FIRST (1) #define ACPI_HEST_GLOBAL (1<<1) + /* + * Macros to access the bus/segment numbers in Bus field above: + * Bus number is encoded in bits 7:0 + * Segment number is encoded in bits 23:8 + */ + #define ACPI_HEST_BUS(Bus) ((Bus) & 0xFF) + #define ACPI_HEST_SEGMENT(Bus) (((Bus) >> 8) & 0xFFFF) + /* Hardware Error Notification */ typedef struct acpi_hest_notify { UINT8 Type;
*** 533,543 **** ACPI_HEST_NOTIFY_POLLED = 0, ACPI_HEST_NOTIFY_EXTERNAL = 1, ACPI_HEST_NOTIFY_LOCAL = 2, ACPI_HEST_NOTIFY_SCI = 3, ACPI_HEST_NOTIFY_NMI = 4, ! ACPI_HEST_NOTIFY_RESERVED = 5 /* 5 and greater are reserved */ }; /* Values for ConfigWriteEnable bitfield above */ #define ACPI_HEST_TYPE (1) --- 573,585 ---- ACPI_HEST_NOTIFY_POLLED = 0, ACPI_HEST_NOTIFY_EXTERNAL = 1, ACPI_HEST_NOTIFY_LOCAL = 2, ACPI_HEST_NOTIFY_SCI = 3, ACPI_HEST_NOTIFY_NMI = 4, ! ACPI_HEST_NOTIFY_CMCI = 5, /* ACPI 5.0 */ ! ACPI_HEST_NOTIFY_MCE = 6, /* ACPI 5.0 */ ! ACPI_HEST_NOTIFY_RESERVED = 7 /* 7 and greater are reserved */ }; /* Values for ConfigWriteEnable bitfield above */ #define ACPI_HEST_TYPE (1)
*** 729,739 **** ACPI_MADT_TYPE_IO_SAPIC = 6, ACPI_MADT_TYPE_LOCAL_SAPIC = 7, ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8, ACPI_MADT_TYPE_LOCAL_X2APIC = 9, ACPI_MADT_TYPE_LOCAL_X2APIC_NMI = 10, ! ACPI_MADT_TYPE_RESERVED = 11 /* 11 and greater are reserved */ }; /* * MADT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER --- 771,783 ---- ACPI_MADT_TYPE_IO_SAPIC = 6, ACPI_MADT_TYPE_LOCAL_SAPIC = 7, ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8, ACPI_MADT_TYPE_LOCAL_X2APIC = 9, ACPI_MADT_TYPE_LOCAL_X2APIC_NMI = 10, ! ACPI_MADT_TYPE_GENERIC_INTERRUPT = 11, ! ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR = 12, ! ACPI_MADT_TYPE_RESERVED = 13 /* 13 and greater are reserved */ }; /* * MADT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER
*** 884,898 **** UINT8 Reserved[3]; /* Reserved - must be zero */ } ACPI_MADT_LOCAL_X2APIC_NMI; /* * Common flags fields for MADT subtables */ ! /* MADT Local APIC flags (LapicFlags) */ #define ACPI_MADT_ENABLED (1) /* 00: Processor is usable if set */ /* MADT MPS INTI flags (IntiFlags) */ --- 928,973 ---- UINT8 Reserved[3]; /* Reserved - must be zero */ } ACPI_MADT_LOCAL_X2APIC_NMI; + /* 11: Generic Interrupt (ACPI 5.0) */ + + typedef struct acpi_madt_generic_interrupt + { + ACPI_SUBTABLE_HEADER Header; + UINT16 Reserved; /* Reserved - must be zero */ + UINT32 GicId; + UINT32 Uid; + UINT32 Flags; + UINT32 ParkingVersion; + UINT32 PerformanceInterrupt; + UINT64 ParkedAddress; + UINT64 BaseAddress; + + } ACPI_MADT_GENERIC_INTERRUPT; + + + /* 12: Generic Distributor (ACPI 5.0) */ + + typedef struct acpi_madt_generic_distributor + { + ACPI_SUBTABLE_HEADER Header; + UINT16 Reserved; /* Reserved - must be zero */ + UINT32 GicId; + UINT64 BaseAddress; + UINT32 GlobalIrqBase; + UINT32 Reserved2; /* Reserved - must be zero */ + + } ACPI_MADT_GENERIC_DISTRIBUTOR; + + /* * Common flags fields for MADT subtables */ ! /* MADT Local APIC flags (LapicFlags) and GIC flags */ #define ACPI_MADT_ENABLED (1) /* 00: Processor is usable if set */ /* MADT MPS INTI flags (IntiFlags) */