Merge branch 'acpica'
* acpica: ACPICA: Add PRMT module header to facilitate parsing ACPICA: Update version to 20210604 ACPICA: Add support for PlatformRtMechanism OperationRegion handler ACPICA: iASL: add disassembler support for PRMT ACPICA: Add the CFMWS structure definition to the CEDT table ACPICA: Add defines for the CXL Host Bridge Structure (CHBS) ACPICA: iASL: Add support for the BDAT ACPI table ACPICA: Add _PLD panel positions ACPICA: Use ACPI_FALLTHROUGH ACPICA: iASL Table Compiler: Add full support for RGRT ACPI table ACPICA: iASL: Add support for the SVKL table ACPICA: iASL: Finish support for the IVRS ACPI table ACPICA: Fix memory leak caused by _CID repair function ACPICA: Add SVKL table headers ACPICA: ACPI 6.4: MADT: add Multiprocessor Wakeup Mailbox Structure
This commit is contained in:
Коммит
f9ef9b82ea
|
@ -737,6 +737,8 @@ const char *acpi_ah_match_uuid(u8 *data);
|
|||
*/
|
||||
#if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP || defined ACPI_HELP_APP)
|
||||
void acpi_ut_convert_string_to_uuid(char *in_string, u8 *uuid_buffer);
|
||||
|
||||
acpi_status acpi_ut_convert_uuid_to_string(char *uuid_buffer, char *out_string);
|
||||
#endif
|
||||
|
||||
#endif /* _ACUTILS_H */
|
||||
|
|
|
@ -139,7 +139,9 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
|
|||
|| obj_desc->field.region_obj->region.space_id ==
|
||||
ACPI_ADR_SPACE_GSBUS
|
||||
|| obj_desc->field.region_obj->region.space_id ==
|
||||
ACPI_ADR_SPACE_IPMI)) {
|
||||
ACPI_ADR_SPACE_IPMI
|
||||
|| obj_desc->field.region_obj->region.space_id ==
|
||||
ACPI_ADR_SPACE_PLATFORM_RT)) {
|
||||
|
||||
/* SMBus, GSBus, IPMI serial */
|
||||
|
||||
|
@ -301,7 +303,9 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
|
|||
|| obj_desc->field.region_obj->region.space_id ==
|
||||
ACPI_ADR_SPACE_GSBUS
|
||||
|| obj_desc->field.region_obj->region.space_id ==
|
||||
ACPI_ADR_SPACE_IPMI)) {
|
||||
ACPI_ADR_SPACE_IPMI
|
||||
|| obj_desc->field.region_obj->region.space_id ==
|
||||
ACPI_ADR_SPACE_PLATFORM_RT)) {
|
||||
|
||||
/* SMBus, GSBus, IPMI serial */
|
||||
|
||||
|
|
|
@ -195,6 +195,12 @@ acpi_ex_read_serial_bus(union acpi_operand_object *obj_desc,
|
|||
function = ACPI_READ | (accessor_type << 16);
|
||||
break;
|
||||
|
||||
case ACPI_ADR_SPACE_PLATFORM_RT:
|
||||
|
||||
buffer_length = ACPI_PRM_INPUT_BUFFER_SIZE;
|
||||
function = ACPI_READ;
|
||||
break;
|
||||
|
||||
default:
|
||||
return_ACPI_STATUS(AE_AML_INVALID_SPACE_ID);
|
||||
}
|
||||
|
@ -311,6 +317,12 @@ acpi_ex_write_serial_bus(union acpi_operand_object *source_desc,
|
|||
function = ACPI_WRITE | (accessor_type << 16);
|
||||
break;
|
||||
|
||||
case ACPI_ADR_SPACE_PLATFORM_RT:
|
||||
|
||||
buffer_length = ACPI_PRM_INPUT_BUFFER_SIZE;
|
||||
function = ACPI_WRITE;
|
||||
break;
|
||||
|
||||
default:
|
||||
return_ACPI_STATUS(AE_AML_INVALID_SPACE_ID);
|
||||
}
|
||||
|
|
|
@ -379,6 +379,13 @@ acpi_ns_repair_CID(struct acpi_evaluate_info *info,
|
|||
|
||||
(*element_ptr)->common.reference_count =
|
||||
original_ref_count;
|
||||
|
||||
/*
|
||||
* The original_element holds a reference from the package object
|
||||
* that represents _HID. Since a new element was created by _HID,
|
||||
* remove the reference from the _CID package.
|
||||
*/
|
||||
acpi_ut_remove_reference(original_element);
|
||||
}
|
||||
|
||||
element_ptr++;
|
||||
|
|
|
@ -475,7 +475,7 @@ int vsnprintf(char *string, acpi_size size, const char *format, va_list args)
|
|||
case 'X':
|
||||
|
||||
type |= ACPI_FORMAT_UPPER;
|
||||
/* FALLTHROUGH */
|
||||
ACPI_FALLTHROUGH;
|
||||
|
||||
case 'x':
|
||||
|
||||
|
|
|
@ -61,4 +61,45 @@ void acpi_ut_convert_string_to_uuid(char *in_string, u8 *uuid_buffer)
|
|||
1]);
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ut_convert_uuid_to_string
|
||||
*
|
||||
* PARAMETERS: uuid_buffer - 16-byte UUID buffer
|
||||
* out_string - 36-byte formatted UUID string
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Convert 16-byte UUID buffer to 36-byte formatted UUID string
|
||||
* out_string must be 37 bytes to include null terminator.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
acpi_status acpi_ut_convert_uuid_to_string(char *uuid_buffer, char *out_string)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
if (!uuid_buffer || !out_string) {
|
||||
return (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
for (i = 0; i < UUID_BUFFER_LENGTH; i++) {
|
||||
out_string[acpi_gbl_map_to_uuid_offset[i]] =
|
||||
acpi_ut_hex_to_ascii_char(uuid_buffer[i], 4);
|
||||
|
||||
out_string[acpi_gbl_map_to_uuid_offset[i] + 1] =
|
||||
acpi_ut_hex_to_ascii_char(uuid_buffer[i], 0);
|
||||
}
|
||||
|
||||
/* Insert required hyphens (dashes) */
|
||||
|
||||
out_string[UUID_HYPHEN1_OFFSET] =
|
||||
out_string[UUID_HYPHEN2_OFFSET] =
|
||||
out_string[UUID_HYPHEN3_OFFSET] =
|
||||
out_string[UUID_HYPHEN4_OFFSET] = '-';
|
||||
|
||||
out_string[UUID_STRING_LENGTH] = 0; /* Null terminate */
|
||||
return (AE_OK);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -207,4 +207,14 @@ struct acpi_pld_info {
|
|||
#define ACPI_PLD_GET_HORIZ_OFFSET(dword) ACPI_GET_BITS (dword, 16, ACPI_16BIT_MASK)
|
||||
#define ACPI_PLD_SET_HORIZ_OFFSET(dword,value) ACPI_SET_BITS (dword, 16, ACPI_16BIT_MASK, value) /* Offset 128+16=144, Len 16 */
|
||||
|
||||
/* Panel position defined in _PLD section of ACPI Specification 6.3 */
|
||||
|
||||
#define ACPI_PLD_PANEL_TOP 0
|
||||
#define ACPI_PLD_PANEL_BOTTOM 1
|
||||
#define ACPI_PLD_PANEL_LEFT 2
|
||||
#define ACPI_PLD_PANEL_RIGHT 3
|
||||
#define ACPI_PLD_PANEL_FRONT 4
|
||||
#define ACPI_PLD_PANEL_BACK 5
|
||||
#define ACPI_PLD_PANEL_UNKNOWN 6
|
||||
|
||||
#endif /* ACBUFFER_H */
|
||||
|
|
|
@ -188,6 +188,8 @@
|
|||
#define ACPI_MAX_GSBUS_DATA_SIZE 255
|
||||
#define ACPI_MAX_GSBUS_BUFFER_SIZE ACPI_SERIAL_HEADER_SIZE + ACPI_MAX_GSBUS_DATA_SIZE
|
||||
|
||||
#define ACPI_PRM_INPUT_BUFFER_SIZE 26
|
||||
|
||||
/* _sx_d and _sx_w control methods */
|
||||
|
||||
#define ACPI_NUM_sx_d_METHODS 4
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
/* Current ACPICA subsystem version in YYYYMMDD format */
|
||||
|
||||
#define ACPI_CA_VERSION 0x20210331
|
||||
#define ACPI_CA_VERSION 0x20210604
|
||||
|
||||
#include <acpi/acconfig.h>
|
||||
#include <acpi/actypes.h>
|
||||
|
|
|
@ -327,9 +327,20 @@ struct acpi_cedt_header {
|
|||
|
||||
enum acpi_cedt_type {
|
||||
ACPI_CEDT_TYPE_CHBS = 0,
|
||||
ACPI_CEDT_TYPE_RESERVED = 1
|
||||
ACPI_CEDT_TYPE_CFMWS = 1,
|
||||
ACPI_CEDT_TYPE_RESERVED = 2,
|
||||
};
|
||||
|
||||
/* Values for version field above */
|
||||
|
||||
#define ACPI_CEDT_CHBS_VERSION_CXL11 (0)
|
||||
#define ACPI_CEDT_CHBS_VERSION_CXL20 (1)
|
||||
|
||||
/* Values for length field above */
|
||||
|
||||
#define ACPI_CEDT_CHBS_LENGTH_CXL11 (0x2000)
|
||||
#define ACPI_CEDT_CHBS_LENGTH_CXL20 (0x10000)
|
||||
|
||||
/*
|
||||
* CEDT subtables
|
||||
*/
|
||||
|
@ -345,6 +356,34 @@ struct acpi_cedt_chbs {
|
|||
u64 length;
|
||||
};
|
||||
|
||||
/* 1: CXL Fixed Memory Window Structure */
|
||||
|
||||
struct acpi_cedt_cfmws {
|
||||
struct acpi_cedt_header header;
|
||||
u32 reserved1;
|
||||
u64 base_hpa;
|
||||
u64 window_size;
|
||||
u8 interleave_ways;
|
||||
u8 interleave_arithmetic;
|
||||
u16 reserved2;
|
||||
u32 granularity;
|
||||
u16 restrictions;
|
||||
u16 qtg_id;
|
||||
u32 interleave_targets[];
|
||||
};
|
||||
|
||||
/* Values for Interleave Arithmetic field above */
|
||||
|
||||
#define ACPI_CEDT_CFMWS_ARITHMETIC_MODULO (0)
|
||||
|
||||
/* Values for Restrictions field above */
|
||||
|
||||
#define ACPI_CEDT_CFMWS_RESTRICT_TYPE2 (1)
|
||||
#define ACPI_CEDT_CFMWS_RESTRICT_TYPE3 (1<<1)
|
||||
#define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE (1<<2)
|
||||
#define ACPI_CEDT_CFMWS_RESTRICT_PMEM (1<<3)
|
||||
#define ACPI_CEDT_CFMWS_RESTRICT_FIXED (1<<4)
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* CPEP - Corrected Platform Error Polling table (ACPI 4.0)
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
* file. Useful because they make it more difficult to inadvertently type in
|
||||
* the wrong signature.
|
||||
*/
|
||||
#define ACPI_SIG_BDAT "BDAT" /* BIOS Data ACPI Table */
|
||||
#define ACPI_SIG_IORT "IORT" /* IO Remapping Table */
|
||||
#define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */
|
||||
#define ACPI_SIG_LPIT "LPIT" /* Low Power Idle Table */
|
||||
|
@ -39,11 +40,14 @@
|
|||
#define ACPI_SIG_PHAT "PHAT" /* Platform Health Assessment Table */
|
||||
#define ACPI_SIG_PMTT "PMTT" /* Platform Memory Topology Table */
|
||||
#define ACPI_SIG_PPTT "PPTT" /* Processor Properties Topology Table */
|
||||
#define ACPI_SIG_PRMT "PRMT" /* Platform Runtime Mechanism Table */
|
||||
#define ACPI_SIG_RASF "RASF" /* RAS Feature table */
|
||||
#define ACPI_SIG_RGRT "RGRT" /* Regulatory Graphics Resource Table */
|
||||
#define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */
|
||||
#define ACPI_SIG_SDEI "SDEI" /* Software Delegated Exception Interface Table */
|
||||
#define ACPI_SIG_SDEV "SDEV" /* Secure Devices table */
|
||||
#define ACPI_SIG_NHLT "NHLT" /* Non-HDAudio Link Table */
|
||||
#define ACPI_SIG_SVKL "SVKL" /* Storage Volume Key Location Table */
|
||||
|
||||
/*
|
||||
* All tables must be byte-packed to match the ACPI specification, since
|
||||
|
@ -63,6 +67,20 @@
|
|||
* See http://stackoverflow.com/a/1053662/41661
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* BDAT - BIOS Data ACPI Table
|
||||
*
|
||||
* Conforms to "BIOS Data ACPI Table", Interface Specification v4.0 Draft 5
|
||||
* Nov 2020
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
struct acpi_table_bdat {
|
||||
struct acpi_table_header header;
|
||||
struct acpi_generic_address gas;
|
||||
};
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* IORT - IO Remapping Table
|
||||
|
@ -446,6 +464,12 @@ struct acpi_ivrs_device_hid {
|
|||
u8 uid_length;
|
||||
};
|
||||
|
||||
/* Values for uid_type above */
|
||||
|
||||
#define ACPI_IVRS_UID_NOT_PRESENT 0
|
||||
#define ACPI_IVRS_UID_IS_INTEGER 1
|
||||
#define ACPI_IVRS_UID_IS_STRING 2
|
||||
|
||||
/* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */
|
||||
|
||||
struct acpi_ivrs_memory {
|
||||
|
@ -763,6 +787,20 @@ struct acpi_madt_multiproc_wakeup {
|
|||
u64 base_address;
|
||||
};
|
||||
|
||||
#define ACPI_MULTIPROC_WAKEUP_MB_OS_SIZE 2032
|
||||
#define ACPI_MULTIPROC_WAKEUP_MB_FIRMWARE_SIZE 2048
|
||||
|
||||
struct acpi_madt_multiproc_wakeup_mailbox {
|
||||
u16 command;
|
||||
u16 reserved; /* reserved - must be zero */
|
||||
u32 apic_id;
|
||||
u64 wakeup_vector;
|
||||
u8 reserved_os[ACPI_MULTIPROC_WAKEUP_MB_OS_SIZE]; /* reserved for OS use */
|
||||
u8 reserved_firmware[ACPI_MULTIPROC_WAKEUP_MB_FIRMWARE_SIZE]; /* reserved for firmware use */
|
||||
};
|
||||
|
||||
#define ACPI_MP_WAKE_COMMAND_WAKEUP 1
|
||||
|
||||
/*
|
||||
* Common flags fields for MADT subtables
|
||||
*/
|
||||
|
@ -1673,6 +1711,48 @@ struct acpi_pptt_id {
|
|||
u16 spin_rev;
|
||||
};
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* PRMT - Platform Runtime Mechanism Table
|
||||
* Version 1
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
struct acpi_table_prmt {
|
||||
struct acpi_table_header header; /* Common ACPI table header */
|
||||
};
|
||||
|
||||
struct acpi_table_prmt_header {
|
||||
u8 platform_guid[16];
|
||||
u32 module_info_offset;
|
||||
u32 module_info_count;
|
||||
};
|
||||
|
||||
struct acpi_prmt_module_header {
|
||||
u16 revision;
|
||||
u16 length;
|
||||
};
|
||||
|
||||
struct acpi_prmt_module_info {
|
||||
u16 revision;
|
||||
u16 length;
|
||||
u8 module_guid[16];
|
||||
u16 major_rev;
|
||||
u16 minor_rev;
|
||||
u16 handler_info_count;
|
||||
u32 handler_info_offset;
|
||||
u64 mmio_list_pointer;
|
||||
};
|
||||
|
||||
struct acpi_prmt_handler_info {
|
||||
u16 revision;
|
||||
u16 length;
|
||||
u8 handler_guid[16];
|
||||
u64 handler_address;
|
||||
u64 static_data_buffer_address;
|
||||
u64 acpi_param_buffer_address;
|
||||
};
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* RASF - RAS Feature Table (ACPI 5.0)
|
||||
|
@ -1769,6 +1849,32 @@ enum acpi_rasf_status {
|
|||
#define ACPI_RASF_ERROR (1<<2)
|
||||
#define ACPI_RASF_STATUS (0x1F<<3)
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* RGRT - Regulatory Graphics Resource Table
|
||||
* Version 1
|
||||
*
|
||||
* Conforms to "ACPI RGRT" available at:
|
||||
* https://microsoft.github.io/mu/dyn/mu_plus/ms_core_pkg/acpi_RGRT/feature_acpi_rgrt/
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
struct acpi_table_rgrt {
|
||||
struct acpi_table_header header; /* Common ACPI table header */
|
||||
u16 version;
|
||||
u8 image_type;
|
||||
u8 reserved;
|
||||
u8 image[0];
|
||||
};
|
||||
|
||||
/* image_type values */
|
||||
|
||||
enum acpi_rgrt_image_type {
|
||||
ACPI_RGRT_TYPE_RESERVED0 = 0,
|
||||
ACPI_RGRT_IMAGE_TYPE_PNG = 1,
|
||||
ACPI_RGRT_TYPE_RESERVED = 2 /* 2 and greater are reserved */
|
||||
};
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* SBST - Smart Battery Specification Table
|
||||
|
@ -1899,6 +2005,37 @@ struct acpi_sdev_pcie_path {
|
|||
u8 function;
|
||||
};
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* SVKL - Storage Volume Key Location Table (ACPI 6.4)
|
||||
* From: "Guest-Host-Communication Interface (GHCI) for Intel
|
||||
* Trust Domain Extensions (Intel TDX)".
|
||||
* Version 1
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
struct acpi_table_svkl {
|
||||
struct acpi_table_header header; /* Common ACPI table header */
|
||||
u32 count;
|
||||
};
|
||||
|
||||
struct acpi_svkl_key {
|
||||
u16 type;
|
||||
u16 format;
|
||||
u32 size;
|
||||
u64 address;
|
||||
};
|
||||
|
||||
enum acpi_svkl_type {
|
||||
ACPI_SVKL_TYPE_MAIN_STORAGE = 0,
|
||||
ACPI_SVKL_TYPE_RESERVED = 1 /* 1 and greater are reserved */
|
||||
};
|
||||
|
||||
enum acpi_svkl_format {
|
||||
ACPI_SVKL_FORMAT_RAW_BINARY = 0,
|
||||
ACPI_SVKL_FORMAT_RESERVED = 1 /* 1 and greater are reserved */
|
||||
};
|
||||
|
||||
/* Reset to default packing */
|
||||
|
||||
#pragma pack()
|
||||
|
|
Загрузка…
Ссылка в новой задаче