mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 08:58:07 +00:00
Merge branch 'acpica'
Merge ACPICA updates for 6.12-rc1: - Check return value in acpi_db_convert_to_package() (Pei Xiao). - Detect FACS and allow setting the waking vector on reduced-hardware ACPI platforms (Jiaqing Zhao). - Allow ACPICA to represent semaphores as integers (Adrien Destugues). - Complete CXL 3.0 CXIMS structures support in ACPICA (Zhang Rui). - Make ACPICA support SPCR version 4 and add RISC-V SBI Subtype to DBG2 (Sia Jee Heng). - Implement the Dword_PCC Resource Descriptor Macro in ACPICA (Jose Marinho). - Correct the typo in struct acpi_mpam_msc_node member (Punit Agrawal). - Implement ACPI_WARNING_ONCE() and ACPI_ERROR_ONCE() and use them to prevent a Stall() violation warning from being printed every time this takes place (Vasily Khoruzhick). - Allow PCC Data Type in MCTP resource (Adam Young). - Fix memory leaks on acpi_ps_get_next_namepath() and acpi_ps_get_next_field() failures (Armin Wolf). - Add support for supressing leading zeros in hex strings when converting them to integers and update integer-to-hex-string conversions in ACPICA (Armin Wolf). - Add support for Windows 11 22H2 _OSI string (Armin Wolf). - Avoid warning for Dump Functions in ACPICA (Adam Lackorzynski). - Add extended linear address mode to HMAT MSCIS in ACPICA (Dave Jiang). - Handle empty connection_node in iasl (Aleksandrs Vinarskis). - Allow for more flexibility in _DSM args (Saket Dumbre). - Setup for ACPICA release 20240827 (Saket Dumbre). * acpica: (23 commits) ACPICA: Setup for ACPICA release 20240827 ACPICA: Allow for more flexibility in _DSM args ACPICA: iasl: handle empty connection_node ACPICA: HMAT: Add extended linear address mode to MSCIS ACPICA: Avoid warning for Dump Functions ACPICA: Add support for Windows 11 22H2 _OSI string ACPICA: Update integer-to-hex-string conversions ACPICA: Add support for supressing leading zeros in hex strings ACPICA: Allow for supressing leading zeros when using acpi_ex_convert_to_ascii() ACPICA: Fix memory leak if acpi_ps_get_next_field() fails ACPICA: Fix memory leak if acpi_ps_get_next_namepath() fails ACPICA: Allow PCC Data Type in MCTP resource. ACPICA: executer/exsystem: Don't nag user about every Stall() violating the spec ACPICA: Implement ACPI_WARNING_ONCE and ACPI_ERROR_ONCE ACPICA: MPAM: Correct the typo in struct acpi_mpam_msc_node member ACPICA: Implement the Dword_PCC Resource Descriptor Macro ACPICA: Headers: Add RISC-V SBI Subtype to DBG2 ACPICA: SPCR: Update the SPCR table to version 4 ACPICA: Complete CXL 3.0 CXIMS structures ACPICA: haiku: Fix invalid value used for semaphores ...
This commit is contained in:
commit
13f4eb6b53
24 changed files with 174 additions and 57 deletions
|
@ -29,11 +29,7 @@ ACPI_INIT_GLOBAL(u32, acpi_gbl_dsdt_index, ACPI_INVALID_TABLE_INDEX);
|
|||
ACPI_INIT_GLOBAL(u32, acpi_gbl_facs_index, ACPI_INVALID_TABLE_INDEX);
|
||||
ACPI_INIT_GLOBAL(u32, acpi_gbl_xfacs_index, ACPI_INVALID_TABLE_INDEX);
|
||||
ACPI_INIT_GLOBAL(u32, acpi_gbl_fadt_index, ACPI_INVALID_TABLE_INDEX);
|
||||
|
||||
#if (!ACPI_REDUCED_HARDWARE)
|
||||
ACPI_GLOBAL(struct acpi_table_facs *, acpi_gbl_FACS);
|
||||
|
||||
#endif /* !ACPI_REDUCED_HARDWARE */
|
||||
ACPI_INIT_GLOBAL(struct acpi_table_facs *, acpi_gbl_FACS, NULL);
|
||||
|
||||
/* These addresses are calculated from the FADT Event Block addresses */
|
||||
|
||||
|
|
|
@ -1090,6 +1090,8 @@ struct acpi_port_info {
|
|||
#define ACPI_ADDRESS_TYPE_IO_RANGE 1
|
||||
#define ACPI_ADDRESS_TYPE_BUS_NUMBER_RANGE 2
|
||||
|
||||
#define ACPI_ADDRESS_TYPE_PCC_NUMBER 0xA
|
||||
|
||||
/* Resource descriptor types and masks */
|
||||
|
||||
#define ACPI_RESOURCE_NAME_LARGE 0x80
|
||||
|
|
|
@ -450,7 +450,7 @@ const union acpi_predefined_info acpi_gbl_predefined_methods[] = {
|
|||
|
||||
{{"_DSM",
|
||||
METHOD_4ARGS(ACPI_TYPE_BUFFER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER,
|
||||
ACPI_TYPE_PACKAGE),
|
||||
ACPI_TYPE_ANY) | ARG_COUNT_IS_MINIMUM,
|
||||
METHOD_RETURNS(ACPI_RTYPE_ALL)}}, /* Must return a value, but it can be of any type */
|
||||
|
||||
{{"_DSS", METHOD_1ARGS(ACPI_TYPE_INTEGER),
|
||||
|
|
|
@ -174,6 +174,8 @@ acpi_status acpi_db_convert_to_package(char *string, union acpi_object *object)
|
|||
elements =
|
||||
ACPI_ALLOCATE_ZEROED(DB_DEFAULT_PKG_ELEMENTS *
|
||||
sizeof(union acpi_object));
|
||||
if (!elements)
|
||||
return (AE_NO_MEMORY);
|
||||
|
||||
this = string;
|
||||
for (i = 0; i < (DB_DEFAULT_PKG_ELEMENTS - 1); i++) {
|
||||
|
|
|
@ -17,7 +17,8 @@ ACPI_MODULE_NAME("exconvrt")
|
|||
|
||||
/* Local prototypes */
|
||||
static u32
|
||||
acpi_ex_convert_to_ascii(u64 integer, u16 base, u8 *string, u8 max_length);
|
||||
acpi_ex_convert_to_ascii(u64 integer,
|
||||
u16 base, u8 *string, u8 max_length, u8 leading_zeros);
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
|
@ -249,6 +250,7 @@ acpi_ex_convert_to_buffer(union acpi_operand_object *obj_desc,
|
|||
* base - ACPI_STRING_DECIMAL or ACPI_STRING_HEX
|
||||
* string - Where the string is returned
|
||||
* data_width - Size of data item to be converted, in bytes
|
||||
* leading_zeros - Allow leading zeros
|
||||
*
|
||||
* RETURN: Actual string length
|
||||
*
|
||||
|
@ -257,7 +259,8 @@ acpi_ex_convert_to_buffer(union acpi_operand_object *obj_desc,
|
|||
******************************************************************************/
|
||||
|
||||
static u32
|
||||
acpi_ex_convert_to_ascii(u64 integer, u16 base, u8 *string, u8 data_width)
|
||||
acpi_ex_convert_to_ascii(u64 integer,
|
||||
u16 base, u8 *string, u8 data_width, u8 leading_zeros)
|
||||
{
|
||||
u64 digit;
|
||||
u32 i;
|
||||
|
@ -266,7 +269,8 @@ acpi_ex_convert_to_ascii(u64 integer, u16 base, u8 *string, u8 data_width)
|
|||
u32 hex_length;
|
||||
u32 decimal_length;
|
||||
u32 remainder;
|
||||
u8 supress_zeros;
|
||||
u8 supress_zeros = !leading_zeros;
|
||||
u8 hex_char;
|
||||
|
||||
ACPI_FUNCTION_ENTRY();
|
||||
|
||||
|
@ -293,7 +297,6 @@ acpi_ex_convert_to_ascii(u64 integer, u16 base, u8 *string, u8 data_width)
|
|||
break;
|
||||
}
|
||||
|
||||
supress_zeros = TRUE; /* No leading zeros */
|
||||
remainder = 0;
|
||||
|
||||
for (i = decimal_length; i > 0; i--) {
|
||||
|
@ -328,8 +331,17 @@ acpi_ex_convert_to_ascii(u64 integer, u16 base, u8 *string, u8 data_width)
|
|||
|
||||
/* Get one hex digit, most significant digits first */
|
||||
|
||||
string[k] = (u8)
|
||||
hex_char = (u8)
|
||||
acpi_ut_hex_to_ascii_char(integer, ACPI_MUL_4(j));
|
||||
|
||||
/* Supress leading zeros until the first non-zero character */
|
||||
|
||||
if (hex_char == ACPI_ASCII_ZERO && supress_zeros) {
|
||||
continue;
|
||||
}
|
||||
|
||||
supress_zeros = FALSE;
|
||||
string[k] = hex_char;
|
||||
k++;
|
||||
}
|
||||
break;
|
||||
|
@ -379,6 +391,7 @@ acpi_ex_convert_to_string(union acpi_operand_object * obj_desc,
|
|||
u32 string_length = 0;
|
||||
u16 base = 16;
|
||||
u8 separator = ',';
|
||||
u8 leading_zeros;
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR(ex_convert_to_string, obj_desc);
|
||||
|
||||
|
@ -400,14 +413,26 @@ acpi_ex_convert_to_string(union acpi_operand_object * obj_desc,
|
|||
* Make room for the maximum decimal number size
|
||||
*/
|
||||
string_length = ACPI_MAX_DECIMAL_DIGITS;
|
||||
leading_zeros = FALSE;
|
||||
base = 10;
|
||||
break;
|
||||
|
||||
case ACPI_EXPLICIT_CONVERT_HEX:
|
||||
/*
|
||||
* From to_hex_string.
|
||||
*
|
||||
* Supress leading zeros and append "0x"
|
||||
*/
|
||||
string_length =
|
||||
ACPI_MUL_2(acpi_gbl_integer_byte_width) + 2;
|
||||
leading_zeros = FALSE;
|
||||
break;
|
||||
default:
|
||||
|
||||
/* Two hex string characters for each integer byte */
|
||||
|
||||
string_length = ACPI_MUL_2(acpi_gbl_integer_byte_width);
|
||||
leading_zeros = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -422,17 +447,32 @@ acpi_ex_convert_to_string(union acpi_operand_object * obj_desc,
|
|||
}
|
||||
|
||||
new_buf = return_desc->buffer.pointer;
|
||||
if (type == ACPI_EXPLICIT_CONVERT_HEX) {
|
||||
|
||||
/* Append "0x" prefix for explicit hex conversion */
|
||||
|
||||
*new_buf++ = '0';
|
||||
*new_buf++ = 'x';
|
||||
}
|
||||
|
||||
/* Convert integer to string */
|
||||
|
||||
string_length =
|
||||
acpi_ex_convert_to_ascii(obj_desc->integer.value, base,
|
||||
new_buf,
|
||||
acpi_gbl_integer_byte_width);
|
||||
acpi_gbl_integer_byte_width,
|
||||
leading_zeros);
|
||||
|
||||
/* Null terminate at the correct place */
|
||||
|
||||
return_desc->string.length = string_length;
|
||||
if (type == ACPI_EXPLICIT_CONVERT_HEX) {
|
||||
|
||||
/* Take "0x" prefix into account */
|
||||
|
||||
return_desc->string.length += 2;
|
||||
}
|
||||
|
||||
new_buf[string_length] = 0;
|
||||
break;
|
||||
|
||||
|
@ -448,6 +488,7 @@ acpi_ex_convert_to_string(union acpi_operand_object * obj_desc,
|
|||
* From ACPI: "If the input is a buffer, it is converted to a
|
||||
* a string of decimal values separated by commas."
|
||||
*/
|
||||
leading_zeros = FALSE;
|
||||
base = 10;
|
||||
|
||||
/*
|
||||
|
@ -475,6 +516,7 @@ acpi_ex_convert_to_string(union acpi_operand_object * obj_desc,
|
|||
*
|
||||
* Each hex number is prefixed with 0x (11/2018)
|
||||
*/
|
||||
leading_zeros = TRUE;
|
||||
separator = ' ';
|
||||
string_length = (obj_desc->buffer.length * 5);
|
||||
break;
|
||||
|
@ -488,6 +530,7 @@ acpi_ex_convert_to_string(union acpi_operand_object * obj_desc,
|
|||
*
|
||||
* Each hex number is prefixed with 0x (11/2018)
|
||||
*/
|
||||
leading_zeros = TRUE;
|
||||
separator = ',';
|
||||
string_length = (obj_desc->buffer.length * 5);
|
||||
break;
|
||||
|
@ -528,7 +571,8 @@ acpi_ex_convert_to_string(union acpi_operand_object * obj_desc,
|
|||
|
||||
new_buf += acpi_ex_convert_to_ascii((u64) obj_desc->
|
||||
buffer.pointer[i],
|
||||
base, new_buf, 1);
|
||||
base, new_buf, 1,
|
||||
leading_zeros);
|
||||
|
||||
/* Each digit is separated by either a comma or space */
|
||||
|
||||
|
|
|
@ -437,6 +437,9 @@ acpi_status acpi_ex_prep_field_value(struct acpi_create_field_info *info)
|
|||
|
||||
if (info->connection_node) {
|
||||
second_desc = info->connection_node->object;
|
||||
if (second_desc == NULL) {
|
||||
break;
|
||||
}
|
||||
if (!(second_desc->common.flags & AOPOBJ_DATA_VALID)) {
|
||||
status =
|
||||
acpi_ds_get_buffer_arguments(second_desc);
|
||||
|
|
|
@ -133,14 +133,15 @@ acpi_status acpi_ex_system_do_stall(u32 how_long_us)
|
|||
* (ACPI specifies 100 usec as max, but this gives some slack in
|
||||
* order to support existing BIOSs)
|
||||
*/
|
||||
ACPI_ERROR((AE_INFO,
|
||||
"Time parameter is too large (%u)", how_long_us));
|
||||
ACPI_ERROR_ONCE((AE_INFO,
|
||||
"Time parameter is too large (%u)",
|
||||
how_long_us));
|
||||
status = AE_AML_OPERAND_VALUE;
|
||||
} else {
|
||||
if (how_long_us > 100) {
|
||||
ACPI_WARNING((AE_INFO,
|
||||
"Time parameter %u us > 100 us violating ACPI spec, please fix the firmware.",
|
||||
how_long_us));
|
||||
ACPI_WARNING_ONCE((AE_INFO,
|
||||
"Time parameter %u us > 100 us violating ACPI spec, please fix the firmware.",
|
||||
how_long_us));
|
||||
}
|
||||
acpi_os_stall(how_long_us);
|
||||
}
|
||||
|
|
|
@ -16,20 +16,11 @@
|
|||
ACPI_MODULE_NAME("hwxfsleep")
|
||||
|
||||
/* Local prototypes */
|
||||
#if (!ACPI_REDUCED_HARDWARE)
|
||||
static acpi_status
|
||||
acpi_hw_set_firmware_waking_vector(struct acpi_table_facs *facs,
|
||||
acpi_physical_address physical_address,
|
||||
acpi_physical_address physical_address64);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* These functions are removed for the ACPI_REDUCED_HARDWARE case:
|
||||
* acpi_set_firmware_waking_vector
|
||||
* acpi_enter_sleep_state_s4bios
|
||||
*/
|
||||
|
||||
#if (!ACPI_REDUCED_HARDWARE)
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_hw_set_firmware_waking_vector
|
||||
|
@ -115,6 +106,12 @@ acpi_set_firmware_waking_vector(acpi_physical_address physical_address,
|
|||
|
||||
ACPI_EXPORT_SYMBOL(acpi_set_firmware_waking_vector)
|
||||
|
||||
/*
|
||||
* These functions are removed for the ACPI_REDUCED_HARDWARE case:
|
||||
* acpi_enter_sleep_state_s4bios
|
||||
*/
|
||||
|
||||
#if (!ACPI_REDUCED_HARDWARE)
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_enter_sleep_state_s4bios
|
||||
|
|
|
@ -25,6 +25,8 @@ acpi_ps_get_next_package_length(struct acpi_parse_state *parser_state);
|
|||
static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state
|
||||
*parser_state);
|
||||
|
||||
static void acpi_ps_free_field_list(union acpi_parse_object *start);
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_get_next_package_length
|
||||
|
@ -683,6 +685,39 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state
|
|||
return_PTR(field);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_free_field_list
|
||||
*
|
||||
* PARAMETERS: start - First Op in field list
|
||||
*
|
||||
* RETURN: None.
|
||||
*
|
||||
* DESCRIPTION: Free all Op objects inside a field list.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
static void acpi_ps_free_field_list(union acpi_parse_object *start)
|
||||
{
|
||||
union acpi_parse_object *cur = start;
|
||||
union acpi_parse_object *next;
|
||||
union acpi_parse_object *arg;
|
||||
|
||||
while (cur) {
|
||||
next = cur->common.next;
|
||||
|
||||
/* AML_INT_CONNECTION_OP can have a single argument */
|
||||
|
||||
arg = acpi_ps_get_arg(cur, 0);
|
||||
if (arg) {
|
||||
acpi_ps_free_op(arg);
|
||||
}
|
||||
|
||||
acpi_ps_free_op(cur);
|
||||
cur = next;
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ps_get_next_arg
|
||||
|
@ -751,6 +786,10 @@ acpi_ps_get_next_arg(struct acpi_walk_state *walk_state,
|
|||
while (parser_state->aml < parser_state->pkg_end) {
|
||||
field = acpi_ps_get_next_field(parser_state);
|
||||
if (!field) {
|
||||
if (arg) {
|
||||
acpi_ps_free_field_list(arg);
|
||||
}
|
||||
|
||||
return_ACPI_STATUS(AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
|
@ -820,6 +859,10 @@ acpi_ps_get_next_arg(struct acpi_walk_state *walk_state,
|
|||
acpi_ps_get_next_namepath(walk_state, parser_state,
|
||||
arg,
|
||||
ACPI_NOT_METHOD_CALL);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
acpi_ps_free_op(arg);
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
} else {
|
||||
/* Single complex argument, nothing returned */
|
||||
|
||||
|
@ -854,6 +897,10 @@ acpi_ps_get_next_arg(struct acpi_walk_state *walk_state,
|
|||
acpi_ps_get_next_namepath(walk_state, parser_state,
|
||||
arg,
|
||||
ACPI_POSSIBLE_METHOD_CALL);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
acpi_ps_free_op(arg);
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
if (arg->common.aml_opcode == AML_INT_METHODCALL_OP) {
|
||||
|
||||
|
|
|
@ -282,7 +282,8 @@ acpi_rs_get_address_common(struct acpi_resource *resource,
|
|||
|
||||
/* Validate the Resource Type */
|
||||
|
||||
if ((address.resource_type > 2) && (address.resource_type < 0xC0)) {
|
||||
if ((address.resource_type > 2) &&
|
||||
(address.resource_type < 0xC0) && (address.resource_type != 0x0A)) {
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
|
|
|
@ -48,6 +48,7 @@ static void acpi_rs_dump_address_common(union acpi_resource_data *resource);
|
|||
static void
|
||||
acpi_rs_dump_descriptor(void *resource, struct acpi_rsdump_info *table);
|
||||
|
||||
#ifdef ACPI_DEBUGGER
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_rs_dump_resource_list
|
||||
|
@ -160,6 +161,7 @@ void acpi_rs_dump_irq_list(u8 *route_table)
|
|||
prt_element, prt_element->length);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
|
|
|
@ -18,7 +18,6 @@ ACPI_MODULE_NAME("tbutils")
|
|||
static acpi_physical_address
|
||||
acpi_tb_get_root_table_entry(u8 *table_entry, u32 table_entry_size);
|
||||
|
||||
#if (!ACPI_REDUCED_HARDWARE)
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_tb_initialize_facs
|
||||
|
@ -56,7 +55,6 @@ acpi_status acpi_tb_initialize_facs(void)
|
|||
|
||||
return (AE_OK);
|
||||
}
|
||||
#endif /* !ACPI_REDUCED_HARDWARE */
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
|
|
|
@ -140,7 +140,7 @@ static void acpi_ut_delete_internal_obj(union acpi_operand_object *object)
|
|||
(void)
|
||||
acpi_os_delete_semaphore
|
||||
(acpi_gbl_global_lock_semaphore);
|
||||
acpi_gbl_global_lock_semaphore = NULL;
|
||||
acpi_gbl_global_lock_semaphore = ACPI_SEMAPHORE_NULL;
|
||||
|
||||
acpi_os_delete_mutex(object->mutex.os_mutex);
|
||||
acpi_gbl_global_lock_mutex = NULL;
|
||||
|
@ -157,7 +157,7 @@ static void acpi_ut_delete_internal_obj(union acpi_operand_object *object)
|
|||
object, object->event.os_semaphore));
|
||||
|
||||
(void)acpi_os_delete_semaphore(object->event.os_semaphore);
|
||||
object->event.os_semaphore = NULL;
|
||||
object->event.os_semaphore = ACPI_SEMAPHORE_NULL;
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_METHOD:
|
||||
|
|
|
@ -154,7 +154,7 @@ acpi_status acpi_ut_init_globals(void)
|
|||
|
||||
/* Global Lock support */
|
||||
|
||||
acpi_gbl_global_lock_semaphore = NULL;
|
||||
acpi_gbl_global_lock_semaphore = ACPI_SEMAPHORE_NULL;
|
||||
acpi_gbl_global_lock_mutex = NULL;
|
||||
acpi_gbl_global_lock_acquired = FALSE;
|
||||
acpi_gbl_global_lock_handle = 0;
|
||||
|
|
|
@ -75,6 +75,7 @@ static struct acpi_interface_info acpi_default_supported_interfaces[] = {
|
|||
{"Windows 2019", NULL, 0, ACPI_OSI_WIN_10_19H1}, /* Windows 10 version 1903 - Added 08/2019 */
|
||||
{"Windows 2020", NULL, 0, ACPI_OSI_WIN_10_20H1}, /* Windows 10 version 2004 - Added 08/2021 */
|
||||
{"Windows 2021", NULL, 0, ACPI_OSI_WIN_11}, /* Windows 11 - Added 01/2022 */
|
||||
{"Windows 2022", NULL, 0, ACPI_OSI_WIN_11_22H2}, /* Windows 11 version 22H2 - Added 04/2024 */
|
||||
|
||||
/* Feature Group Strings */
|
||||
|
||||
|
|
|
@ -120,6 +120,18 @@ acpi_status ACPI_INIT_FUNCTION acpi_enable_subsystem(u32 flags)
|
|||
*/
|
||||
acpi_gbl_early_initialization = FALSE;
|
||||
|
||||
/*
|
||||
* Obtain a permanent mapping for the FACS. This is required for the
|
||||
* Global Lock and the Firmware Waking Vector
|
||||
*/
|
||||
if (!(flags & ACPI_NO_FACS_INIT)) {
|
||||
status = acpi_tb_initialize_facs();
|
||||
if (ACPI_FAILURE(status)) {
|
||||
ACPI_WARNING((AE_INFO, "Could not map the FACS table"));
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
}
|
||||
|
||||
#if (!ACPI_REDUCED_HARDWARE)
|
||||
|
||||
/* Enable ACPI mode */
|
||||
|
@ -137,18 +149,6 @@ acpi_status ACPI_INIT_FUNCTION acpi_enable_subsystem(u32 flags)
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Obtain a permanent mapping for the FACS. This is required for the
|
||||
* Global Lock and the Firmware Waking Vector
|
||||
*/
|
||||
if (!(flags & ACPI_NO_FACS_INIT)) {
|
||||
status = acpi_tb_initialize_facs();
|
||||
if (ACPI_FAILURE(status)) {
|
||||
ACPI_WARNING((AE_INFO, "Could not map the FACS table"));
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize ACPI Event handling (Fixed and General Purpose)
|
||||
*
|
||||
|
|
|
@ -67,7 +67,6 @@
|
|||
* General Purpose Events (GPEs)
|
||||
* Global Lock
|
||||
* ACPI PM timer
|
||||
* FACS table (Waking vectors and Global Lock)
|
||||
*/
|
||||
#ifndef ACPI_REDUCED_HARDWARE
|
||||
#define ACPI_REDUCED_HARDWARE FALSE
|
||||
|
|
|
@ -193,6 +193,7 @@
|
|||
*/
|
||||
#ifndef ACPI_NO_ERROR_MESSAGES
|
||||
#define AE_INFO _acpi_module_name, __LINE__
|
||||
#define ACPI_ONCE(_fn, _plist) { static char _done; if (!_done) { _done = 1; _fn _plist; } }
|
||||
|
||||
/*
|
||||
* Error reporting. Callers module and line number are inserted by AE_INFO,
|
||||
|
@ -201,8 +202,10 @@
|
|||
*/
|
||||
#define ACPI_INFO(plist) acpi_info plist
|
||||
#define ACPI_WARNING(plist) acpi_warning plist
|
||||
#define ACPI_WARNING_ONCE(plist) ACPI_ONCE(acpi_warning, plist)
|
||||
#define ACPI_EXCEPTION(plist) acpi_exception plist
|
||||
#define ACPI_ERROR(plist) acpi_error plist
|
||||
#define ACPI_ERROR_ONCE(plist) ACPI_ONCE(acpi_error, plist)
|
||||
#define ACPI_BIOS_WARNING(plist) acpi_bios_warning plist
|
||||
#define ACPI_BIOS_EXCEPTION(plist) acpi_bios_exception plist
|
||||
#define ACPI_BIOS_ERROR(plist) acpi_bios_error plist
|
||||
|
@ -214,8 +217,10 @@
|
|||
|
||||
#define ACPI_INFO(plist)
|
||||
#define ACPI_WARNING(plist)
|
||||
#define ACPI_WARNING_ONCE(plist)
|
||||
#define ACPI_EXCEPTION(plist)
|
||||
#define ACPI_ERROR(plist)
|
||||
#define ACPI_ERROR_ONCE(plist)
|
||||
#define ACPI_BIOS_WARNING(plist)
|
||||
#define ACPI_BIOS_EXCEPTION(plist)
|
||||
#define ACPI_BIOS_ERROR(plist)
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
/* Current ACPICA subsystem version in YYYYMMDD format */
|
||||
|
||||
#define ACPI_CA_VERSION 0x20240322
|
||||
#define ACPI_CA_VERSION 0x20240827
|
||||
|
||||
#include <acpi/acconfig.h>
|
||||
#include <acpi/actypes.h>
|
||||
|
@ -878,10 +878,10 @@ ACPI_EXTERNAL_RETURN_STATUS(acpi_status
|
|||
acpi_leave_sleep_state_prep(u8 sleep_state))
|
||||
ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_leave_sleep_state(u8 sleep_state))
|
||||
|
||||
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
|
||||
acpi_set_firmware_waking_vector
|
||||
(acpi_physical_address physical_address,
|
||||
acpi_physical_address physical_address64))
|
||||
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
|
||||
acpi_set_firmware_waking_vector
|
||||
(acpi_physical_address physical_address,
|
||||
acpi_physical_address physical_address64))
|
||||
/*
|
||||
* ACPI Timer interfaces
|
||||
*/
|
||||
|
|
|
@ -567,6 +567,10 @@ struct acpi_cedt_cxims {
|
|||
u64 xormap_list[];
|
||||
};
|
||||
|
||||
struct acpi_cedt_cxims_target_element {
|
||||
u64 xormap;
|
||||
};
|
||||
|
||||
/* 3: CXL RCEC Downstream Port Association Structure */
|
||||
|
||||
struct acpi_cedt_rdpas {
|
||||
|
@ -751,6 +755,7 @@ struct acpi_dbg2_device {
|
|||
#define ACPI_DBG2_16550_WITH_GAS 0x0012
|
||||
#define ACPI_DBG2_SDM845_7_372MHZ 0x0013
|
||||
#define ACPI_DBG2_INTEL_LPSS 0x0014
|
||||
#define ACPI_DBG2_RISCV_SBI_CON 0x0015
|
||||
|
||||
#define ACPI_DBG2_1394_STANDARD 0x0000
|
||||
|
||||
|
@ -1791,7 +1796,7 @@ struct acpi_hmat_cache {
|
|||
u32 reserved1;
|
||||
u64 cache_size;
|
||||
u32 cache_attributes;
|
||||
u16 reserved2;
|
||||
u16 address_mode;
|
||||
u16 number_of_SMBIOShandles;
|
||||
};
|
||||
|
||||
|
@ -1803,6 +1808,9 @@ struct acpi_hmat_cache {
|
|||
#define ACPI_HMAT_WRITE_POLICY (0x0000F000)
|
||||
#define ACPI_HMAT_CACHE_LINE_SIZE (0xFFFF0000)
|
||||
|
||||
#define ACPI_HMAT_CACHE_MODE_UNKNOWN (0)
|
||||
#define ACPI_HMAT_CACHE_MODE_EXTENDED_LINEAR (1)
|
||||
|
||||
/* Values for cache associativity flag */
|
||||
|
||||
#define ACPI_HMAT_CA_NONE (0)
|
||||
|
|
|
@ -1607,7 +1607,7 @@ struct acpi_mpam_msc_node {
|
|||
u32 max_nrdy_usec;
|
||||
u64 hardware_id_linked_device;
|
||||
u32 instance_id_linked_device;
|
||||
u32 num_resouce_nodes;
|
||||
u32 num_resource_nodes;
|
||||
};
|
||||
|
||||
struct acpi_table_mpam {
|
||||
|
|
|
@ -92,10 +92,10 @@ struct acpi_table_slit {
|
|||
/*******************************************************************************
|
||||
*
|
||||
* SPCR - Serial Port Console Redirection table
|
||||
* Version 2
|
||||
* Version 4
|
||||
*
|
||||
* Conforms to "Serial Port Console Redirection Table",
|
||||
* Version 1.03, August 10, 2015
|
||||
* Version 1.10, Jan 5, 2023
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
@ -112,7 +112,7 @@ struct acpi_table_spcr {
|
|||
u8 stop_bits;
|
||||
u8 flow_control;
|
||||
u8 terminal_type;
|
||||
u8 reserved1;
|
||||
u8 language;
|
||||
u16 pci_device_id;
|
||||
u16 pci_vendor_id;
|
||||
u8 pci_bus;
|
||||
|
@ -120,7 +120,11 @@ struct acpi_table_spcr {
|
|||
u8 pci_function;
|
||||
u32 pci_flags;
|
||||
u8 pci_segment;
|
||||
u32 reserved2;
|
||||
u32 uart_clk_freq;
|
||||
u32 precise_baudrate;
|
||||
u16 name_space_string_length;
|
||||
u16 name_space_string_offset;
|
||||
char name_space_string[];
|
||||
};
|
||||
|
||||
/* Masks for pci_flags field above */
|
||||
|
|
|
@ -1311,6 +1311,7 @@ typedef enum {
|
|||
#define ACPI_OSI_WIN_10_19H1 0x14
|
||||
#define ACPI_OSI_WIN_10_20H1 0x15
|
||||
#define ACPI_OSI_WIN_11 0x16
|
||||
#define ACPI_OSI_WIN_11_22H2 0x17
|
||||
|
||||
/* Definitions of getopt */
|
||||
|
||||
|
|
|
@ -252,6 +252,12 @@
|
|||
#define ACPI_RELEASE_GLOBAL_LOCK(Glptr, pending) pending = 0
|
||||
#endif
|
||||
|
||||
/* NULL/invalid value to use for destroyed or not-yet-created semaphores. */
|
||||
|
||||
#ifndef ACPI_SEMAPHORE_NULL
|
||||
#define ACPI_SEMAPHORE_NULL NULL
|
||||
#endif
|
||||
|
||||
/* Flush CPU cache - used when going to sleep. Wbinvd or similar. */
|
||||
|
||||
#ifndef ACPI_FLUSH_CPU_CACHE
|
||||
|
|
Loading…
Reference in a new issue