mirror of
https://github.com/torvalds/linux
synced 2024-10-15 07:47:34 +00:00
Merge branch 'acpica'
Merge ACPICA material for v6.10. This is mostly new material included in the 20240322 upstream ACPICA release. - Disable -Wstringop-truncation for some ACPICA code in the kernel to avoid a compiler warning that is not very useful (Arnd Bergmann). - Add EINJ CXL error types to actbl1.h (Ben Cheatham). - Add support for RAS2 table to ACPICA (Shiju Jose). - Fix various spelling mistakes in text files and code comments in ACPICA (Colin Ian King). - Fix spelling and typos in ACPICA (Saket Dumbre). - Modify ACPI_OBJECT_COMMON_HEADER (lijun). - Add RISC-V RINTC affinity structure support to ACPICA (Haibo Xu). - Fix CXL 3.0 structure (RDPAS) in the CEDT table (Hojin Nam). - Add missin increment of registered GPE count to ACPICA (Daniil Tatianin). - Mark new ACPICA release 20240322 (Saket Dumbre). - Add support for the AEST V2 table to ACPICA (Ruidong Tian). * acpica: ACPICA: AEST: Add support for the AEST V2 table ACPICA: Update acpixf.h for new ACPICA release 20240322 ACPICA: events/evgpeinit: don't forget to increment registered GPE count ACPICA: Fix CXL 3.0 structure (RDPAS) in the CEDT table ACPICA: SRAT: Add dump and compiler support for RINTC affinity structure ACPICA: SRAT: Add RISC-V RINTC affinity structure ACPICA: Modify ACPI_OBJECT_COMMON_HEADER ACPICA: Fix spelling and typos ACPICA: Clean up the fix for Issue #900 ACPICA: Fix various spelling mistakes in text files and code comments ACPICA: Attempt 1 to fix issue #900 ACPICA: ACPI 6.5: RAS2: Add support for RAS2 table ACPICA: actbl1.h: Add EINJ CXL error types ACPI: disable -Wstringop-truncation
This commit is contained in:
commit
84fa7ad606
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
ccflags-y := -D_LINUX -DBUILDING_ACPICA
|
ccflags-y := -D_LINUX -DBUILDING_ACPICA
|
||||||
ccflags-$(CONFIG_ACPI_DEBUG) += -DACPI_DEBUG_OUTPUT
|
ccflags-$(CONFIG_ACPI_DEBUG) += -DACPI_DEBUG_OUTPUT
|
||||||
|
CFLAGS_tbfind.o += $(call cc-disable-warning, stringop-truncation)
|
||||||
|
|
||||||
# use acpi.o to put all files here into acpi.o modparam namespace
|
# use acpi.o to put all files here into acpi.o modparam namespace
|
||||||
obj-y += acpi.o
|
obj-y += acpi.o
|
||||||
|
|
|
@ -547,7 +547,7 @@ struct acpi_field_info {
|
||||||
|
|
||||||
struct acpi_ged_handler_info {
|
struct acpi_ged_handler_info {
|
||||||
struct acpi_ged_handler_info *next;
|
struct acpi_ged_handler_info *next;
|
||||||
u32 int_id; /* The interrupt ID that triggers the execution ofthe evt_method. */
|
u32 int_id; /* The interrupt ID that triggers the execution of the evt_method. */
|
||||||
struct acpi_namespace_node *evt_method; /* The _EVT method to be executed when an interrupt with ID = int_ID is received */
|
struct acpi_namespace_node *evt_method; /* The _EVT method to be executed when an interrupt with ID = int_ID is received */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@
|
||||||
u8 descriptor_type; /* To differentiate various internal objs */\
|
u8 descriptor_type; /* To differentiate various internal objs */\
|
||||||
u8 type; /* acpi_object_type */\
|
u8 type; /* acpi_object_type */\
|
||||||
u16 reference_count; /* For object deletion management */\
|
u16 reference_count; /* For object deletion management */\
|
||||||
u8 flags;
|
u8 flags
|
||||||
/*
|
/*
|
||||||
* Note: There are 3 bytes available here before the
|
* Note: There are 3 bytes available here before the
|
||||||
* next natural alignment boundary (for both 32/64 cases)
|
* next natural alignment boundary (for both 32/64 cases)
|
||||||
|
@ -71,10 +71,12 @@
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
struct acpi_object_common {
|
struct acpi_object_common {
|
||||||
ACPI_OBJECT_COMMON_HEADER};
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
};
|
||||||
|
|
||||||
struct acpi_object_integer {
|
struct acpi_object_integer {
|
||||||
ACPI_OBJECT_COMMON_HEADER u8 fill[3]; /* Prevent warning on some compilers */
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
u8 fill[3]; /* Prevent warning on some compilers */
|
||||||
u64 value;
|
u64 value;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -86,23 +88,26 @@ struct acpi_object_integer {
|
||||||
*/
|
*/
|
||||||
#define ACPI_COMMON_BUFFER_INFO(_type) \
|
#define ACPI_COMMON_BUFFER_INFO(_type) \
|
||||||
_type *pointer; \
|
_type *pointer; \
|
||||||
u32 length;
|
u32 length
|
||||||
|
|
||||||
/* Null terminated, ASCII characters only */
|
/* Null terminated, ASCII characters only */
|
||||||
|
|
||||||
struct acpi_object_string {
|
struct acpi_object_string {
|
||||||
ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_BUFFER_INFO(char) /* String in AML stream or allocated string */
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
ACPI_COMMON_BUFFER_INFO(char); /* String in AML stream or allocated string */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct acpi_object_buffer {
|
struct acpi_object_buffer {
|
||||||
ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_BUFFER_INFO(u8) /* Buffer in AML stream or allocated buffer */
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
ACPI_COMMON_BUFFER_INFO(u8); /* Buffer in AML stream or allocated buffer */
|
||||||
u32 aml_length;
|
u32 aml_length;
|
||||||
u8 *aml_start;
|
u8 *aml_start;
|
||||||
struct acpi_namespace_node *node; /* Link back to parent node */
|
struct acpi_namespace_node *node; /* Link back to parent node */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct acpi_object_package {
|
struct acpi_object_package {
|
||||||
ACPI_OBJECT_COMMON_HEADER struct acpi_namespace_node *node; /* Link back to parent node */
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
struct acpi_namespace_node *node; /* Link back to parent node */
|
||||||
union acpi_operand_object **elements; /* Array of pointers to acpi_objects */
|
union acpi_operand_object **elements; /* Array of pointers to acpi_objects */
|
||||||
u8 *aml_start;
|
u8 *aml_start;
|
||||||
u32 aml_length;
|
u32 aml_length;
|
||||||
|
@ -116,11 +121,13 @@ struct acpi_object_package {
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
struct acpi_object_event {
|
struct acpi_object_event {
|
||||||
ACPI_OBJECT_COMMON_HEADER acpi_semaphore os_semaphore; /* Actual OS synchronization object */
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
acpi_semaphore os_semaphore; /* Actual OS synchronization object */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct acpi_object_mutex {
|
struct acpi_object_mutex {
|
||||||
ACPI_OBJECT_COMMON_HEADER u8 sync_level; /* 0-15, specified in Mutex() call */
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
u8 sync_level; /* 0-15, specified in Mutex() call */
|
||||||
u16 acquisition_depth; /* Allow multiple Acquires, same thread */
|
u16 acquisition_depth; /* Allow multiple Acquires, same thread */
|
||||||
acpi_mutex os_mutex; /* Actual OS synchronization object */
|
acpi_mutex os_mutex; /* Actual OS synchronization object */
|
||||||
acpi_thread_id thread_id; /* Current owner of the mutex */
|
acpi_thread_id thread_id; /* Current owner of the mutex */
|
||||||
|
@ -132,7 +139,8 @@ struct acpi_object_mutex {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct acpi_object_region {
|
struct acpi_object_region {
|
||||||
ACPI_OBJECT_COMMON_HEADER u8 space_id;
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
u8 space_id;
|
||||||
struct acpi_namespace_node *node; /* Containing namespace node */
|
struct acpi_namespace_node *node; /* Containing namespace node */
|
||||||
union acpi_operand_object *handler; /* Handler for region access */
|
union acpi_operand_object *handler; /* Handler for region access */
|
||||||
union acpi_operand_object *next;
|
union acpi_operand_object *next;
|
||||||
|
@ -142,7 +150,8 @@ struct acpi_object_region {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct acpi_object_method {
|
struct acpi_object_method {
|
||||||
ACPI_OBJECT_COMMON_HEADER u8 info_flags;
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
u8 info_flags;
|
||||||
u8 param_count;
|
u8 param_count;
|
||||||
u8 sync_level;
|
u8 sync_level;
|
||||||
union acpi_operand_object *mutex;
|
union acpi_operand_object *mutex;
|
||||||
|
@ -178,33 +187,43 @@ struct acpi_object_method {
|
||||||
*/
|
*/
|
||||||
#define ACPI_COMMON_NOTIFY_INFO \
|
#define ACPI_COMMON_NOTIFY_INFO \
|
||||||
union acpi_operand_object *notify_list[2]; /* Handlers for system/device notifies */\
|
union acpi_operand_object *notify_list[2]; /* Handlers for system/device notifies */\
|
||||||
union acpi_operand_object *handler; /* Handler for Address space */
|
union acpi_operand_object *handler /* Handler for Address space */
|
||||||
|
|
||||||
/* COMMON NOTIFY for POWER, PROCESSOR, DEVICE, and THERMAL */
|
/* COMMON NOTIFY for POWER, PROCESSOR, DEVICE, and THERMAL */
|
||||||
|
|
||||||
struct acpi_object_notify_common {
|
struct acpi_object_notify_common {
|
||||||
ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO};
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
ACPI_COMMON_NOTIFY_INFO;
|
||||||
|
};
|
||||||
|
|
||||||
struct acpi_object_device {
|
struct acpi_object_device {
|
||||||
ACPI_OBJECT_COMMON_HEADER
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
ACPI_COMMON_NOTIFY_INFO struct acpi_gpe_block_info *gpe_block;
|
ACPI_COMMON_NOTIFY_INFO;
|
||||||
|
struct acpi_gpe_block_info *gpe_block;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct acpi_object_power_resource {
|
struct acpi_object_power_resource {
|
||||||
ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO u32 system_level;
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
ACPI_COMMON_NOTIFY_INFO;
|
||||||
|
u32 system_level;
|
||||||
u32 resource_order;
|
u32 resource_order;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct acpi_object_processor {
|
struct acpi_object_processor {
|
||||||
ACPI_OBJECT_COMMON_HEADER
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
/* The next two fields take advantage of the 3-byte space before NOTIFY_INFO */
|
|
||||||
|
/* The next two fields take advantage of the 3-byte space before NOTIFY_INFO */
|
||||||
|
|
||||||
u8 proc_id;
|
u8 proc_id;
|
||||||
u8 length;
|
u8 length;
|
||||||
ACPI_COMMON_NOTIFY_INFO acpi_io_address address;
|
ACPI_COMMON_NOTIFY_INFO;
|
||||||
|
acpi_io_address address;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct acpi_object_thermal_zone {
|
struct acpi_object_thermal_zone {
|
||||||
ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO};
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
ACPI_COMMON_NOTIFY_INFO;
|
||||||
|
};
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
*
|
*
|
||||||
|
@ -226,17 +245,21 @@ ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO};
|
||||||
u32 base_byte_offset; /* Byte offset within containing object */\
|
u32 base_byte_offset; /* Byte offset within containing object */\
|
||||||
u32 value; /* Value to store into the Bank or Index register */\
|
u32 value; /* Value to store into the Bank or Index register */\
|
||||||
u8 start_field_bit_offset;/* Bit offset within first field datum (0-63) */\
|
u8 start_field_bit_offset;/* Bit offset within first field datum (0-63) */\
|
||||||
u8 access_length; /* For serial regions/fields */
|
u8 access_length /* For serial regions/fields */
|
||||||
|
|
||||||
|
|
||||||
/* COMMON FIELD (for BUFFER, REGION, BANK, and INDEX fields) */
|
/* COMMON FIELD (for BUFFER, REGION, BANK, and INDEX fields) */
|
||||||
|
|
||||||
struct acpi_object_field_common {
|
struct acpi_object_field_common {
|
||||||
ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *region_obj; /* Parent Operation Region object (REGION/BANK fields only) */
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
ACPI_COMMON_FIELD_INFO;
|
||||||
|
union acpi_operand_object *region_obj; /* Parent Operation Region object (REGION/BANK fields only) */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct acpi_object_region_field {
|
struct acpi_object_region_field {
|
||||||
ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO u16 resource_length;
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
ACPI_COMMON_FIELD_INFO;
|
||||||
|
u16 resource_length;
|
||||||
union acpi_operand_object *region_obj; /* Containing op_region object */
|
union acpi_operand_object *region_obj; /* Containing op_region object */
|
||||||
u8 *resource_buffer; /* resource_template for serial regions/fields */
|
u8 *resource_buffer; /* resource_template for serial regions/fields */
|
||||||
u16 pin_number_index; /* Index relative to previous Connection/Template */
|
u16 pin_number_index; /* Index relative to previous Connection/Template */
|
||||||
|
@ -244,16 +267,20 @@ struct acpi_object_region_field {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct acpi_object_bank_field {
|
struct acpi_object_bank_field {
|
||||||
ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *region_obj; /* Containing op_region object */
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
ACPI_COMMON_FIELD_INFO;
|
||||||
|
union acpi_operand_object *region_obj; /* Containing op_region object */
|
||||||
union acpi_operand_object *bank_obj; /* bank_select Register object */
|
union acpi_operand_object *bank_obj; /* bank_select Register object */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct acpi_object_index_field {
|
struct acpi_object_index_field {
|
||||||
ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
/*
|
ACPI_COMMON_FIELD_INFO;
|
||||||
* No "RegionObj" pointer needed since the Index and Data registers
|
|
||||||
* are each field definitions unto themselves.
|
/*
|
||||||
*/
|
* No "RegionObj" pointer needed since the Index and Data registers
|
||||||
|
* are each field definitions unto themselves.
|
||||||
|
*/
|
||||||
union acpi_operand_object *index_obj; /* Index register */
|
union acpi_operand_object *index_obj; /* Index register */
|
||||||
union acpi_operand_object *data_obj; /* Data register */
|
union acpi_operand_object *data_obj; /* Data register */
|
||||||
};
|
};
|
||||||
|
@ -261,7 +288,9 @@ struct acpi_object_index_field {
|
||||||
/* The buffer_field is different in that it is part of a Buffer, not an op_region */
|
/* The buffer_field is different in that it is part of a Buffer, not an op_region */
|
||||||
|
|
||||||
struct acpi_object_buffer_field {
|
struct acpi_object_buffer_field {
|
||||||
ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO u8 is_create_field; /* Special case for objects created by create_field() */
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
ACPI_COMMON_FIELD_INFO;
|
||||||
|
u8 is_create_field; /* Special case for objects created by create_field() */
|
||||||
union acpi_operand_object *buffer_obj; /* Containing Buffer object */
|
union acpi_operand_object *buffer_obj; /* Containing Buffer object */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -272,7 +301,8 @@ struct acpi_object_buffer_field {
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
struct acpi_object_notify_handler {
|
struct acpi_object_notify_handler {
|
||||||
ACPI_OBJECT_COMMON_HEADER struct acpi_namespace_node *node; /* Parent device */
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
struct acpi_namespace_node *node; /* Parent device */
|
||||||
u32 handler_type; /* Type: Device/System/Both */
|
u32 handler_type; /* Type: Device/System/Both */
|
||||||
acpi_notify_handler handler; /* Handler address */
|
acpi_notify_handler handler; /* Handler address */
|
||||||
void *context;
|
void *context;
|
||||||
|
@ -280,7 +310,8 @@ struct acpi_object_notify_handler {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct acpi_object_addr_handler {
|
struct acpi_object_addr_handler {
|
||||||
ACPI_OBJECT_COMMON_HEADER u8 space_id;
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
u8 space_id;
|
||||||
u8 handler_flags;
|
u8 handler_flags;
|
||||||
acpi_adr_space_handler handler;
|
acpi_adr_space_handler handler;
|
||||||
struct acpi_namespace_node *node; /* Parent device */
|
struct acpi_namespace_node *node; /* Parent device */
|
||||||
|
@ -307,7 +338,8 @@ struct acpi_object_addr_handler {
|
||||||
* The Reference.Class differentiates these types.
|
* The Reference.Class differentiates these types.
|
||||||
*/
|
*/
|
||||||
struct acpi_object_reference {
|
struct acpi_object_reference {
|
||||||
ACPI_OBJECT_COMMON_HEADER u8 class; /* Reference Class */
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
u8 class; /* Reference Class */
|
||||||
u8 target_type; /* Used for Index Op */
|
u8 target_type; /* Used for Index Op */
|
||||||
u8 resolved; /* Reference has been resolved to a value */
|
u8 resolved; /* Reference has been resolved to a value */
|
||||||
void *object; /* name_op=>HANDLE to obj, index_op=>union acpi_operand_object */
|
void *object; /* name_op=>HANDLE to obj, index_op=>union acpi_operand_object */
|
||||||
|
@ -340,7 +372,8 @@ typedef enum {
|
||||||
* Currently: Region and field_unit types
|
* Currently: Region and field_unit types
|
||||||
*/
|
*/
|
||||||
struct acpi_object_extra {
|
struct acpi_object_extra {
|
||||||
ACPI_OBJECT_COMMON_HEADER struct acpi_namespace_node *method_REG; /* _REG method for this region (if any) */
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
struct acpi_namespace_node *method_REG; /* _REG method for this region (if any) */
|
||||||
struct acpi_namespace_node *scope_node;
|
struct acpi_namespace_node *scope_node;
|
||||||
void *region_context; /* Region-specific data */
|
void *region_context; /* Region-specific data */
|
||||||
u8 *aml_start;
|
u8 *aml_start;
|
||||||
|
@ -350,14 +383,16 @@ struct acpi_object_extra {
|
||||||
/* Additional data that can be attached to namespace nodes */
|
/* Additional data that can be attached to namespace nodes */
|
||||||
|
|
||||||
struct acpi_object_data {
|
struct acpi_object_data {
|
||||||
ACPI_OBJECT_COMMON_HEADER acpi_object_handler handler;
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
acpi_object_handler handler;
|
||||||
void *pointer;
|
void *pointer;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Structure used when objects are cached for reuse */
|
/* Structure used when objects are cached for reuse */
|
||||||
|
|
||||||
struct acpi_object_cache_list {
|
struct acpi_object_cache_list {
|
||||||
ACPI_OBJECT_COMMON_HEADER union acpi_operand_object *next; /* Link for object cache and internal lists */
|
ACPI_OBJECT_COMMON_HEADER;
|
||||||
|
union acpi_operand_object *next; /* Link for object cache and internal lists */
|
||||||
};
|
};
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
|
|
@ -413,6 +413,7 @@ acpi_ev_match_gpe_method(acpi_handle obj_handle,
|
||||||
gpe_event_info->flags &= ~(ACPI_GPE_DISPATCH_MASK);
|
gpe_event_info->flags &= ~(ACPI_GPE_DISPATCH_MASK);
|
||||||
gpe_event_info->flags |= (u8)(type | ACPI_GPE_DISPATCH_METHOD);
|
gpe_event_info->flags |= (u8)(type | ACPI_GPE_DISPATCH_METHOD);
|
||||||
gpe_event_info->dispatch.method_node = method_node;
|
gpe_event_info->dispatch.method_node = method_node;
|
||||||
|
walk_info->count++;
|
||||||
|
|
||||||
ACPI_DEBUG_PRINT((ACPI_DB_LOAD,
|
ACPI_DEBUG_PRINT((ACPI_DB_LOAD,
|
||||||
"Registered GPE method %s as GPE number 0x%.2X\n",
|
"Registered GPE method %s as GPE number 0x%.2X\n",
|
||||||
|
|
|
@ -62,7 +62,12 @@ void acpi_ut_track_stack_ptr(void)
|
||||||
acpi_size current_sp;
|
acpi_size current_sp;
|
||||||
|
|
||||||
if (¤t_sp < acpi_gbl_lowest_stack_pointer) {
|
if (¤t_sp < acpi_gbl_lowest_stack_pointer) {
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#if defined(__GNUC__) && __GNUC__ >= 12
|
||||||
|
#pragma GCC diagnostic ignored "-Wdangling-pointer="
|
||||||
|
#endif
|
||||||
acpi_gbl_lowest_stack_pointer = ¤t_sp;
|
acpi_gbl_lowest_stack_pointer = ¤t_sp;
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
}
|
}
|
||||||
|
|
||||||
if (acpi_gbl_nesting_level > acpi_gbl_deepest_nesting) {
|
if (acpi_gbl_nesting_level > acpi_gbl_deepest_nesting) {
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
/* Current ACPICA subsystem version in YYYYMMDD format */
|
/* Current ACPICA subsystem version in YYYYMMDD format */
|
||||||
|
|
||||||
#define ACPI_CA_VERSION 0x20230628
|
#define ACPI_CA_VERSION 0x20240322
|
||||||
|
|
||||||
#include <acpi/acconfig.h>
|
#include <acpi/acconfig.h>
|
||||||
#include <acpi/actypes.h>
|
#include <acpi/actypes.h>
|
||||||
|
|
|
@ -571,8 +571,6 @@ struct acpi_cedt_cxims {
|
||||||
|
|
||||||
struct acpi_cedt_rdpas {
|
struct acpi_cedt_rdpas {
|
||||||
struct acpi_cedt_header header;
|
struct acpi_cedt_header header;
|
||||||
u8 reserved1;
|
|
||||||
u16 length;
|
|
||||||
u16 segment;
|
u16 segment;
|
||||||
u16 bdf;
|
u16 bdf;
|
||||||
u8 protocol;
|
u8 protocol;
|
||||||
|
@ -1096,6 +1094,12 @@ enum acpi_einj_command_status {
|
||||||
#define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9)
|
#define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9)
|
||||||
#define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10)
|
#define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10)
|
||||||
#define ACPI_EINJ_PLATFORM_FATAL (1<<11)
|
#define ACPI_EINJ_PLATFORM_FATAL (1<<11)
|
||||||
|
#define ACPI_EINJ_CXL_CACHE_CORRECTABLE (1<<12)
|
||||||
|
#define ACPI_EINJ_CXL_CACHE_UNCORRECTABLE (1<<13)
|
||||||
|
#define ACPI_EINJ_CXL_CACHE_FATAL (1<<14)
|
||||||
|
#define ACPI_EINJ_CXL_MEM_CORRECTABLE (1<<15)
|
||||||
|
#define ACPI_EINJ_CXL_MEM_UNCORRECTABLE (1<<16)
|
||||||
|
#define ACPI_EINJ_CXL_MEM_FATAL (1<<17)
|
||||||
#define ACPI_EINJ_VENDOR_DEFINED (1<<31)
|
#define ACPI_EINJ_VENDOR_DEFINED (1<<31)
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
|
|
|
@ -47,6 +47,7 @@
|
||||||
#define ACPI_SIG_PPTT "PPTT" /* Processor Properties Topology Table */
|
#define ACPI_SIG_PPTT "PPTT" /* Processor Properties Topology Table */
|
||||||
#define ACPI_SIG_PRMT "PRMT" /* Platform Runtime Mechanism Table */
|
#define ACPI_SIG_PRMT "PRMT" /* Platform Runtime Mechanism Table */
|
||||||
#define ACPI_SIG_RASF "RASF" /* RAS Feature table */
|
#define ACPI_SIG_RASF "RASF" /* RAS Feature table */
|
||||||
|
#define ACPI_SIG_RAS2 "RAS2" /* RAS2 Feature table */
|
||||||
#define ACPI_SIG_RGRT "RGRT" /* Regulatory Graphics Resource Table */
|
#define ACPI_SIG_RGRT "RGRT" /* Regulatory Graphics Resource Table */
|
||||||
#define ACPI_SIG_RHCT "RHCT" /* RISC-V Hart Capabilities Table */
|
#define ACPI_SIG_RHCT "RHCT" /* RISC-V Hart Capabilities Table */
|
||||||
#define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */
|
#define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */
|
||||||
|
@ -77,8 +78,8 @@
|
||||||
*
|
*
|
||||||
* AEST - Arm Error Source Table
|
* AEST - Arm Error Source Table
|
||||||
*
|
*
|
||||||
* Conforms to: ACPI for the Armv8 RAS Extensions 1.1 Platform Design Document
|
* Conforms to: ACPI for the Armv8 RAS Extensions 1.1(Sep 2020) and
|
||||||
* September 2020.
|
* 2.0(May 2023) Platform Design Document.
|
||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
|
@ -108,7 +109,9 @@ struct acpi_aest_hdr {
|
||||||
#define ACPI_AEST_SMMU_ERROR_NODE 2
|
#define ACPI_AEST_SMMU_ERROR_NODE 2
|
||||||
#define ACPI_AEST_VENDOR_ERROR_NODE 3
|
#define ACPI_AEST_VENDOR_ERROR_NODE 3
|
||||||
#define ACPI_AEST_GIC_ERROR_NODE 4
|
#define ACPI_AEST_GIC_ERROR_NODE 4
|
||||||
#define ACPI_AEST_NODE_TYPE_RESERVED 5 /* 5 and above are reserved */
|
#define ACPI_AEST_PCIE_ERROR_NODE 5
|
||||||
|
#define ACPI_AEST_PROXY_ERROR_NODE 6
|
||||||
|
#define ACPI_AEST_NODE_TYPE_RESERVED 7 /* 7 and above are reserved */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* AEST subtables (Error nodes)
|
* AEST subtables (Error nodes)
|
||||||
|
@ -187,6 +190,12 @@ typedef struct acpi_aest_vendor {
|
||||||
|
|
||||||
} acpi_aest_vendor;
|
} acpi_aest_vendor;
|
||||||
|
|
||||||
|
struct acpi_aest_vendor_v2 {
|
||||||
|
char acpi_hid[8];
|
||||||
|
u32 acpi_uid;
|
||||||
|
u8 vendor_specific_data[16];
|
||||||
|
};
|
||||||
|
|
||||||
/* 4: Gic Error */
|
/* 4: Gic Error */
|
||||||
|
|
||||||
typedef struct acpi_aest_gic {
|
typedef struct acpi_aest_gic {
|
||||||
|
@ -203,6 +212,18 @@ typedef struct acpi_aest_gic {
|
||||||
#define ACPI_AEST_GIC_ITS 3
|
#define ACPI_AEST_GIC_ITS 3
|
||||||
#define ACPI_AEST_GIC_RESERVED 4 /* 4 and above are reserved */
|
#define ACPI_AEST_GIC_RESERVED 4 /* 4 and above are reserved */
|
||||||
|
|
||||||
|
/* 5: PCIe Error */
|
||||||
|
|
||||||
|
struct acpi_aest_pcie {
|
||||||
|
u32 iort_node_reference;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 6: Proxy Error */
|
||||||
|
|
||||||
|
struct acpi_aest_proxy {
|
||||||
|
u64 node_address;
|
||||||
|
};
|
||||||
|
|
||||||
/* Node Interface Structure */
|
/* Node Interface Structure */
|
||||||
|
|
||||||
typedef struct acpi_aest_node_interface {
|
typedef struct acpi_aest_node_interface {
|
||||||
|
@ -218,11 +239,57 @@ typedef struct acpi_aest_node_interface {
|
||||||
|
|
||||||
} acpi_aest_node_interface;
|
} acpi_aest_node_interface;
|
||||||
|
|
||||||
|
/* Node Interface Structure V2 */
|
||||||
|
|
||||||
|
struct acpi_aest_node_interface_header {
|
||||||
|
u8 type;
|
||||||
|
u8 group_format;
|
||||||
|
u8 reserved[2];
|
||||||
|
u32 flags;
|
||||||
|
u64 address;
|
||||||
|
u32 error_record_index;
|
||||||
|
u32 error_record_count;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define ACPI_AEST_NODE_GROUP_FORMAT_4K 0
|
||||||
|
#define ACPI_AEST_NODE_GROUP_FORMAT_16K 1
|
||||||
|
#define ACPI_AEST_NODE_GROUP_FORMAT_64K 2
|
||||||
|
|
||||||
|
struct acpi_aest_node_interface_common {
|
||||||
|
u32 error_node_device;
|
||||||
|
u32 processor_affinity;
|
||||||
|
u64 error_group_register_base;
|
||||||
|
u64 fault_inject_register_base;
|
||||||
|
u64 interrupt_config_register_base;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct acpi_aest_node_interface_4k {
|
||||||
|
u64 error_record_implemented;
|
||||||
|
u64 error_status_reporting;
|
||||||
|
u64 addressing_mode;
|
||||||
|
struct acpi_aest_node_interface_common common;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct acpi_aest_node_interface_16k {
|
||||||
|
u64 error_record_implemented[4];
|
||||||
|
u64 error_status_reporting[4];
|
||||||
|
u64 addressing_mode[4];
|
||||||
|
struct acpi_aest_node_interface_common common;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct acpi_aest_node_interface_64k {
|
||||||
|
u64 error_record_implemented[14];
|
||||||
|
u64 error_status_reporting[14];
|
||||||
|
u64 addressing_mode[14];
|
||||||
|
struct acpi_aest_node_interface_common common;
|
||||||
|
};
|
||||||
|
|
||||||
/* Values for Type field above */
|
/* Values for Type field above */
|
||||||
|
|
||||||
#define ACPI_AEST_NODE_SYSTEM_REGISTER 0
|
#define ACPI_AEST_NODE_SYSTEM_REGISTER 0
|
||||||
#define ACPI_AEST_NODE_MEMORY_MAPPED 1
|
#define ACPI_AEST_NODE_MEMORY_MAPPED 1
|
||||||
#define ACPI_AEST_XFACE_RESERVED 2 /* 2 and above are reserved */
|
#define ACPI_AEST_NODE_SINGLE_RECORD_MEMORY_MAPPED 2
|
||||||
|
#define ACPI_AEST_XFACE_RESERVED 3 /* 2 and above are reserved */
|
||||||
|
|
||||||
/* Node Interrupt Structure */
|
/* Node Interrupt Structure */
|
||||||
|
|
||||||
|
@ -236,6 +303,16 @@ typedef struct acpi_aest_node_interrupt {
|
||||||
|
|
||||||
} acpi_aest_node_interrupt;
|
} acpi_aest_node_interrupt;
|
||||||
|
|
||||||
|
/* Node Interrupt Structure V2 */
|
||||||
|
|
||||||
|
struct acpi_aest_node_interrupt_v2 {
|
||||||
|
u8 type;
|
||||||
|
u8 reserved[2];
|
||||||
|
u8 flags;
|
||||||
|
u32 gsiv;
|
||||||
|
u8 reserved1[4];
|
||||||
|
};
|
||||||
|
|
||||||
/* Values for Type field above */
|
/* Values for Type field above */
|
||||||
|
|
||||||
#define ACPI_AEST_NODE_FAULT_HANDLING 0
|
#define ACPI_AEST_NODE_FAULT_HANDLING 0
|
||||||
|
@ -2751,6 +2828,134 @@ enum acpi_rasf_status {
|
||||||
#define ACPI_RASF_ERROR (1<<2)
|
#define ACPI_RASF_ERROR (1<<2)
|
||||||
#define ACPI_RASF_STATUS (0x1F<<3)
|
#define ACPI_RASF_STATUS (0x1F<<3)
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
*
|
||||||
|
* RAS2 - RAS2 Feature Table (ACPI 6.5)
|
||||||
|
* Version 1
|
||||||
|
*
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
struct acpi_table_ras2 {
|
||||||
|
struct acpi_table_header header; /* Common ACPI table header */
|
||||||
|
u16 reserved;
|
||||||
|
u16 num_pcc_descs;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* RAS2 Platform Communication Channel Descriptor */
|
||||||
|
|
||||||
|
struct acpi_ras2_pcc_desc {
|
||||||
|
u8 channel_id;
|
||||||
|
u16 reserved;
|
||||||
|
u8 feature_type;
|
||||||
|
u32 instance;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* RAS2 Platform Communication Channel Shared Memory Region */
|
||||||
|
|
||||||
|
struct acpi_ras2_shared_memory {
|
||||||
|
u32 signature;
|
||||||
|
u16 command;
|
||||||
|
u16 status;
|
||||||
|
u16 version;
|
||||||
|
u8 features[16];
|
||||||
|
u8 set_capabilities[16];
|
||||||
|
u16 num_parameter_blocks;
|
||||||
|
u32 set_capabilities_status;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* RAS2 Parameter Block Structure for PATROL_SCRUB */
|
||||||
|
|
||||||
|
struct acpi_ras2_parameter_block {
|
||||||
|
u16 type;
|
||||||
|
u16 version;
|
||||||
|
u16 length;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* RAS2 Parameter Block Structure for PATROL_SCRUB */
|
||||||
|
|
||||||
|
struct acpi_ras2_patrol_scrub_parameter {
|
||||||
|
struct acpi_ras2_parameter_block header;
|
||||||
|
u16 patrol_scrub_command;
|
||||||
|
u64 requested_address_range[2];
|
||||||
|
u64 actual_address_range[2];
|
||||||
|
u32 flags;
|
||||||
|
u32 scrub_params_out;
|
||||||
|
u32 scrub_params_in;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Masks for Flags field above */
|
||||||
|
|
||||||
|
#define ACPI_RAS2_SCRUBBER_RUNNING 1
|
||||||
|
|
||||||
|
/* RAS2 Parameter Block Structure for LA2PA_TRANSLATION */
|
||||||
|
|
||||||
|
struct acpi_ras2_la2pa_translation_parameter {
|
||||||
|
struct acpi_ras2_parameter_block header;
|
||||||
|
u16 addr_translation_command;
|
||||||
|
u64 sub_inst_id;
|
||||||
|
u64 logical_address;
|
||||||
|
u64 physical_address;
|
||||||
|
u32 status;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Channel Commands */
|
||||||
|
|
||||||
|
enum acpi_ras2_commands {
|
||||||
|
ACPI_RAS2_EXECUTE_RAS2_COMMAND = 1
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Platform RAS2 Features */
|
||||||
|
|
||||||
|
enum acpi_ras2_features {
|
||||||
|
ACPI_RAS2_PATROL_SCRUB_SUPPORTED = 0,
|
||||||
|
ACPI_RAS2_LA2PA_TRANSLATION = 1
|
||||||
|
};
|
||||||
|
|
||||||
|
/* RAS2 Patrol Scrub Commands */
|
||||||
|
|
||||||
|
enum acpi_ras2_patrol_scrub_commands {
|
||||||
|
ACPI_RAS2_GET_PATROL_PARAMETERS = 1,
|
||||||
|
ACPI_RAS2_START_PATROL_SCRUBBER = 2,
|
||||||
|
ACPI_RAS2_STOP_PATROL_SCRUBBER = 3
|
||||||
|
};
|
||||||
|
|
||||||
|
/* RAS2 LA2PA Translation Commands */
|
||||||
|
|
||||||
|
enum acpi_ras2_la2_pa_translation_commands {
|
||||||
|
ACPI_RAS2_GET_LA2PA_TRANSLATION = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* RAS2 LA2PA Translation Status values */
|
||||||
|
|
||||||
|
enum acpi_ras2_la2_pa_translation_status {
|
||||||
|
ACPI_RAS2_LA2PA_TRANSLATION_SUCCESS = 0,
|
||||||
|
ACPI_RAS2_LA2PA_TRANSLATION_FAIL = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Channel Command flags */
|
||||||
|
|
||||||
|
#define ACPI_RAS2_GENERATE_SCI (1<<15)
|
||||||
|
|
||||||
|
/* Status values */
|
||||||
|
|
||||||
|
enum acpi_ras2_status {
|
||||||
|
ACPI_RAS2_SUCCESS = 0,
|
||||||
|
ACPI_RAS2_NOT_VALID = 1,
|
||||||
|
ACPI_RAS2_NOT_SUPPORTED = 2,
|
||||||
|
ACPI_RAS2_BUSY = 3,
|
||||||
|
ACPI_RAS2_FAILED = 4,
|
||||||
|
ACPI_RAS2_ABORTED = 5,
|
||||||
|
ACPI_RAS2_INVALID_DATA = 6
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Status flags */
|
||||||
|
|
||||||
|
#define ACPI_RAS2_COMMAND_COMPLETE (1)
|
||||||
|
#define ACPI_RAS2_SCI_DOORBELL (1<<1)
|
||||||
|
#define ACPI_RAS2_ERROR (1<<2)
|
||||||
|
#define ACPI_RAS2_STATUS (0x1F<<3)
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* RGRT - Regulatory Graphics Resource Table
|
* RGRT - Regulatory Graphics Resource Table
|
||||||
|
|
|
@ -192,7 +192,8 @@ enum acpi_srat_type {
|
||||||
ACPI_SRAT_TYPE_GIC_ITS_AFFINITY = 4, /* ACPI 6.2 */
|
ACPI_SRAT_TYPE_GIC_ITS_AFFINITY = 4, /* ACPI 6.2 */
|
||||||
ACPI_SRAT_TYPE_GENERIC_AFFINITY = 5, /* ACPI 6.3 */
|
ACPI_SRAT_TYPE_GENERIC_AFFINITY = 5, /* ACPI 6.3 */
|
||||||
ACPI_SRAT_TYPE_GENERIC_PORT_AFFINITY = 6, /* ACPI 6.4 */
|
ACPI_SRAT_TYPE_GENERIC_PORT_AFFINITY = 6, /* ACPI 6.4 */
|
||||||
ACPI_SRAT_TYPE_RESERVED = 7 /* 7 and greater are reserved */
|
ACPI_SRAT_TYPE_RINTC_AFFINITY = 7, /* ACPI 6.6 */
|
||||||
|
ACPI_SRAT_TYPE_RESERVED = 8 /* 8 and greater are reserved */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -296,6 +297,21 @@ struct acpi_srat_generic_affinity {
|
||||||
#define ACPI_SRAT_GENERIC_AFFINITY_ENABLED (1) /* 00: Use affinity structure */
|
#define ACPI_SRAT_GENERIC_AFFINITY_ENABLED (1) /* 00: Use affinity structure */
|
||||||
#define ACPI_SRAT_ARCHITECTURAL_TRANSACTIONS (1<<1) /* ACPI 6.4 */
|
#define ACPI_SRAT_ARCHITECTURAL_TRANSACTIONS (1<<1) /* ACPI 6.4 */
|
||||||
|
|
||||||
|
/* 7: RINTC Affinity Structure(ACPI 6.6) */
|
||||||
|
|
||||||
|
struct acpi_srat_rintc_affinity {
|
||||||
|
struct acpi_subtable_header header;
|
||||||
|
u16 reserved;
|
||||||
|
u32 proximity_domain;
|
||||||
|
u32 acpi_processor_uid;
|
||||||
|
u32 flags;
|
||||||
|
u32 clock_domain;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Flags for struct acpi_srat_rintc_affinity */
|
||||||
|
|
||||||
|
#define ACPI_SRAT_RINTC_ENABLED (1) /* 00: Use affinity structure */
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* STAO - Status Override Table (_STA override) - ACPI 6.0
|
* STAO - Status Override Table (_STA override) - ACPI 6.0
|
||||||
|
|
Loading…
Reference in a new issue