brintos

brintos / linux-shallow public Read only

0
0
Text · 16.9 KiB · c5ecd0a Raw
378 lines · c
1/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */2/******************************************************************************3 *4 * Name: acexcep.h - Exception codes returned by the ACPI subsystem5 *6 * Copyright (C) 2000 - 2023, Intel Corp.7 *8 *****************************************************************************/9 10#ifndef __ACEXCEP_H__11#define __ACEXCEP_H__12 13/* This module contains all possible exception codes for acpi_status */14 15/*16 * Exception code classes17 */18#define AE_CODE_ENVIRONMENTAL           0x0000	/* General ACPICA environment */19#define AE_CODE_PROGRAMMER              0x1000	/* External ACPICA interface caller */20#define AE_CODE_ACPI_TABLES             0x2000	/* ACPI tables */21#define AE_CODE_AML                     0x3000	/* From executing AML code */22#define AE_CODE_CONTROL                 0x4000	/* Internal control codes */23 24#define AE_CODE_MAX                     0x400025#define AE_CODE_MASK                    0xF00026 27/*28 * Macros to insert the exception code classes29 */30#define EXCEP_ENV(code)                 ((acpi_status) (code | AE_CODE_ENVIRONMENTAL))31#define EXCEP_PGM(code)                 ((acpi_status) (code | AE_CODE_PROGRAMMER))32#define EXCEP_TBL(code)                 ((acpi_status) (code | AE_CODE_ACPI_TABLES))33#define EXCEP_AML(code)                 ((acpi_status) (code | AE_CODE_AML))34#define EXCEP_CTL(code)                 ((acpi_status) (code | AE_CODE_CONTROL))35 36/*37 * Exception info table. The "Description" field is used only by the38 * ACPICA help application (acpihelp).39 */40struct acpi_exception_info {41	char *name;42 43#if defined (ACPI_HELP_APP) || defined (ACPI_ASL_COMPILER)44	char *description;45#endif46};47 48#if defined (ACPI_HELP_APP) || defined (ACPI_ASL_COMPILER)49#define EXCEP_TXT(name,description)     {name, description}50#else51#define EXCEP_TXT(name,description)     {name}52#endif53 54/*55 * Success is always zero, failure is non-zero56 */57#define ACPI_SUCCESS(a)                 (!(a))58#define ACPI_FAILURE(a)                 (a)59 60#define AE_OK                           (acpi_status) 0x000061 62#define ACPI_ENV_EXCEPTION(status)      (((status) & AE_CODE_MASK) == AE_CODE_ENVIRONMENTAL)63#define ACPI_AML_EXCEPTION(status)      (((status) & AE_CODE_MASK) == AE_CODE_AML)64#define ACPI_PROG_EXCEPTION(status)     (((status) & AE_CODE_MASK) == AE_CODE_PROGRAMMER)65#define ACPI_TABLE_EXCEPTION(status)    (((status) & AE_CODE_MASK) == AE_CODE_ACPI_TABLES)66#define ACPI_CNTL_EXCEPTION(status)     (((status) & AE_CODE_MASK) == AE_CODE_CONTROL)67 68/*69 * Environmental exceptions70 */71#define AE_ERROR                        EXCEP_ENV (0x0001)72#define AE_NO_ACPI_TABLES               EXCEP_ENV (0x0002)73#define AE_NO_NAMESPACE                 EXCEP_ENV (0x0003)74#define AE_NO_MEMORY                    EXCEP_ENV (0x0004)75#define AE_NOT_FOUND                    EXCEP_ENV (0x0005)76#define AE_NOT_EXIST                    EXCEP_ENV (0x0006)77#define AE_ALREADY_EXISTS               EXCEP_ENV (0x0007)78#define AE_TYPE                         EXCEP_ENV (0x0008)79#define AE_NULL_OBJECT                  EXCEP_ENV (0x0009)80#define AE_NULL_ENTRY                   EXCEP_ENV (0x000A)81#define AE_BUFFER_OVERFLOW              EXCEP_ENV (0x000B)82#define AE_STACK_OVERFLOW               EXCEP_ENV (0x000C)83#define AE_STACK_UNDERFLOW              EXCEP_ENV (0x000D)84#define AE_NOT_IMPLEMENTED              EXCEP_ENV (0x000E)85#define AE_SUPPORT                      EXCEP_ENV (0x000F)86#define AE_LIMIT                        EXCEP_ENV (0x0010)87#define AE_TIME                         EXCEP_ENV (0x0011)88#define AE_ACQUIRE_DEADLOCK             EXCEP_ENV (0x0012)89#define AE_RELEASE_DEADLOCK             EXCEP_ENV (0x0013)90#define AE_NOT_ACQUIRED                 EXCEP_ENV (0x0014)91#define AE_ALREADY_ACQUIRED             EXCEP_ENV (0x0015)92#define AE_NO_HARDWARE_RESPONSE         EXCEP_ENV (0x0016)93#define AE_NO_GLOBAL_LOCK               EXCEP_ENV (0x0017)94#define AE_ABORT_METHOD                 EXCEP_ENV (0x0018)95#define AE_SAME_HANDLER                 EXCEP_ENV (0x0019)96#define AE_NO_HANDLER                   EXCEP_ENV (0x001A)97#define AE_OWNER_ID_LIMIT               EXCEP_ENV (0x001B)98#define AE_NOT_CONFIGURED               EXCEP_ENV (0x001C)99#define AE_ACCESS                       EXCEP_ENV (0x001D)100#define AE_IO_ERROR                     EXCEP_ENV (0x001E)101#define AE_NUMERIC_OVERFLOW             EXCEP_ENV (0x001F)102#define AE_HEX_OVERFLOW                 EXCEP_ENV (0x0020)103#define AE_DECIMAL_OVERFLOW             EXCEP_ENV (0x0021)104#define AE_OCTAL_OVERFLOW               EXCEP_ENV (0x0022)105#define AE_END_OF_TABLE                 EXCEP_ENV (0x0023)106 107#define AE_CODE_ENV_MAX                 0x0023108 109/*110 * Programmer exceptions111 */112#define AE_BAD_PARAMETER                EXCEP_PGM (0x0001)113#define AE_BAD_CHARACTER                EXCEP_PGM (0x0002)114#define AE_BAD_PATHNAME                 EXCEP_PGM (0x0003)115#define AE_BAD_DATA                     EXCEP_PGM (0x0004)116#define AE_BAD_HEX_CONSTANT             EXCEP_PGM (0x0005)117#define AE_BAD_OCTAL_CONSTANT           EXCEP_PGM (0x0006)118#define AE_BAD_DECIMAL_CONSTANT         EXCEP_PGM (0x0007)119#define AE_MISSING_ARGUMENTS            EXCEP_PGM (0x0008)120#define AE_BAD_ADDRESS                  EXCEP_PGM (0x0009)121 122#define AE_CODE_PGM_MAX                 0x0009123 124/*125 * Acpi table exceptions126 */127#define AE_BAD_SIGNATURE                EXCEP_TBL (0x0001)128#define AE_BAD_HEADER                   EXCEP_TBL (0x0002)129#define AE_BAD_CHECKSUM                 EXCEP_TBL (0x0003)130#define AE_BAD_VALUE                    EXCEP_TBL (0x0004)131#define AE_INVALID_TABLE_LENGTH         EXCEP_TBL (0x0005)132 133#define AE_CODE_TBL_MAX                 0x0005134 135/*136 * AML exceptions. These are caused by problems with137 * the actual AML byte stream138 */139#define AE_AML_BAD_OPCODE               EXCEP_AML (0x0001)140#define AE_AML_NO_OPERAND               EXCEP_AML (0x0002)141#define AE_AML_OPERAND_TYPE             EXCEP_AML (0x0003)142#define AE_AML_OPERAND_VALUE            EXCEP_AML (0x0004)143#define AE_AML_UNINITIALIZED_LOCAL      EXCEP_AML (0x0005)144#define AE_AML_UNINITIALIZED_ARG        EXCEP_AML (0x0006)145#define AE_AML_UNINITIALIZED_ELEMENT    EXCEP_AML (0x0007)146#define AE_AML_NUMERIC_OVERFLOW         EXCEP_AML (0x0008)147#define AE_AML_REGION_LIMIT             EXCEP_AML (0x0009)148#define AE_AML_BUFFER_LIMIT             EXCEP_AML (0x000A)149#define AE_AML_PACKAGE_LIMIT            EXCEP_AML (0x000B)150#define AE_AML_DIVIDE_BY_ZERO           EXCEP_AML (0x000C)151#define AE_AML_BAD_NAME                 EXCEP_AML (0x000D)152#define AE_AML_NAME_NOT_FOUND           EXCEP_AML (0x000E)153#define AE_AML_INTERNAL                 EXCEP_AML (0x000F)154#define AE_AML_INVALID_SPACE_ID         EXCEP_AML (0x0010)155#define AE_AML_STRING_LIMIT             EXCEP_AML (0x0011)156#define AE_AML_NO_RETURN_VALUE          EXCEP_AML (0x0012)157#define AE_AML_METHOD_LIMIT             EXCEP_AML (0x0013)158#define AE_AML_NOT_OWNER                EXCEP_AML (0x0014)159#define AE_AML_MUTEX_ORDER              EXCEP_AML (0x0015)160#define AE_AML_MUTEX_NOT_ACQUIRED       EXCEP_AML (0x0016)161#define AE_AML_INVALID_RESOURCE_TYPE    EXCEP_AML (0x0017)162#define AE_AML_INVALID_INDEX            EXCEP_AML (0x0018)163#define AE_AML_REGISTER_LIMIT           EXCEP_AML (0x0019)164#define AE_AML_NO_WHILE                 EXCEP_AML (0x001A)165#define AE_AML_ALIGNMENT                EXCEP_AML (0x001B)166#define AE_AML_NO_RESOURCE_END_TAG      EXCEP_AML (0x001C)167#define AE_AML_BAD_RESOURCE_VALUE       EXCEP_AML (0x001D)168#define AE_AML_CIRCULAR_REFERENCE       EXCEP_AML (0x001E)169#define AE_AML_BAD_RESOURCE_LENGTH      EXCEP_AML (0x001F)170#define AE_AML_ILLEGAL_ADDRESS          EXCEP_AML (0x0020)171#define AE_AML_LOOP_TIMEOUT             EXCEP_AML (0x0021)172#define AE_AML_UNINITIALIZED_NODE       EXCEP_AML (0x0022)173#define AE_AML_TARGET_TYPE              EXCEP_AML (0x0023)174#define AE_AML_PROTOCOL                 EXCEP_AML (0x0024)175#define AE_AML_BUFFER_LENGTH            EXCEP_AML (0x0025)176 177#define AE_CODE_AML_MAX                 0x0025178 179/*180 * Internal exceptions used for control181 */182#define AE_CTRL_RETURN_VALUE            EXCEP_CTL (0x0001)183#define AE_CTRL_PENDING                 EXCEP_CTL (0x0002)184#define AE_CTRL_TERMINATE               EXCEP_CTL (0x0003)185#define AE_CTRL_TRUE                    EXCEP_CTL (0x0004)186#define AE_CTRL_FALSE                   EXCEP_CTL (0x0005)187#define AE_CTRL_DEPTH                   EXCEP_CTL (0x0006)188#define AE_CTRL_END                     EXCEP_CTL (0x0007)189#define AE_CTRL_TRANSFER                EXCEP_CTL (0x0008)190#define AE_CTRL_BREAK                   EXCEP_CTL (0x0009)191#define AE_CTRL_CONTINUE                EXCEP_CTL (0x000A)192#define AE_CTRL_PARSE_CONTINUE          EXCEP_CTL (0x000B)193#define AE_CTRL_PARSE_PENDING           EXCEP_CTL (0x000C)194 195#define AE_CODE_CTRL_MAX                0x000C196 197/* Exception strings for acpi_format_exception */198 199#ifdef ACPI_DEFINE_EXCEPTION_TABLE200 201/*202 * String versions of the exception codes above203 * These strings must match the corresponding defines exactly204 */205static const struct acpi_exception_info acpi_gbl_exception_names_env[] = {206	EXCEP_TXT("AE_OK", "No error"),207	EXCEP_TXT("AE_ERROR", "Unspecified error"),208	EXCEP_TXT("AE_NO_ACPI_TABLES", "ACPI tables could not be found"),209	EXCEP_TXT("AE_NO_NAMESPACE", "A namespace has not been loaded"),210	EXCEP_TXT("AE_NO_MEMORY", "Insufficient dynamic memory"),211	EXCEP_TXT("AE_NOT_FOUND", "A requested entity is not found"),212	EXCEP_TXT("AE_NOT_EXIST", "A required entity does not exist"),213	EXCEP_TXT("AE_ALREADY_EXISTS", "An entity already exists"),214	EXCEP_TXT("AE_TYPE", "The object type is incorrect"),215	EXCEP_TXT("AE_NULL_OBJECT", "A required object was missing"),216	EXCEP_TXT("AE_NULL_ENTRY", "The requested object does not exist"),217	EXCEP_TXT("AE_BUFFER_OVERFLOW", "The buffer provided is too small"),218	EXCEP_TXT("AE_STACK_OVERFLOW", "An internal stack overflowed"),219	EXCEP_TXT("AE_STACK_UNDERFLOW", "An internal stack underflowed"),220	EXCEP_TXT("AE_NOT_IMPLEMENTED", "The feature is not implemented"),221	EXCEP_TXT("AE_SUPPORT", "The feature is not supported"),222	EXCEP_TXT("AE_LIMIT", "A predefined limit was exceeded"),223	EXCEP_TXT("AE_TIME", "A time limit or timeout expired"),224	EXCEP_TXT("AE_ACQUIRE_DEADLOCK",225		  "Internal error, attempt was made to acquire a mutex in improper order"),226	EXCEP_TXT("AE_RELEASE_DEADLOCK",227		  "Internal error, attempt was made to release a mutex in improper order"),228	EXCEP_TXT("AE_NOT_ACQUIRED",229		  "An attempt to release a mutex or Global Lock without a previous acquire"),230	EXCEP_TXT("AE_ALREADY_ACQUIRED",231		  "Internal error, attempt was made to acquire a mutex twice"),232	EXCEP_TXT("AE_NO_HARDWARE_RESPONSE",233		  "Hardware did not respond after an I/O operation"),234	EXCEP_TXT("AE_NO_GLOBAL_LOCK", "There is no FACS Global Lock"),235	EXCEP_TXT("AE_ABORT_METHOD", "A control method was aborted"),236	EXCEP_TXT("AE_SAME_HANDLER",237		  "Attempt was made to install the same handler that is already installed"),238	EXCEP_TXT("AE_NO_HANDLER",239		  "A handler for the operation is not installed"),240	EXCEP_TXT("AE_OWNER_ID_LIMIT",241		  "There are no more Owner IDs available for ACPI tables or control methods"),242	EXCEP_TXT("AE_NOT_CONFIGURED",243		  "The interface is not part of the current subsystem configuration"),244	EXCEP_TXT("AE_ACCESS", "Permission denied for the requested operation"),245	EXCEP_TXT("AE_IO_ERROR", "An I/O error occurred"),246	EXCEP_TXT("AE_NUMERIC_OVERFLOW",247		  "Overflow during string-to-integer conversion"),248	EXCEP_TXT("AE_HEX_OVERFLOW",249		  "Overflow during ASCII hex-to-binary conversion"),250	EXCEP_TXT("AE_DECIMAL_OVERFLOW",251		  "Overflow during ASCII decimal-to-binary conversion"),252	EXCEP_TXT("AE_OCTAL_OVERFLOW",253		  "Overflow during ASCII octal-to-binary conversion"),254	EXCEP_TXT("AE_END_OF_TABLE", "Reached the end of table")255};256 257static const struct acpi_exception_info acpi_gbl_exception_names_pgm[] = {258	EXCEP_TXT(NULL, NULL),259	EXCEP_TXT("AE_BAD_PARAMETER", "A parameter is out of range or invalid"),260	EXCEP_TXT("AE_BAD_CHARACTER",261		  "An invalid character was found in a name"),262	EXCEP_TXT("AE_BAD_PATHNAME",263		  "An invalid character was found in a pathname"),264	EXCEP_TXT("AE_BAD_DATA",265		  "A package or buffer contained incorrect data"),266	EXCEP_TXT("AE_BAD_HEX_CONSTANT", "Invalid character in a Hex constant"),267	EXCEP_TXT("AE_BAD_OCTAL_CONSTANT",268		  "Invalid character in an Octal constant"),269	EXCEP_TXT("AE_BAD_DECIMAL_CONSTANT",270		  "Invalid character in a Decimal constant"),271	EXCEP_TXT("AE_MISSING_ARGUMENTS",272		  "Too few arguments were passed to a control method"),273	EXCEP_TXT("AE_BAD_ADDRESS", "An illegal null I/O address")274};275 276static const struct acpi_exception_info acpi_gbl_exception_names_tbl[] = {277	EXCEP_TXT(NULL, NULL),278	EXCEP_TXT("AE_BAD_SIGNATURE", "An ACPI table has an invalid signature"),279	EXCEP_TXT("AE_BAD_HEADER", "Invalid field in an ACPI table header"),280	EXCEP_TXT("AE_BAD_CHECKSUM", "An ACPI table checksum is not correct"),281	EXCEP_TXT("AE_BAD_VALUE", "An invalid value was found in a table"),282	EXCEP_TXT("AE_INVALID_TABLE_LENGTH",283		  "The FADT or FACS has improper length")284};285 286static const struct acpi_exception_info acpi_gbl_exception_names_aml[] = {287	EXCEP_TXT(NULL, NULL),288	EXCEP_TXT("AE_AML_BAD_OPCODE", "Invalid AML opcode encountered"),289	EXCEP_TXT("AE_AML_NO_OPERAND", "A required operand is missing"),290	EXCEP_TXT("AE_AML_OPERAND_TYPE",291		  "An operand of an incorrect type was encountered"),292	EXCEP_TXT("AE_AML_OPERAND_VALUE",293		  "The operand had an inappropriate or invalid value"),294	EXCEP_TXT("AE_AML_UNINITIALIZED_LOCAL",295		  "Method tried to use an uninitialized local variable"),296	EXCEP_TXT("AE_AML_UNINITIALIZED_ARG",297		  "Method tried to use an uninitialized argument"),298	EXCEP_TXT("AE_AML_UNINITIALIZED_ELEMENT",299		  "Method tried to use an empty package element"),300	EXCEP_TXT("AE_AML_NUMERIC_OVERFLOW",301		  "Overflow during BCD conversion or other"),302	EXCEP_TXT("AE_AML_REGION_LIMIT",303		  "Tried to access beyond the end of an Operation Region"),304	EXCEP_TXT("AE_AML_BUFFER_LIMIT",305		  "Tried to access beyond the end of a buffer"),306	EXCEP_TXT("AE_AML_PACKAGE_LIMIT",307		  "Tried to access beyond the end of a package"),308	EXCEP_TXT("AE_AML_DIVIDE_BY_ZERO",309		  "During execution of AML Divide operator"),310	EXCEP_TXT("AE_AML_BAD_NAME",311		  "An ACPI name contains invalid character(s)"),312	EXCEP_TXT("AE_AML_NAME_NOT_FOUND",313		  "Could not resolve a named reference"),314	EXCEP_TXT("AE_AML_INTERNAL",315		  "An internal error within the interpreter"),316	EXCEP_TXT("AE_AML_INVALID_SPACE_ID",317		  "An Operation Region SpaceID is invalid"),318	EXCEP_TXT("AE_AML_STRING_LIMIT",319		  "String is longer than 200 characters"),320	EXCEP_TXT("AE_AML_NO_RETURN_VALUE",321		  "A method did not return a required value"),322	EXCEP_TXT("AE_AML_METHOD_LIMIT",323		  "A control method reached the maximum reentrancy limit of 255"),324	EXCEP_TXT("AE_AML_NOT_OWNER",325		  "A thread tried to release a mutex that it does not own"),326	EXCEP_TXT("AE_AML_MUTEX_ORDER", "Mutex SyncLevel release mismatch"),327	EXCEP_TXT("AE_AML_MUTEX_NOT_ACQUIRED",328		  "Attempt to release a mutex that was not previously acquired"),329	EXCEP_TXT("AE_AML_INVALID_RESOURCE_TYPE",330		  "Invalid resource type in resource list"),331	EXCEP_TXT("AE_AML_INVALID_INDEX",332		  "Invalid Argx or Localx (x too large)"),333	EXCEP_TXT("AE_AML_REGISTER_LIMIT",334		  "Bank value or Index value beyond range of register"),335	EXCEP_TXT("AE_AML_NO_WHILE", "Break or Continue without a While"),336	EXCEP_TXT("AE_AML_ALIGNMENT",337		  "Non-aligned memory transfer on platform that does not support this"),338	EXCEP_TXT("AE_AML_NO_RESOURCE_END_TAG",339		  "No End Tag in a resource list"),340	EXCEP_TXT("AE_AML_BAD_RESOURCE_VALUE",341		  "Invalid value of a resource element"),342	EXCEP_TXT("AE_AML_CIRCULAR_REFERENCE",343		  "Two references refer to each other"),344	EXCEP_TXT("AE_AML_BAD_RESOURCE_LENGTH",345		  "The length of a Resource Descriptor in the AML is incorrect"),346	EXCEP_TXT("AE_AML_ILLEGAL_ADDRESS",347		  "A memory, I/O, or PCI configuration address is invalid"),348	EXCEP_TXT("AE_AML_LOOP_TIMEOUT",349		  "An AML While loop exceeded the maximum execution time"),350	EXCEP_TXT("AE_AML_UNINITIALIZED_NODE",351		  "A namespace node is uninitialized or unresolved"),352	EXCEP_TXT("AE_AML_TARGET_TYPE",353		  "A target operand of an incorrect type was encountered"),354	EXCEP_TXT("AE_AML_PROTOCOL", "Violation of a fixed ACPI protocol"),355	EXCEP_TXT("AE_AML_BUFFER_LENGTH",356		  "The length of the buffer is invalid/incorrect")357};358 359static const struct acpi_exception_info acpi_gbl_exception_names_ctrl[] = {360	EXCEP_TXT(NULL, NULL),361	EXCEP_TXT("AE_CTRL_RETURN_VALUE", "A Method returned a value"),362	EXCEP_TXT("AE_CTRL_PENDING", "Method is calling another method"),363	EXCEP_TXT("AE_CTRL_TERMINATE", "Terminate the executing method"),364	EXCEP_TXT("AE_CTRL_TRUE", "An If or While predicate result"),365	EXCEP_TXT("AE_CTRL_FALSE", "An If or While predicate result"),366	EXCEP_TXT("AE_CTRL_DEPTH", "Maximum search depth has been reached"),367	EXCEP_TXT("AE_CTRL_END", "An If or While predicate is false"),368	EXCEP_TXT("AE_CTRL_TRANSFER", "Transfer control to called method"),369	EXCEP_TXT("AE_CTRL_BREAK", "A Break has been executed"),370	EXCEP_TXT("AE_CTRL_CONTINUE", "A Continue has been executed"),371	EXCEP_TXT("AE_CTRL_PARSE_CONTINUE", "Used to skip over bad opcodes"),372	EXCEP_TXT("AE_CTRL_PARSE_PENDING", "Used to implement AML While loops")373};374 375#endif				/* EXCEPTION_TABLE */376 377#endif				/* __ACEXCEP_H__ */378