mirror of
https://github.com/torvalds/linux.git
synced 2024-12-01 00:21:32 +00:00
f9f4601f33
The use of the CPU stack in the debug version of the subsystem has been considerably reduced. Previously, a debug structure was declared in every function that used the debug macros. This structure has been removed in favor of declaring the individual elements as parameters to the debug functions. This reduces the cumulative stack use during nested execution of ACPI function calls at the cost of a small increase in the code size of the debug version of the subsystem. With assistance from Alexey Starikovskiy and Len Brown. Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent headers to define a macro that will return the current function name at runtime (such as __FUNCTION__ or _func_, etc.) The function name is used by the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the compiler-dependent header, the function name is saved on the CPU stack (one pointer per function.) This mechanism is used because apparently there exists no standard ANSI-C defined macro that that returns the function name. Alexey Starikovskiy redesigned and reimplemented the "Owner ID" mechanism used to track namespace objects created/deleted by ACPI tables and control method execution. A bitmap is now used to allocate and free the IDs, thus solving the wraparound problem present in the previous implementation. The size of the namespace node descriptor was reduced by 2 bytes as a result. Removed the UINT32_BIT and UINT16_BIT types that were used for the bitfield flag definitions within the headers for the predefined ACPI tables. These have been replaced by UINT8_BIT in order to increase the code portability of the subsystem. If the use of UINT8 remains a problem, we may be forced to eliminate bitfields entirely because of a lack of portability. Alexey Starikovksiy enhanced the performance of acpi_ut_update_object_reference. This is a frequently used function and this improvement increases the performance of the entire subsystem. Alexey Starikovskiy fixed several possible memory leaks and the inverse - premature object deletion. Signed-off-by: Len Brown <len.brown@intel.com>
216 lines
7.3 KiB
C
216 lines
7.3 KiB
C
/******************************************************************************
|
|
*
|
|
* Name: acconfig.h - Global configuration constants
|
|
*
|
|
*****************************************************************************/
|
|
|
|
/*
|
|
* Copyright (C) 2000 - 2005, R. Byron Moore
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions, and the following disclaimer,
|
|
* without modification.
|
|
* 2. Redistributions in binary form must reproduce at minimum a disclaimer
|
|
* substantially similar to the "NO WARRANTY" disclaimer below
|
|
* ("Disclaimer") and any redistribution must be conditioned upon
|
|
* including a substantially similar Disclaimer requirement for further
|
|
* binary redistribution.
|
|
* 3. Neither the names of the above-listed copyright holders nor the names
|
|
* of any contributors may be used to endorse or promote products derived
|
|
* from this software without specific prior written permission.
|
|
*
|
|
* Alternatively, this software may be distributed under the terms of the
|
|
* GNU General Public License ("GPL") version 2 as published by the Free
|
|
* Software Foundation.
|
|
*
|
|
* NO WARRANTY
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
|
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
* HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
|
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGES.
|
|
*/
|
|
|
|
#ifndef _ACCONFIG_H
|
|
#define _ACCONFIG_H
|
|
|
|
|
|
/******************************************************************************
|
|
*
|
|
* Configuration options
|
|
*
|
|
*****************************************************************************/
|
|
|
|
/*
|
|
* ACPI_DEBUG_OUTPUT - This switch enables all the debug facilities of the
|
|
* ACPI subsystem. This includes the DEBUG_PRINT output
|
|
* statements. When disabled, all DEBUG_PRINT
|
|
* statements are compiled out.
|
|
*
|
|
* ACPI_APPLICATION - Use this switch if the subsystem is going to be run
|
|
* at the application level.
|
|
*
|
|
*/
|
|
|
|
/* Version string */
|
|
|
|
#define ACPI_CA_VERSION 0x20050708
|
|
|
|
/*
|
|
* OS name, used for the _OS object. The _OS object is essentially obsolete,
|
|
* but there is a large base of ASL/AML code in existing machines that check
|
|
* for the string below. The use of this string usually guarantees that
|
|
* the ASL will execute down the most tested code path. Also, there is some
|
|
* code that will not execute the _OSI method unless _OS matches the string
|
|
* below. Therefore, change this string at your own risk.
|
|
*/
|
|
#define ACPI_OS_NAME "Microsoft Windows NT"
|
|
|
|
/* Maximum objects in the various object caches */
|
|
|
|
#define ACPI_MAX_STATE_CACHE_DEPTH 96 /* State objects */
|
|
#define ACPI_MAX_PARSE_CACHE_DEPTH 96 /* Parse tree objects */
|
|
#define ACPI_MAX_EXTPARSE_CACHE_DEPTH 96 /* Parse tree objects */
|
|
#define ACPI_MAX_OBJECT_CACHE_DEPTH 96 /* Interpreter operand objects */
|
|
|
|
/*
|
|
* Should the subystem abort the loading of an ACPI table if the
|
|
* table checksum is incorrect?
|
|
*/
|
|
#define ACPI_CHECKSUM_ABORT FALSE
|
|
|
|
|
|
/******************************************************************************
|
|
*
|
|
* Subsystem Constants
|
|
*
|
|
*****************************************************************************/
|
|
|
|
/* Version of ACPI supported */
|
|
|
|
#define ACPI_CA_SUPPORT_LEVEL 3
|
|
|
|
/* String size constants */
|
|
|
|
#define ACPI_MAX_STRING_LENGTH 512
|
|
#define ACPI_PATHNAME_MAX 256 /* A full namespace pathname */
|
|
|
|
/* Maximum count for a semaphore object */
|
|
|
|
#define ACPI_MAX_SEMAPHORE_COUNT 256
|
|
|
|
/* Max reference count (for debug only) */
|
|
|
|
#define ACPI_MAX_REFERENCE_COUNT 0x400
|
|
|
|
/* Size of cached memory mapping for system memory operation region */
|
|
|
|
#define ACPI_SYSMEM_REGION_WINDOW_SIZE 4096
|
|
|
|
|
|
/******************************************************************************
|
|
*
|
|
* ACPI Specification constants (Do not change unless the specification changes)
|
|
*
|
|
*****************************************************************************/
|
|
|
|
/* Number of distinct GPE register blocks and register width */
|
|
|
|
#define ACPI_MAX_GPE_BLOCKS 2
|
|
#define ACPI_GPE_REGISTER_WIDTH 8
|
|
|
|
/* Method info (in WALK_STATE), containing local variables and argumetns */
|
|
|
|
#define ACPI_METHOD_NUM_LOCALS 8
|
|
#define ACPI_METHOD_MAX_LOCAL 7
|
|
|
|
#define ACPI_METHOD_NUM_ARGS 7
|
|
#define ACPI_METHOD_MAX_ARG 6
|
|
|
|
/* Maximum length of resulting string when converting from a buffer */
|
|
|
|
#define ACPI_MAX_STRING_CONVERSION 200
|
|
|
|
/* Length of _HID, _UID, and _CID values */
|
|
|
|
#define ACPI_DEVICE_ID_LENGTH 0x09
|
|
#define ACPI_MAX_CID_LENGTH 48
|
|
|
|
/*
|
|
* Operand Stack (in WALK_STATE), Must be large enough to contain METHOD_MAX_ARG
|
|
*/
|
|
#define ACPI_OBJ_NUM_OPERANDS 8
|
|
#define ACPI_OBJ_MAX_OPERAND 7
|
|
|
|
/* Names within the namespace are 4 bytes long */
|
|
|
|
#define ACPI_NAME_SIZE 4
|
|
#define ACPI_PATH_SEGMENT_LENGTH 5 /* 4 chars for name + 1 char for separator */
|
|
#define ACPI_PATH_SEPARATOR '.'
|
|
|
|
/* Constants used in searching for the RSDP in low memory */
|
|
|
|
#define ACPI_EBDA_PTR_LOCATION 0x0000040E /* Physical Address */
|
|
#define ACPI_EBDA_PTR_LENGTH 2
|
|
#define ACPI_EBDA_WINDOW_SIZE 1024
|
|
#define ACPI_HI_RSDP_WINDOW_BASE 0x000E0000 /* Physical Address */
|
|
#define ACPI_HI_RSDP_WINDOW_SIZE 0x00020000
|
|
#define ACPI_RSDP_SCAN_STEP 16
|
|
|
|
/* Operation regions */
|
|
|
|
#define ACPI_NUM_PREDEFINED_REGIONS 8
|
|
#define ACPI_USER_REGION_BEGIN 0x80
|
|
|
|
/* Maximum space_ids for Operation Regions */
|
|
|
|
#define ACPI_MAX_ADDRESS_SPACE 255
|
|
|
|
/* Array sizes. Used for range checking also */
|
|
|
|
#define ACPI_NUM_ACCESS_TYPES 6
|
|
#define ACPI_NUM_UPDATE_RULES 3
|
|
#define ACPI_NUM_LOCK_RULES 2
|
|
#define ACPI_NUM_MATCH_OPS 6
|
|
#define ACPI_NUM_OPCODES 256
|
|
#define ACPI_NUM_FIELD_NAMES 2
|
|
|
|
/* RSDP checksums */
|
|
|
|
#define ACPI_RSDP_CHECKSUM_LENGTH 20
|
|
#define ACPI_RSDP_XCHECKSUM_LENGTH 36
|
|
|
|
/* SMBus bidirectional buffer size */
|
|
|
|
#define ACPI_SMBUS_BUFFER_SIZE 34
|
|
|
|
/* Number of strings associated with the _OSI reserved method */
|
|
|
|
#define ACPI_NUM_OSI_STRINGS 10
|
|
|
|
|
|
/******************************************************************************
|
|
*
|
|
* ACPI AML Debugger
|
|
*
|
|
*****************************************************************************/
|
|
|
|
#define ACPI_DEBUGGER_MAX_ARGS 8 /* Must be max method args + 1 */
|
|
|
|
#define ACPI_DEBUGGER_COMMAND_PROMPT '-'
|
|
#define ACPI_DEBUGGER_EXECUTE_PROMPT '%'
|
|
|
|
|
|
#endif /* _ACCONFIG_H */
|
|
|