Merge branch 'acpica'

* acpica:
  ACPICA: Update version to 20190215
  ACPI/ACPICA: Trivial: fix spelling mistakes and fix whitespace formatting
  ACPICA: ACPI 6.3: add GTDT Revision 3 support
  ACPICA: ACPI 6.3: HMAT updates
  ACPICA: ACPI 6.3: PPTT add additional fields in Processor Structure Flags
  ACPICA: ACPI 6.3: add Error Disconnect Recover Notification value
  ACPICA: ACPI 6.3: MADT: add support for statistical profiling in GICC
  ACPICA: ACPI 6.3: add PCC operation region support for AML interpreter
  ACPICA: ACPI 6.3: SRAT: add Generic Affinity Structure subtable
  ACPICA: ACPI 6.3: Add Trigger order to PCC Identifier structure in PDTT
  ACPICA: ACPI 6.3: Adding predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG
  ACPICA: Update/clarify messages for control method failures
  ACPICA: Debugger: Fix possible fault with the "test objects" command
  ACPICA: Interpreter: Emit warning for creation of a zero-length op region
  ACPICA: Remove legacy module-level code support
  ACPICA: Get rid of acpi_sleep_dispatch()
  ACPICA: Update version to 20190108
  ACPICA: All acpica: Update copyrights to 2019
  ACPICA: acpiexec: Add option to dump extra info for memory leaks
  ACPICA: Convert more ACPI errors to firmware errors
This commit is contained in:
Rafael J. Wysocki 2019-03-04 11:15:30 +01:00
commit 7db52b5ace
191 changed files with 627 additions and 725 deletions

View file

@ -3,7 +3,7 @@
*
* Module Name: acapps - common include for ACPI applications/tools
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -17,7 +17,7 @@
/* Common info for tool signons */
#define ACPICA_NAME "Intel ACPI Component Architecture"
#define ACPICA_COPYRIGHT "Copyright (c) 2000 - 2018 Intel Corporation"
#define ACPICA_COPYRIGHT "Copyright (c) 2000 - 2019 Intel Corporation"
#if ACPI_MACHINE_WIDTH == 64
#define ACPI_WIDTH " (64-bit version)"

View file

