diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/acpi/acconfig.h | 4 | ||||
| -rw-r--r-- | include/acpi/acexcep.h | 12 | ||||
| -rw-r--r-- | include/acpi/acpixf.h | 6 | ||||
| -rw-r--r-- | include/acpi/actbl1.h | 159 | ||||
| -rw-r--r-- | include/acpi/actbl2.h | 15 | ||||
| -rw-r--r-- | include/acpi/actypes.h | 4 | 
6 files changed, 180 insertions, 20 deletions
| diff --git a/include/acpi/acconfig.h b/include/acpi/acconfig.h index 6db3b4668b1a..ffe364fa4040 100644 --- a/include/acpi/acconfig.h +++ b/include/acpi/acconfig.h @@ -145,9 +145,9 @@  #define ACPI_ADDRESS_RANGE_MAX          2 -/* Maximum number of While() loops before abort */ +/* Maximum time (default 30s) of While() loops before abort */ -#define ACPI_MAX_LOOP_COUNT             0x000FFFFF +#define ACPI_MAX_LOOP_TIMEOUT           30  /******************************************************************************   * diff --git a/include/acpi/acexcep.h b/include/acpi/acexcep.h index 17d61b1f2511..3c46f0ef5f7a 100644 --- a/include/acpi/acexcep.h +++ b/include/acpi/acexcep.h @@ -130,8 +130,9 @@ struct acpi_exception_info {  #define AE_HEX_OVERFLOW                 EXCEP_ENV (0x0020)  #define AE_DECIMAL_OVERFLOW             EXCEP_ENV (0x0021)  #define AE_OCTAL_OVERFLOW               EXCEP_ENV (0x0022) +#define AE_END_OF_TABLE                 EXCEP_ENV (0x0023) -#define AE_CODE_ENV_MAX                 0x0022 +#define AE_CODE_ENV_MAX                 0x0023  /*   * Programmer exceptions @@ -195,7 +196,7 @@ struct acpi_exception_info {  #define AE_AML_CIRCULAR_REFERENCE       EXCEP_AML (0x001E)  #define AE_AML_BAD_RESOURCE_LENGTH      EXCEP_AML (0x001F)  #define AE_AML_ILLEGAL_ADDRESS          EXCEP_AML (0x0020) -#define AE_AML_INFINITE_LOOP            EXCEP_AML (0x0021) +#define AE_AML_LOOP_TIMEOUT             EXCEP_AML (0x0021)  #define AE_AML_UNINITIALIZED_NODE       EXCEP_AML (0x0022)  #define AE_AML_TARGET_TYPE              EXCEP_AML (0x0023) @@ -275,7 +276,8 @@ static const struct acpi_exception_info acpi_gbl_exception_names_env[] = {  	EXCEP_TXT("AE_DECIMAL_OVERFLOW",  		  "Overflow during ASCII decimal-to-binary conversion"),  	EXCEP_TXT("AE_OCTAL_OVERFLOW", -		  "Overflow during ASCII octal-to-binary conversion") +		  "Overflow during ASCII octal-to-binary conversion"), +	EXCEP_TXT("AE_END_OF_TABLE", "Reached the end of table")  };  static const struct acpi_exception_info acpi_gbl_exception_names_pgm[] = { @@ -368,8 +370,8 @@ static const struct acpi_exception_info acpi_gbl_exception_names_aml[] = {  		  "The length of a Resource Descriptor in the AML is incorrect"),  	EXCEP_TXT("AE_AML_ILLEGAL_ADDRESS",  		  "A memory, I/O, or PCI configuration address is invalid"), -	EXCEP_TXT("AE_AML_INFINITE_LOOP", -		  "An apparent infinite AML While loop, method was aborted"), +	EXCEP_TXT("AE_AML_LOOP_TIMEOUT", +		  "An AML While loop exceeded the maximum execution time"),  	EXCEP_TXT("AE_AML_UNINITIALIZED_NODE",  		  "A namespace node is uninitialized or unresolved"),  	EXCEP_TXT("AE_AML_TARGET_TYPE", diff --git a/include/acpi/acpixf.h b/include/acpi/acpixf.h index e1dd1a8d42b6..c589c3e12d90 100644 --- a/include/acpi/acpixf.h +++ b/include/acpi/acpixf.h @@ -46,7 +46,7 @@  /* Current ACPICA subsystem version in YYYYMMDD format */ -#define ACPI_CA_VERSION                 0x20170831 +#define ACPI_CA_VERSION                 0x20171215  #include <acpi/acconfig.h>  #include <acpi/actypes.h> @@ -260,11 +260,11 @@ ACPI_INIT_GLOBAL(u8, acpi_gbl_osi_data, 0);  ACPI_INIT_GLOBAL(u8, acpi_gbl_reduced_hardware, FALSE);  /* - * Maximum number of While() loop iterations before forced method abort. + * Maximum timeout for While() loop iterations before forced method abort.   * This mechanism is intended to prevent infinite loops during interpreter   * execution within a host kernel.   */ -ACPI_INIT_GLOBAL(u32, acpi_gbl_max_loop_iterations, ACPI_MAX_LOOP_COUNT); +ACPI_INIT_GLOBAL(u32, acpi_gbl_max_loop_iterations, ACPI_MAX_LOOP_TIMEOUT);  /*   * This mechanism is used to trace a specified AML method. The method is diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h index 7a89e6de94da..4c304bf4d591 100644 --- a/include/acpi/actbl1.h +++ b/include/acpi/actbl1.h @@ -69,9 +69,10 @@  #define ACPI_SIG_HEST           "HEST"	/* Hardware Error Source Table */  #define ACPI_SIG_MADT           "APIC"	/* Multiple APIC Description Table */  #define ACPI_SIG_MSCT           "MSCT"	/* Maximum System Characteristics Table */ -#define ACPI_SIG_PDTT           "PDTT"	/* Processor Debug Trigger Table */ +#define ACPI_SIG_PDTT           "PDTT"	/* Platform Debug Trigger Table */  #define ACPI_SIG_PPTT           "PPTT"	/* Processor Properties Topology Table */  #define ACPI_SIG_SBST           "SBST"	/* Smart Battery Specification Table */ +#define ACPI_SIG_SDEV           "SDEV"	/* Secure Devices table */  #define ACPI_SIG_SLIT           "SLIT"	/* System Locality Distance Information Table */  #define ACPI_SIG_SRAT           "SRAT"	/* System Resource Affinity Table */  #define ACPI_SIG_NFIT           "NFIT"	/* NVDIMM Firmware Interface Table */ @@ -1149,7 +1150,8 @@ enum acpi_nfit_type {  	ACPI_NFIT_TYPE_CONTROL_REGION = 4,  	ACPI_NFIT_TYPE_DATA_REGION = 5,  	ACPI_NFIT_TYPE_FLUSH_ADDRESS = 6, -	ACPI_NFIT_TYPE_RESERVED = 7	/* 7 and greater are reserved */ +	ACPI_NFIT_TYPE_CAPABILITIES = 7, +	ACPI_NFIT_TYPE_RESERVED = 8	/* 8 and greater are reserved */  };  /* @@ -1162,7 +1164,7 @@ struct acpi_nfit_system_address {  	struct acpi_nfit_header header;  	u16 range_index;  	u16 flags; -	u32 reserved;		/* Reseved, must be zero */ +	u32 reserved;		/* Reserved, must be zero */  	u32 proximity_domain;  	u8 range_guid[16];  	u64 address; @@ -1281,9 +1283,72 @@ struct acpi_nfit_flush_address {  	u64 hint_address[1];	/* Variable length */  }; +/* 7: Platform Capabilities Structure */ + +struct acpi_nfit_capabilities { +	struct acpi_nfit_header header; +	u8 highest_capability; +	u8 reserved[3];		/* Reserved, must be zero */ +	u32 capabilities; +	u32 reserved2; +}; + +/* Capabilities Flags */ + +#define ACPI_NFIT_CAPABILITY_CACHE_FLUSH       (1)	/* 00: Cache Flush to NVDIMM capable */ +#define ACPI_NFIT_CAPABILITY_MEM_FLUSH         (1<<1)	/* 01: Memory Flush to NVDIMM capable */ +#define ACPI_NFIT_CAPABILITY_MEM_MIRRORING     (1<<2)	/* 02: Memory Mirroring capable */ + +/* + * NFIT/DVDIMM device handle support - used as the _ADR for each NVDIMM + */ +struct nfit_device_handle { +	u32 handle; +}; + +/* Device handle construction and extraction macros */ + +#define ACPI_NFIT_DIMM_NUMBER_MASK              0x0000000F +#define ACPI_NFIT_CHANNEL_NUMBER_MASK           0x000000F0 +#define ACPI_NFIT_MEMORY_ID_MASK                0x00000F00 +#define ACPI_NFIT_SOCKET_ID_MASK                0x0000F000 +#define ACPI_NFIT_NODE_ID_MASK                  0x0FFF0000 + +#define ACPI_NFIT_DIMM_NUMBER_OFFSET            0 +#define ACPI_NFIT_CHANNEL_NUMBER_OFFSET         4 +#define ACPI_NFIT_MEMORY_ID_OFFSET              8 +#define ACPI_NFIT_SOCKET_ID_OFFSET              12 +#define ACPI_NFIT_NODE_ID_OFFSET                16 + +/* Macro to construct a NFIT/NVDIMM device handle */ + +#define ACPI_NFIT_BUILD_DEVICE_HANDLE(dimm, channel, memory, socket, node) \ +	((dimm)                                         | \ +	((channel) << ACPI_NFIT_CHANNEL_NUMBER_OFFSET)  | \ +	((memory)  << ACPI_NFIT_MEMORY_ID_OFFSET)       | \ +	((socket)  << ACPI_NFIT_SOCKET_ID_OFFSET)       | \ +	((node)    << ACPI_NFIT_NODE_ID_OFFSET)) + +/* Macros to extract individual fields from a NFIT/NVDIMM device handle */ + +#define ACPI_NFIT_GET_DIMM_NUMBER(handle) \ +	((handle) & ACPI_NFIT_DIMM_NUMBER_MASK) + +#define ACPI_NFIT_GET_CHANNEL_NUMBER(handle) \ +	(((handle) & ACPI_NFIT_CHANNEL_NUMBER_MASK) >> ACPI_NFIT_CHANNEL_NUMBER_OFFSET) + +#define ACPI_NFIT_GET_MEMORY_ID(handle) \ +	(((handle) & ACPI_NFIT_MEMORY_ID_MASK)      >> ACPI_NFIT_MEMORY_ID_OFFSET) + +#define ACPI_NFIT_GET_SOCKET_ID(handle) \ +	(((handle) & ACPI_NFIT_SOCKET_ID_MASK)      >> ACPI_NFIT_SOCKET_ID_OFFSET) + +#define ACPI_NFIT_GET_NODE_ID(handle) \ +	(((handle) & ACPI_NFIT_NODE_ID_MASK)        >> ACPI_NFIT_NODE_ID_OFFSET) +  /*******************************************************************************   * - * PDTT - Processor Debug Trigger Table (ACPI 6.2) + * PDTT - Platform Debug Trigger Table (ACPI 6.2)   *        Version 0   *   ******************************************************************************/ @@ -1301,14 +1366,14 @@ struct acpi_table_pdtt {   * starting at array_offset.   */  struct acpi_pdtt_channel { -	u16 sub_channel_id; +	u8 subchannel_id; +	u8 flags;  }; -/* Mask and Flags for above */ +/* Flags for above */ -#define ACPI_PDTT_SUBCHANNEL_ID_MASK        0x00FF -#define ACPI_PDTT_RUNTIME_TRIGGER           (1<<8) -#define ACPI_PPTT_WAIT_COMPLETION           (1<<9) +#define ACPI_PDTT_RUNTIME_TRIGGER           (1) +#define ACPI_PDTT_WAIT_COMPLETION           (1<<1)  /*******************************************************************************   * @@ -1376,6 +1441,20 @@ struct acpi_pptt_cache {  #define ACPI_PPTT_MASK_CACHE_TYPE           (0x0C)	/* Cache type */  #define ACPI_PPTT_MASK_WRITE_POLICY         (0x10)	/* Write policy */ +/* Attributes describing cache */ +#define ACPI_PPTT_CACHE_READ_ALLOCATE       (0x0)	/* Cache line is allocated on read */ +#define ACPI_PPTT_CACHE_WRITE_ALLOCATE      (0x01)	/* Cache line is allocated on write */ +#define ACPI_PPTT_CACHE_RW_ALLOCATE         (0x02)	/* Cache line is allocated on read and write */ +#define ACPI_PPTT_CACHE_RW_ALLOCATE_ALT     (0x03)	/* Alternate representation of above */ + +#define ACPI_PPTT_CACHE_TYPE_DATA           (0x0)	/* Data cache */ +#define ACPI_PPTT_CACHE_TYPE_INSTR          (1<<2)	/* Instruction cache */ +#define ACPI_PPTT_CACHE_TYPE_UNIFIED        (2<<2)	/* Unified I & D cache */ +#define ACPI_PPTT_CACHE_TYPE_UNIFIED_ALT    (3<<2)	/* Alternate representation of above */ + +#define ACPI_PPTT_CACHE_POLICY_WB           (0x0)	/* Cache is write back */ +#define ACPI_PPTT_CACHE_POLICY_WT           (1<<4)	/* Cache is write through */ +  /* 2: ID Structure */  struct acpi_pptt_id { @@ -1405,6 +1484,68 @@ struct acpi_table_sbst {  /*******************************************************************************   * + * SDEV - Secure Devices Table (ACPI 6.2) + *        Version 1 + * + ******************************************************************************/ + +struct acpi_table_sdev { +	struct acpi_table_header header;	/* Common ACPI table header */ +}; + +struct acpi_sdev_header { +	u8 type; +	u8 flags; +	u16 length; +}; + +/* Values for subtable type above */ + +enum acpi_sdev_type { +	ACPI_SDEV_TYPE_NAMESPACE_DEVICE = 0, +	ACPI_SDEV_TYPE_PCIE_ENDPOINT_DEVICE = 1, +	ACPI_SDEV_TYPE_RESERVED = 2	/* 2 and greater are reserved */ +}; + +/* Values for flags above */ + +#define ACPI_SDEV_HANDOFF_TO_UNSECURE_OS    (1) + +/* + * SDEV subtables + */ + +/* 0: Namespace Device Based Secure Device Structure */ + +struct acpi_sdev_namespace { +	struct acpi_sdev_header header; +	u16 device_id_offset; +	u16 device_id_length; +	u16 vendor_data_offset; +	u16 vendor_data_length; +}; + +/* 1: PCIe Endpoint Device Based Device Structure */ + +struct acpi_sdev_pcie { +	struct acpi_sdev_header header; +	u16 segment; +	u16 start_bus; +	u16 path_offset; +	u16 path_length; +	u16 vendor_data_offset; +	u16 vendor_data_length; +}; + +/* 1a: PCIe Endpoint path entry */ + +struct acpi_sdev_pcie_path { +	u8 device; +	u8 function; +}; + +/******************************************************************************* + *   * SLIT - System Locality Distance Information Table   *        Version 1   * diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h index 686b6f8c09dc..0d60d5df14f8 100644 --- a/include/acpi/actbl2.h +++ b/include/acpi/actbl2.h @@ -810,6 +810,7 @@ struct acpi_iort_smmu_v3 {  	u8 pxm;  	u8 reserved1;  	u16 reserved2; +	u32 id_mapping_index;  };  /* Values for Model field above */ @@ -1246,6 +1247,8 @@ enum acpi_spmi_interface_types {   * TCPA - Trusted Computing Platform Alliance table   *        Version 2   * + * TCG Hardware Interface Table for TPM 1.2 Clients and Servers + *   * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0",   * Version 1.2, Revision 8   * February 27, 2017 @@ -1310,6 +1313,8 @@ struct acpi_table_tcpa_server {   * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table   *        Version 4   * + * TCG Hardware Interface Table for TPM 2.0 Clients and Servers + *   * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0",   * Version 1.2, Revision 8   * February 27, 2017 @@ -1329,15 +1334,23 @@ struct acpi_table_tpm2 {  /* Values for start_method above */  #define ACPI_TPM2_NOT_ALLOWED                       0 +#define ACPI_TPM2_RESERVED1                         1  #define ACPI_TPM2_START_METHOD                      2 +#define ACPI_TPM2_RESERVED3                         3 +#define ACPI_TPM2_RESERVED4                         4 +#define ACPI_TPM2_RESERVED5                         5  #define ACPI_TPM2_MEMORY_MAPPED                     6  #define ACPI_TPM2_COMMAND_BUFFER                    7  #define ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD  8 +#define ACPI_TPM2_RESERVED9                         9 +#define ACPI_TPM2_RESERVED10                        10  #define ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC       11	/* V1.2 Rev 8 */ +#define ACPI_TPM2_RESERVED                          12 -/* Trailer appears after any start_method subtables */ +/* Optional trailer appears after any start_method subtables */  struct acpi_tpm2_trailer { +	u8 method_parameters[12];  	u32 minimum_log_length;	/* Minimum length for the event log area */  	u64 log_address;	/* Address of the event log area */  }; diff --git a/include/acpi/actypes.h b/include/acpi/actypes.h index 4f077edb9b81..31f1be74dd16 100644 --- a/include/acpi/actypes.h +++ b/include/acpi/actypes.h @@ -468,6 +468,8 @@ typedef void *acpi_handle;	/* Actually a ptr to a NS Node */  #define ACPI_NSEC_PER_MSEC              1000000L  #define ACPI_NSEC_PER_SEC               1000000000L +#define ACPI_TIME_AFTER(a, b)           ((s64)((b) - (a)) < 0) +  /* Owner IDs are used to track namespace nodes for selective deletion */  typedef u8 acpi_owner_id; @@ -1299,6 +1301,8 @@ typedef enum {  #define ACPI_OSI_WIN_7                  0x0B  #define ACPI_OSI_WIN_8                  0x0C  #define ACPI_OSI_WIN_10                 0x0D +#define ACPI_OSI_WIN_10_RS1             0x0E +#define ACPI_OSI_WIN_10_RS2             0x0F  /* Definitions of getopt */ |