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) */