@ -3,7 +3,7 @@
*
* Name: accommon.h - Common include files for generation of ACPICA source
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: acapps - common include for ACPI applications/tools
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Name: acdebug.h - ACPI/AML debugger
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -16,7 +16,8 @@
#include "acdisasm.h"
#endif
#define ACPI_DEBUG_BUFFER_SIZE 0x4000 /* 16K buffer for return objects */
#define ACPI_DEBUG_BUFFER_SIZE 0x4000 /* 16K buffer for return objects */
#define ACPI_DEBUG_LENGTH_FORMAT " (%.4X bits, %.3X bytes)"
struct acpi_db_command_info {
const char *name; /* Command Name */

View file

@ -3,7 +3,7 @@
*
* Name: acdispat.h - dispatcher (parser to interpreter interface)
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Name: acevents.h - Event subcomponent prototypes and defines
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Name: acglobal.h - Declarations for global variables
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -164,6 +164,7 @@ ACPI_GLOBAL(struct acpi_memory_list *, acpi_gbl_global_list);
ACPI_GLOBAL(struct acpi_memory_list *, acpi_gbl_ns_node_list);
ACPI_GLOBAL(u8, acpi_gbl_display_final_mem_stats);
ACPI_GLOBAL(u8, acpi_gbl_disable_mem_tracking);
ACPI_GLOBAL(u8, acpi_gbl_verbose_leak_dump);
#endif
/*****************************************************************************

View file

@ -3,7 +3,7 @@
*
* Name: achware.h -- hardware specific interfaces
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Name: acinterp.h - Interpreter subcomponent prototypes and defines
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Name: aclocal.h - Internal data types used across the ACPI subsystem
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -802,7 +802,7 @@ struct acpi_comment_addr_node {
/*
* File node - used for "Include" operator file stack and
* depdendency tree for the -ca option
* dependency tree for the -ca option
*/
struct acpi_file_node {
void *file;

View file

@ -3,7 +3,7 @@
*
* Name: acmacros.h - C macros for the entire subsystem.
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -462,7 +462,7 @@
#define ACPI_IS_OCTAL_DIGIT(d) (((char)(d) >= '0') && ((char)(d) <= '7'))
/*
* Macors used for the ASL-/ASL+ converter utility
* Macros used for the ASL-/ASL+ converter utility
*/
#ifdef ACPI_ASL_COMPILER

View file

@ -3,7 +3,7 @@
*
* Name: acnamesp.h - Namespace subcomponent prototypes and defines
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Name: acobject.h - Definition of union acpi_operand_object (Internal object only)
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -239,6 +239,7 @@ struct acpi_object_region_field {
union acpi_operand_object *region_obj; /* Containing op_region object */
u8 *resource_buffer; /* resource_template for serial regions/fields */
u16 pin_number_index; /* Index relative to previous Connection/Template */
u8 *internal_pcc_buffer; /* Internal buffer for fields associated with PCC */
};
struct acpi_object_bank_field {

View file

@ -3,7 +3,7 @@
*
* Name: acopcode.h - AML opcode information for the AML parser and interpreter
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: acparser.h - AML Parser subcomponent prototypes and defines
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Name: acpredef - Information table for ACPI predefined methods and objects
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -631,6 +631,21 @@ const union acpi_predefined_info acpi_gbl_predefined_methods[] = {
{{"_MTL", METHOD_0ARGS, /* ACPI 6.0 */
METHOD_RETURNS(ACPI_RTYPE_INTEGER)}},
{{"_NBS", METHOD_0ARGS, /* ACPI 6.3 */
METHOD_RETURNS(ACPI_RTYPE_BUFFER)}},
{{"_NCH", METHOD_0ARGS, /* ACPI 6.3 */
METHOD_RETURNS(ACPI_RTYPE_BUFFER)}},
{{"_NIC", METHOD_0ARGS, /* ACPI 6.3 */
METHOD_RETURNS(ACPI_RTYPE_BUFFER)}},
{{"_NIG", METHOD_1ARGS(ACPI_TYPE_BUFFER), /* ACPI 6.3 */
METHOD_RETURNS(ACPI_RTYPE_BUFFER)}},
{{"_NIH", METHOD_0ARGS, /* ACPI 6.3 */
METHOD_RETURNS(ACPI_RTYPE_BUFFER)}},
{{"_NTT", METHOD_0ARGS,
METHOD_RETURNS(ACPI_RTYPE_INTEGER)}},

View file

@ -3,7 +3,7 @@
*
* Name: acresrc.h - Resource Manager function prototypes
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Name: acstruct.h - Internal structs
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Name: actables.h - ACPI table management
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Name: acutils.h -- prototypes for the common (subsystem-wide) procedures
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -5,7 +5,7 @@
* Declarations and definitions contained herein are derived
* directly from the ACPI specification.
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: amlresrc.h - AML resource descriptors
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -237,7 +237,7 @@ void acpi_db_decode_and_display_object(char *target, char *output_type)
default:
/* Is not a recognizeable object */
/* Is not a recognizable object */
acpi_os_printf
("Not a known ACPI internal object, descriptor type %2.2X\n",
@ -647,7 +647,7 @@ void acpi_db_display_object_type(char *object_arg)
*
* DESCRIPTION: Display the result of an AML opcode
*
* Note: Curently only displays the result object if we are single stepping.
* Note: Currently only displays the result object if we are single stepping.
* However, this output may be useful in other contexts and could be enabled
* to do so if needed.
*

View file

@ -160,12 +160,12 @@ acpi_db_execute_method(struct acpi_db_method_info *info,
}
ACPI_EXCEPTION((AE_INFO, status,
"while executing %s from debugger",
"while executing %s from AML Debugger",
info->pathname));
if (status == AE_BUFFER_OVERFLOW) {
ACPI_ERROR((AE_INFO,
"Possible overflow of internal debugger "
"Possible buffer overflow within AML Debugger "
"buffer (size 0x%X needed 0x%X)",
ACPI_DEBUG_BUFFER_SIZE,
(u32)return_obj->length));

View file

@ -3,7 +3,7 @@
*
* Module Name: dbhistry - debugger HISTORY command
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -904,7 +904,7 @@ acpi_db_bus_walk(acpi_handle obj_handle,
*
* RETURN: None
*
* DESCRIPTION: Display info about system busses.
* DESCRIPTION: Display info about system buses.
*
******************************************************************************/

View file

@ -243,7 +243,7 @@ acpi_db_display_internal_object(union acpi_operand_object *obj_desc,
acpi_os_printf("[%s] ",
acpi_ut_get_reference_name(obj_desc));
/* Decode the refererence */
/* Decode the reference */
switch (obj_desc->reference.class) {
case ACPI_REFCLASS_LOCAL:

View file

@ -10,6 +10,7 @@
#include "acdebug.h"
#include "acnamesp.h"
#include "acpredef.h"
#include "acinterp.h"
#define _COMPONENT ACPI_CA_DEBUGGER
ACPI_MODULE_NAME("dbtest")
@ -32,6 +33,9 @@ acpi_db_test_string_type(struct acpi_namespace_node *node, u32 byte_length);
static acpi_status acpi_db_test_package_type(struct acpi_namespace_node *node);
static acpi_status
acpi_db_test_field_unit_type(union acpi_operand_object *obj_desc);
static acpi_status
acpi_db_read_from_object(struct acpi_namespace_node *node,
acpi_object_type expected_type,
@ -74,7 +78,7 @@ static struct acpi_db_argument_info acpi_db_test_types[] = {
static acpi_handle read_handle = NULL;
static acpi_handle write_handle = NULL;
/* ASL Definitions of the debugger read/write control methods */
/* ASL Definitions of the debugger read/write control methods. AML below. */
#if 0
definition_block("ssdt.aml", "SSDT", 2, "Intel", "DEBUG", 0x00000001)
@ -227,10 +231,8 @@ static void acpi_db_test_all_objects(void)
* RETURN: Status
*
* DESCRIPTION: Test one namespace object. Supported types are Integer,
* String, Buffer, buffer_field, and field_unit. All other object
* types are simply ignored.
*
* Note: Support for Packages is not implemented.
* String, Buffer, Package, buffer_field, and field_unit.
* All other object types are simply ignored.
*
******************************************************************************/
@ -240,7 +242,6 @@ acpi_db_test_one_object(acpi_handle obj_handle,
{
struct acpi_namespace_node *node;
union acpi_operand_object *obj_desc;
union acpi_operand_object *region_obj;
acpi_object_type local_type;
u32 bit_length = 0;
u32 byte_length = 0;
@ -281,18 +282,21 @@ acpi_db_test_one_object(acpi_handle obj_handle,
break;
case ACPI_TYPE_FIELD_UNIT:
case ACPI_TYPE_BUFFER_FIELD:
case ACPI_TYPE_LOCAL_REGION_FIELD:
case ACPI_TYPE_LOCAL_INDEX_FIELD:
case ACPI_TYPE_LOCAL_BANK_FIELD:
local_type = ACPI_TYPE_FIELD_UNIT;
break;
case ACPI_TYPE_BUFFER_FIELD:
/*
* The returned object will be a Buffer if the field length
* is larger than the size of an Integer (32 or 64 bits
* depending on the DSDT version).
*/
local_type = ACPI_TYPE_INTEGER;
if (obj_desc) {
/*
* Returned object will be a Buffer if the field length
* is larger than the size of an Integer (32 or 64 bits
* depending on the DSDT version).
*/
bit_length = obj_desc->common_field.bit_length;
byte_length = ACPI_ROUND_BITS_UP_TO_BYTES(bit_length);
if (bit_length > acpi_gbl_integer_bit_width) {
@ -303,7 +307,7 @@ acpi_db_test_one_object(acpi_handle obj_handle,
default:
/* Ignore all other types */
/* Ignore all non-data types - Methods, Devices, Scopes, etc. */
return (AE_OK);
}
@ -314,40 +318,10 @@ acpi_db_test_one_object(acpi_handle obj_handle,
acpi_ut_get_type_name(node->type), node->name.ascii);
if (!obj_desc) {
acpi_os_printf(" Ignoring, no attached object\n");
acpi_os_printf(" No attached sub-object, ignoring\n");
return (AE_OK);
}
/*
* Check for unsupported region types. Note: acpi_exec simulates
* access to system_memory, system_IO, PCI_Config, and EC.
*/
switch (node->type) {
case ACPI_TYPE_LOCAL_REGION_FIELD:
region_obj = obj_desc->field.region_obj;
switch (region_obj->region.space_id) {
case ACPI_ADR_SPACE_SYSTEM_MEMORY:
case ACPI_ADR_SPACE_SYSTEM_IO:
case ACPI_ADR_SPACE_PCI_CONFIG:
break;
default:
acpi_os_printf
(" %s space is not supported in this command [%4.4s]\n",
acpi_ut_get_region_name(region_obj->region.
space_id),
region_obj->region.node->name.ascii);
return (AE_OK);
}
break;
default:
break;
}
/* At this point, we have resolved the object to one of the major types */
switch (local_type) {
@ -371,6 +345,11 @@ acpi_db_test_one_object(acpi_handle obj_handle,
status = acpi_db_test_package_type(node);
break;
case ACPI_TYPE_FIELD_UNIT:
status = acpi_db_test_field_unit_type(obj_desc);
break;
default:
acpi_os_printf(" Ignoring, type not implemented (%2.2X)",
@ -382,24 +361,8 @@ acpi_db_test_one_object(acpi_handle obj_handle,
if (ACPI_FAILURE(status)) {
status = AE_OK;
goto exit;
}
switch (node->type) {
case ACPI_TYPE_LOCAL_REGION_FIELD:
region_obj = obj_desc->field.region_obj;
acpi_os_printf(" (%s)",
acpi_ut_get_region_name(region_obj->region.
space_id));
break;
default:
break;
}
exit:
acpi_os_printf("\n");
return (status);
}
@ -444,7 +407,7 @@ acpi_db_test_integer_type(struct acpi_namespace_node *node, u32 bit_length)
return (status);
}
acpi_os_printf(" (%4.4X/%3.3X) %8.8X%8.8X",
acpi_os_printf(ACPI_DEBUG_LENGTH_FORMAT " %8.8X%8.8X",
bit_length, ACPI_ROUND_BITS_UP_TO_BYTES(bit_length),
ACPI_FORMAT_UINT64(temp1->integer.value));
@ -558,8 +521,9 @@ acpi_db_test_buffer_type(struct acpi_namespace_node *node, u32 bit_length)
/* Emit a few bytes of the buffer */
acpi_os_printf(" (%4.4X/%3.3X)", bit_length, temp1->buffer.length);
for (i = 0; ((i < 4) && (i < byte_length)); i++) {
acpi_os_printf(ACPI_DEBUG_LENGTH_FORMAT, bit_length,
temp1->buffer.length);
for (i = 0; ((i < 8) && (i < byte_length)); i++) {
acpi_os_printf(" %2.2X", temp1->buffer.pointer[i]);
}
acpi_os_printf("... ");
@ -665,8 +629,9 @@ acpi_db_test_string_type(struct acpi_namespace_node *node, u32 byte_length)
return (status);
}
acpi_os_printf(" (%4.4X/%3.3X) \"%s\"", (temp1->string.length * 8),
temp1->string.length, temp1->string.pointer);
acpi_os_printf(ACPI_DEBUG_LENGTH_FORMAT " \"%s\"",
(temp1->string.length * 8), temp1->string.length,
temp1->string.pointer);
/* Write a new value */
@ -750,11 +715,78 @@ static acpi_status acpi_db_test_package_type(struct acpi_namespace_node *node)
return (status);
}
acpi_os_printf(" %8.8X Elements", temp1->package.count);
acpi_os_printf(" %.2X Elements", temp1->package.count);
acpi_os_free(temp1);
return (status);
}
/*******************************************************************************
*
* FUNCTION: acpi_db_test_field_unit_type
*
* PARAMETERS: obj_desc - A field unit object
*
* RETURN: Status
*
* DESCRIPTION: Test read/write on a named field unit.
*
******************************************************************************/
static acpi_status
acpi_db_test_field_unit_type(union acpi_operand_object *obj_desc)
{
union acpi_operand_object *region_obj;
u32 bit_length = 0;
u32 byte_length = 0;
acpi_status status = AE_OK;
union acpi_operand_object *ret_buffer_desc;
/* Supported spaces are memory/io/pci_config */
region_obj = obj_desc->field.region_obj;
switch (region_obj->region.space_id) {
case ACPI_ADR_SPACE_SYSTEM_MEMORY:
case ACPI_ADR_SPACE_SYSTEM_IO:
case ACPI_ADR_SPACE_PCI_CONFIG:
/* Need the interpreter to execute */
acpi_ut_acquire_mutex(ACPI_MTX_INTERPRETER);
acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
/* Exercise read-then-write */
status =
acpi_ex_read_data_from_field(NULL, obj_desc,
&ret_buffer_desc);
if (status == AE_OK) {
acpi_ex_write_data_to_field(ret_buffer_desc, obj_desc,
NULL);
acpi_ut_remove_reference(ret_buffer_desc);
}
acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
acpi_ut_release_mutex(ACPI_MTX_INTERPRETER);
bit_length = obj_desc->common_field.bit_length;
byte_length = ACPI_ROUND_BITS_UP_TO_BYTES(bit_length);
acpi_os_printf(ACPI_DEBUG_LENGTH_FORMAT " [%s]", bit_length,
byte_length,
acpi_ut_get_region_name(region_obj->region.
space_id));
return (status);
default:
acpi_os_printf
(" %s address space is not supported in this command [%4.4s]",
acpi_ut_get_region_name(region_obj->region.space_id),
region_obj->region.node->name.ascii);
return (AE_OK);
}
}
/*******************************************************************************
*
* FUNCTION: acpi_db_read_from_object

View file

@ -4,7 +4,7 @@
* Module Name: dsargs - Support for execution of dynamic arguments for static
* objects (regions, fields, buffer fields, etc.)
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -4,7 +4,7 @@
* Module Name: dscontrol - Support for execution control opcodes -
* if/else/while/return
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: dsdebug - Parser/Interpreter interface - debugging
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: dsfield - Dispatcher field routines
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -518,6 +518,13 @@ acpi_ds_create_field(union acpi_parse_object *op,
info.region_node = region_node;
status = acpi_ds_get_field_names(&info, walk_state, arg->common.next);
if (info.region_node->object->region.space_id ==
ACPI_ADR_SPACE_PLATFORM_COMM
&& !(region_node->object->field.internal_pcc_buffer =
ACPI_ALLOCATE_ZEROED(info.region_node->object->region.
length))) {
return_ACPI_STATUS(AE_NO_MEMORY);
}
return_ACPI_STATUS(status);
}

View file

@ -3,7 +3,7 @@
*
* Module Name: dsinit - Object initialization namespace walk
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: dsmethod - Parser/Interpreter interface - control method parsing
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: dsobject - Dispatcher object management routines
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: dsopcode - Dispatcher support for regions and fields
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -130,8 +130,8 @@ acpi_ds_init_buffer_field(u16 aml_opcode,
/* Must have a valid (>0) bit count */
if (bit_count == 0) {
ACPI_ERROR((AE_INFO,
"Attempt to CreateField of length zero"));
ACPI_BIOS_ERROR((AE_INFO,
"Attempt to CreateField of length zero"));
status = AE_AML_OPERAND_VALUE;
goto cleanup;
}
@ -194,12 +194,13 @@ acpi_ds_init_buffer_field(u16 aml_opcode,
/* Entire field must fit within the current length of the buffer */
if ((bit_offset + bit_count) > (8 * (u32)buffer_desc->buffer.length)) {
ACPI_ERROR((AE_INFO,
"Field [%4.4s] at bit offset/length %u/%u "
"exceeds size of target Buffer (%u bits)",
acpi_ut_get_node_name(result_desc), bit_offset,
bit_count, 8 * (u32)buffer_desc->buffer.length));
status = AE_AML_BUFFER_LIMIT;
ACPI_BIOS_EXCEPTION((AE_INFO, status,
"Field [%4.4s] at bit offset/length %u/%u "
"exceeds size of target Buffer (%u bits)",
acpi_ut_get_node_name(result_desc),
bit_offset, bit_count,
8 * (u32)buffer_desc->buffer.length));
goto cleanup;
}
@ -355,6 +356,7 @@ acpi_ds_eval_region_operands(struct acpi_walk_state *walk_state,
union acpi_operand_object *operand_desc;
struct acpi_namespace_node *node;
union acpi_parse_object *next_op;
acpi_adr_space_type space_id;
ACPI_FUNCTION_TRACE_PTR(ds_eval_region_operands, op);
@ -367,6 +369,7 @@ acpi_ds_eval_region_operands(struct acpi_walk_state *walk_state,
/* next_op points to the op that holds the space_ID */
next_op = op->common.value.arg;
space_id = (acpi_adr_space_type)next_op->common.value.integer;
/* next_op points to address op */
@ -402,6 +405,15 @@ acpi_ds_eval_region_operands(struct acpi_walk_state *walk_state,
obj_desc->region.length = (u32) operand_desc->integer.value;
acpi_ut_remove_reference(operand_desc);
/* A zero-length operation region is unusable. Just warn */
if (!obj_desc->region.length
&& (space_id < ACPI_NUM_PREDEFINED_REGIONS)) {
ACPI_WARNING((AE_INFO,
"Operation Region [%4.4s] has zero length (SpaceId %X)",
node->name.ascii, space_id));
}
/*
* Get the address and save it
* (at top of stack - 1)

View file

@ -3,7 +3,7 @@
*
* Module Name: dspkginit - Completion of deferred package initialization
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -4,7 +4,7 @@
* Module Name: dswexec - Dispatcher method execution callbacks;
* dispatch to interpreter.
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: dswload - Dispatcher first pass namespace load callbacks
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: dswload2 - Dispatcher second pass namespace load callbacks
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -24,7 +24,7 @@ ACPI_MODULE_NAME("dswload2")
* FUNCTION: acpi_ds_load2_begin_op
*
* PARAMETERS: walk_state - Current state of the parse tree walk
* out_op - Wher to return op if a new one is created
* out_op - Where to return op if a new one is created
*
* RETURN: Status
*

View file

@ -3,7 +3,7 @@
*
* Module Name: dswscope - Scope stack manipulation
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: dswstate - Dispatcher parse tree walk management routines
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: evevent - Fixed Event handling and dispatch
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: evglock - Global Lock support
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: evgpe - General Purpose Event handling and dispatch
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -801,7 +801,7 @@ acpi_ev_gpe_dispatch(struct acpi_namespace_node *gpe_device,
dispatch.handler->
context);
/* If requested, clear (if level-triggered) and reenable the GPE */
/* If requested, clear (if level-triggered) and re-enable the GPE */
if (return_value & ACPI_REENABLE_GPE) {
(void)acpi_ev_finish_gpe(gpe_event_info);

View file

@ -3,7 +3,7 @@
*
* Module Name: evgpeblk - GPE block creation and initialization.
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: evgpeinit - System GPE initialization and update
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: evgpeutil - GPE utilities
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: evhandler - Support for Address Space handlers
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: evmisc - Miscellaneous event manager support functions
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: evregion - Operation Region support
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -250,7 +250,7 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
/*
* For handlers other than the default (supplied) handlers, we must
* exit the interpreter because the handler *might* block -- we don't
* know what it will do, so we can't hold the lock on the intepreter.
* know what it will do, so we can't hold the lock on the interpreter.
*/
acpi_ex_exit_interpreter();
}

View file

@ -3,7 +3,7 @@
*
* Module Name: evrgnini- ACPI address_space (op_region) init
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -516,25 +516,6 @@ acpi_status acpi_ev_initialize_region(union acpi_operand_object *region_obj)
handler_obj = obj_desc->common_notify.handler;
break;
case ACPI_TYPE_METHOD:
/*
* If we are executing module level code, the original
* Node's object was replaced by this Method object and we
* saved the handler in the method object.
*
* Note: Only used for the legacy MLC support. Will
* be removed in the future.
*
* See acpi_ns_exec_module_code
*/
if (!acpi_gbl_execute_tables_as_methods &&
obj_desc->method.
info_flags & ACPI_METHOD_MODULE_LEVEL) {
handler_obj =
obj_desc->method.dispatch.handler;
}
break;
default:
/* Ignore other objects */

View file

@ -3,7 +3,7 @@
*
* Module Name: evxface - External interfaces for ACPI events
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: evxfevnt - External Interfaces, ACPI event disable/enable
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: evxfgpe - External Interfaces for General Purpose Events (GPEs)
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -669,9 +669,9 @@ ACPI_EXPORT_SYMBOL(acpi_dispatch_gpe)
*
* RETURN: Status
*
* DESCRIPTION: Clear and conditionally reenable a GPE. This completes the GPE
* DESCRIPTION: Clear and conditionally re-enable a GPE. This completes the GPE
* processing. Intended for use by asynchronous host-installed
* GPE handlers. The GPE is only reenabled if the enable_for_run bit
* GPE handlers. The GPE is only re-enabled if the enable_for_run bit
* is set in the GPE info.
*
******************************************************************************/

View file

@ -4,7 +4,7 @@
* Module Name: evxfregn - External Interfaces, ACPI Operation Regions and
* Address Spaces.
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: exconcat - Concatenate-type AML operators
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: exconfig - Namespace reconfiguration (Load/Unload opcodes)
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: exconvrt - Object conversion routines
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -520,7 +520,7 @@ acpi_ex_convert_to_string(union acpi_operand_object * obj_desc,
for (i = 0; i < obj_desc->buffer.length; i++) {
if (base == 16) {
/* Emit 0x prefix for explict/implicit hex conversion */
/* Emit 0x prefix for explicit/implicit hex conversion */
*new_buf++ = '0';
*new_buf++ = 'x';

View file

@ -3,7 +3,7 @@
*
* Module Name: excreate - Named object creation
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: exdebug - Support for stores to the AML Debug Object
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: exdump - Interpreter debug output routines
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: exfield - AML execution - field_unit read/write
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -41,6 +41,17 @@ const u8 acpi_protocol_lengths[] = {
0xFF /* F - ATTRIB_RAW_PROCESS_BYTES */
};
#define PCC_MASTER_SUBSPACE 3
/*
* The following macros determine a given offset is a COMD field.
* According to the specification, generic subspaces (types 0-2) contains a
* 2-byte COMD field at offset 4 and master subspaces (type 3) contains a 4-byte
* COMD field starting at offset 12.
*/
#define GENERIC_SUBSPACE_COMMAND(a) (4 == a || a == 5)
#define MASTER_SUBSPACE_COMMAND(a) (12 <= a && a <= 15)
/*******************************************************************************
*
* FUNCTION: acpi_ex_get_protocol_buffer_length
@ -177,6 +188,25 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
status = acpi_ex_read_gpio(obj_desc, buffer);
goto exit;
} else if ((obj_desc->common.type == ACPI_TYPE_LOCAL_REGION_FIELD) &&
(obj_desc->field.region_obj->region.space_id ==
ACPI_ADR_SPACE_PLATFORM_COMM)) {
/*
* Reading from a PCC field unit does not require the handler because
* it only requires reading from the internal_pcc_buffer.
*/
ACPI_DEBUG_PRINT((ACPI_DB_BFIELD,
"PCC FieldRead bits %u\n",
obj_desc->field.bit_length));
memcpy(buffer,
obj_desc->field.region_obj->field.internal_pcc_buffer +
obj_desc->field.base_byte_offset,
(acpi_size)ACPI_ROUND_BITS_UP_TO_BYTES(obj_desc->field.
bit_length));
*ret_buffer_desc = buffer_desc;
return AE_OK;
}
ACPI_DEBUG_PRINT((ACPI_DB_BFIELD,
@ -229,6 +259,7 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
{
acpi_status status;
u32 buffer_length;
u32 data_length;
void *buffer;
ACPI_FUNCTION_TRACE_PTR(ex_write_data_to_field, obj_desc);
@ -272,6 +303,44 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
acpi_ex_write_serial_bus(source_desc, obj_desc,
result_desc);
return_ACPI_STATUS(status);
} else if ((obj_desc->common.type == ACPI_TYPE_LOCAL_REGION_FIELD) &&
(obj_desc->field.region_obj->region.space_id ==
ACPI_ADR_SPACE_PLATFORM_COMM)) {
/*
* According to the spec a write to the COMD field will invoke the
* region handler. Otherwise, write to the pcc_internal buffer. This
* implementation will use the offsets specified rather than the name
* of the field. This is considered safer because some firmware tools
* are known to obfiscate named objects.
*/
data_length =
(acpi_size)ACPI_ROUND_BITS_UP_TO_BYTES(obj_desc->field.
bit_length);
memcpy(obj_desc->field.region_obj->field.internal_pcc_buffer +
obj_desc->field.base_byte_offset,
source_desc->buffer.pointer, data_length);
if ((obj_desc->field.region_obj->region.address ==
PCC_MASTER_SUBSPACE
&& MASTER_SUBSPACE_COMMAND(obj_desc->field.
base_byte_offset))
|| GENERIC_SUBSPACE_COMMAND(obj_desc->field.
base_byte_offset)) {
/* Perform the write */
ACPI_DEBUG_PRINT((ACPI_DB_BFIELD,
"PCC COMD field has been written. Invoking PCC handler now.\n"));
status =
acpi_ex_access_region(obj_desc, 0,
(u64 *)obj_desc->field.
region_obj->field.
internal_pcc_buffer,
ACPI_WRITE);
return_ACPI_STATUS(status);
}
return (AE_OK);
}
/* Get a pointer to the data to be written */

View file

@ -3,7 +3,7 @@
*
* Module Name: exfldio - Aml Field I/O
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: exmisc - ACPI AML (p-code) execution - specific opcodes
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: exmutex - ASL Mutex Acquire/Release functions
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: exnames - interpreter/scanner name load/execute
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: exoparg1 - AML execution - opcodes with 1 argument
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: exoparg2 - AML execution - opcodes with 2 arguments
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -390,10 +390,10 @@ acpi_status acpi_ex_opcode_2A_1T_1R(struct acpi_walk_state *walk_state)
/* Failure means that the Index was beyond the end of the object */
if (ACPI_FAILURE(status)) {
ACPI_EXCEPTION((AE_INFO, status,
"Index (0x%X%8.8X) is beyond end of object (length 0x%X)",
ACPI_FORMAT_UINT64(index),
(u32)length));
ACPI_BIOS_EXCEPTION((AE_INFO, status,
"Index (0x%X%8.8X) is beyond end of object (length 0x%X)",
ACPI_FORMAT_UINT64(index),
(u32)length));
goto cleanup;
}

View file

@ -3,7 +3,7 @@
*
* Module Name: exoparg3 - AML execution - opcodes with 3 arguments
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: exoparg6 - AML execution - opcodes with 6 arguments
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: exprep - ACPI AML field prep utilities
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: exregion - ACPI default op_region (address space) handlers
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: exresnte - AML Interpreter object resolution
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: exresolv - AML Interpreter object resolution
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: exresop - AML Interpreter operand/object resolution
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: exserial - field_unit support for serial address spaces
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -21,7 +21,7 @@ ACPI_MODULE_NAME("exserial")
* FUNCTION: acpi_ex_read_gpio
*
* PARAMETERS: obj_desc - The named field to read
* buffer - Where the return data is returnd
* buffer - Where the return data is returned
*
* RETURN: Status
*

View file

@ -3,7 +3,7 @@
*
* Module Name: exstore - AML Interpreter object store support
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -4,7 +4,7 @@
* Module Name: exstoren - AML Interpreter object store support,
* Store to Node (namespace object)
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: exstorob - AML object store support, store to object
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: exsystem - Interface to OS services
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: extrace - Support for interpreter execution tracing
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: exutils - interpreter/scanner utilities
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -160,7 +160,7 @@ u8 acpi_ex_truncate_for32bit_table(union acpi_operand_object *obj_desc)
* RETURN: None
*
* DESCRIPTION: Obtain the ACPI hardware Global Lock, only if the field
* flags specifiy that it is to be obtained before field access.
* flags specify that it is to be obtained before field access.
*
******************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: hwacpi - ACPI Hardware Initialization/Mode Interface
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -4,7 +4,7 @@
* Name: hwesleep.c - ACPI Hardware Sleep/Wake Support functions for the
* extended FADT-V5 sleep registers.
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: hwgpe - Low level GPE enable/disable/clear functions
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -4,7 +4,7 @@
* Name: hwsleep.c - ACPI Hardware Sleep/Wake Support functions for the
* original/legacy sleep/PM registers.
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Name: hwtimer.c - ACPI Power Management Timer Interface
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: hwvalid - I/O request validation
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: hwxface - Public ACPICA hardware interfaces
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Name: hwxfsleep.c - ACPI Hardware Sleep/Wake External Interfaces
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -23,33 +23,6 @@ acpi_hw_set_firmware_waking_vector(struct acpi_table_facs *facs,
acpi_physical_address physical_address64);
#endif
static acpi_status acpi_hw_sleep_dispatch(u8 sleep_state, u32 function_id);
/*
* Dispatch table used to efficiently branch to the various sleep
* functions.
*/
#define ACPI_SLEEP_FUNCTION_ID 0
#define ACPI_WAKE_PREP_FUNCTION_ID 1
#define ACPI_WAKE_FUNCTION_ID 2
/* Legacy functions are optional, based upon ACPI_REDUCED_HARDWARE */
static struct acpi_sleep_functions acpi_sleep_dispatch[] = {
{ACPI_STRUCT_INIT(legacy_function,
ACPI_HW_OPTIONAL_FUNCTION(acpi_hw_legacy_sleep)),
ACPI_STRUCT_INIT(extended_function,
acpi_hw_extended_sleep)},
{ACPI_STRUCT_INIT(legacy_function,
ACPI_HW_OPTIONAL_FUNCTION(acpi_hw_legacy_wake_prep)),
ACPI_STRUCT_INIT(extended_function,
acpi_hw_extended_wake_prep)},
{ACPI_STRUCT_INIT(legacy_function,
ACPI_HW_OPTIONAL_FUNCTION(acpi_hw_legacy_wake)),
ACPI_STRUCT_INIT(extended_function,
acpi_hw_extended_wake)}
};
/*
* These functions are removed for the ACPI_REDUCED_HARDWARE case:
* acpi_set_firmware_waking_vector
@ -209,53 +182,6 @@ acpi_status acpi_enter_sleep_state_s4bios(void)
ACPI_EXPORT_SYMBOL(acpi_enter_sleep_state_s4bios)
#endif /* !ACPI_REDUCED_HARDWARE */
/*******************************************************************************
*
* FUNCTION: acpi_hw_sleep_dispatch
*
* PARAMETERS: sleep_state - Which sleep state to enter/exit
* function_id - Sleep, wake_prep, or Wake
*
* RETURN: Status from the invoked sleep handling function.
*
* DESCRIPTION: Dispatch a sleep/wake request to the appropriate handling
* function.
*
******************************************************************************/
static acpi_status acpi_hw_sleep_dispatch(u8 sleep_state, u32 function_id)
{
acpi_status status;
struct acpi_sleep_functions *sleep_functions =
&acpi_sleep_dispatch[function_id];
#if (!ACPI_REDUCED_HARDWARE)
/*
* If the Hardware Reduced flag is set (from the FADT), we must
* use the extended sleep registers (FADT). Note: As per the ACPI
* specification, these extended registers are to be used for HW-reduced
* platforms only. They are not general-purpose replacements for the
* legacy PM register sleep support.
*/
if (acpi_gbl_reduced_hardware) {
status = sleep_functions->extended_function(sleep_state);
} else {
/* Legacy sleep */
status = sleep_functions->legacy_function(sleep_state);
}
return (status);
#else
/*
* For the case where reduced-hardware-only code is being generated,
* we know that only the extended sleep registers are available
*/
status = sleep_functions->extended_function(sleep_state);
return (status);
#endif /* !ACPI_REDUCED_HARDWARE */
}
/*******************************************************************************
*
@ -362,7 +288,12 @@ acpi_status acpi_enter_sleep_state(u8 sleep_state)
return_ACPI_STATUS(AE_AML_OPERAND_VALUE);
}
status = acpi_hw_sleep_dispatch(sleep_state, ACPI_SLEEP_FUNCTION_ID);
#if !ACPI_REDUCED_HARDWARE
if (!acpi_gbl_reduced_hardware)
status = acpi_hw_legacy_sleep(sleep_state);
else
#endif
status = acpi_hw_extended_sleep(sleep_state);
return_ACPI_STATUS(status);
}
@ -388,8 +319,12 @@ acpi_status acpi_leave_sleep_state_prep(u8 sleep_state)
ACPI_FUNCTION_TRACE(acpi_leave_sleep_state_prep);
status =
acpi_hw_sleep_dispatch(sleep_state, ACPI_WAKE_PREP_FUNCTION_ID);
#if !ACPI_REDUCED_HARDWARE
if (!acpi_gbl_reduced_hardware)
status = acpi_hw_legacy_wake_prep(sleep_state);
else
#endif
status = acpi_hw_extended_wake_prep(sleep_state);
return_ACPI_STATUS(status);
}
@ -413,7 +348,12 @@ acpi_status acpi_leave_sleep_state(u8 sleep_state)
ACPI_FUNCTION_TRACE(acpi_leave_sleep_state);
status = acpi_hw_sleep_dispatch(sleep_state, ACPI_WAKE_FUNCTION_ID);
#if !ACPI_REDUCED_HARDWARE
if (!acpi_gbl_reduced_hardware)
status = acpi_hw_legacy_wake(sleep_state);
else
#endif
status = acpi_hw_extended_wake(sleep_state);
return_ACPI_STATUS(status);
}

View file

@ -3,7 +3,7 @@
*
* Module Name: nsarguments - Validation of args for ACPI predefined methods
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -4,7 +4,7 @@
* Module Name: nsconvert - Object conversions for objects returned by
* predefined methods
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: nsdump - table dumping routines for debug
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: nsdump - table dumping routines for debug
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: nsinit - namespace initialization
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: nsload - namespace loading/expanding/contracting procedures
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -75,7 +75,7 @@ acpi_ns_load_table(u32 table_index, struct acpi_namespace_node *node)
/*
* On error, delete any namespace objects created by this table.
* We cannot initialize these objects, so delete them. There are
* a couple of expecially bad cases:
* a couple of especially bad cases:
* AE_ALREADY_EXISTS - namespace collision.
* AE_NOT_FOUND - the target of a Scope operator does not
* exist. This target of Scope must already exist in the

View file

@ -3,7 +3,7 @@
*
* Module Name: nsparse - namespace interface to AML parser
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/
@ -253,61 +253,19 @@ acpi_ns_parse_table(u32 table_index, struct acpi_namespace_node *start_node)
ACPI_FUNCTION_TRACE(ns_parse_table);
if (acpi_gbl_execute_tables_as_methods) {
/*
* This case executes the AML table as one large control method.
* The point of this is to execute any module-level code in-place
* as the table is parsed. Some AML code depends on this behavior.
*
* It is a run-time option at this time, but will eventually become
* the default.
*
* Note: This causes the table to only have a single-pass parse.
* However, this is compatible with other ACPI implementations.
*/
ACPI_DEBUG_PRINT_RAW((ACPI_DB_PARSE,
"%s: **** Start table execution pass\n",
ACPI_GET_FUNCTION_NAME));
/*
* Executes the AML table as one large control method.
* The point of this is to execute any module-level code in-place
* as the table is parsed. Some AML code depends on this behavior.
*
* Note: This causes the table to only have a single-pass parse.
* However, this is compatible with other ACPI implementations.
*/
ACPI_DEBUG_PRINT_RAW((ACPI_DB_PARSE,
"%s: **** Start table execution pass\n",
ACPI_GET_FUNCTION_NAME));
status = acpi_ns_execute_table(table_index, start_node);
if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
}
} else {
/*
* AML Parse, pass 1
*
* In this pass, we load most of the namespace. Control methods
* are not parsed until later. A parse tree is not created.
* Instead, each Parser Op subtree is deleted when it is finished.
* This saves a great deal of memory, and allows a small cache of
* parse objects to service the entire parse. The second pass of
* the parse then performs another complete parse of the AML.
*/
ACPI_DEBUG_PRINT((ACPI_DB_PARSE, "**** Start pass 1\n"));
status = acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS1,
table_index, start_node);
if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
}
/*
* AML Parse, pass 2
*
* In this pass, we resolve forward references and other things
* that could not be completed during the first pass.
* Another complete parse of the AML is performed, but the
* overhead of this is compensated for by the fact that the
* parse objects are all cached.
*/
ACPI_DEBUG_PRINT((ACPI_DB_PARSE, "**** Start pass 2\n"));
status = acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS2,
table_index, start_node);
if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
}
}
status = acpi_ns_execute_table(table_index, start_node);
return_ACPI_STATUS(status);
}

View file

@ -3,7 +3,7 @@
*
* Module Name: nspredef - Validation of ACPI predefined methods and objects
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

View file

@ -3,7 +3,7 @@
*
* Module Name: nsprepkg - Validation of package objects for predefined names
*
* Copyright (C) 2000 - 2018, Intel Corp.
* Copyright (C) 2000 - 2019, Intel Corp.
*
*****************************************************************************/

Some files were not shown because too many files have changed in this diff Show more