aboutsummaryrefslogtreecommitdiffstats
path: root/include/acpi
diff options
context:
space:
mode:
authorRobert Moore <robert.moore@intel.com>2005-07-08 00:00:00 -0400
committerLen Brown <len.brown@intel.com>2005-07-14 00:42:23 -0400
commitf9f4601f331aa1226d7a798a01950efbb388f07f (patch)
tree62e079a9275749d16a4a0da56a427be201e15d27 /include/acpi
parent4c3ffbd79529b680b3c3ef2b6f42f0c89c694ec5 (diff)
ACPICA 20050708 from Bob Moore <robert.moore@intel.com>
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>
Diffstat (limited to 'include/acpi')
-rw-r--r--include/acpi/acconfig.h2
-rw-r--r--include/acpi/acdisasm.h2
-rw-r--r--include/acpi/acexcep.h6
-rw-r--r--include/acpi/acglobal.h3
-rw-r--r--include/acpi/aclocal.h57
-rw-r--r--include/acpi/acmacros.h100
-rw-r--r--include/acpi/acnamesp.h4
-rw-r--r--include/acpi/acobject.h2
-rw-r--r--include/acpi/acoutput.h2
-rw-r--r--include/acpi/acstruct.h11
-rw-r--r--include/acpi/actables.h4
-rw-r--r--include/acpi/actbl.h58
-rw-r--r--include/acpi/actbl1.h52
-rw-r--r--include/acpi/actbl2.h109
-rw-r--r--include/acpi/actypes.h18
-rw-r--r--include/acpi/acutils.h56
-rw-r--r--include/acpi/platform/acgcc.h8
17 files changed, 287 insertions, 207 deletions
diff --git a/include/acpi/acconfig.h b/include/acpi/acconfig.h
index dd9b70cc963..aa3c08c6da4 100644
--- a/include/acpi/acconfig.h
+++ b/include/acpi/acconfig.h
@@ -64,7 +64,7 @@
64 64
65/* Version string */ 65/* Version string */
66 66
67#define ACPI_CA_VERSION 0x20050624 67#define ACPI_CA_VERSION 0x20050708
68 68
69/* 69/*
70 * OS name, used for the _OS object. The _OS object is essentially obsolete, 70 * OS name, used for the _OS object. The _OS object is essentially obsolete,
diff --git a/include/acpi/acdisasm.h b/include/acpi/acdisasm.h
index fcc2d507fac..26325430db8 100644
--- a/include/acpi/acdisasm.h
+++ b/include/acpi/acdisasm.h
@@ -211,7 +211,7 @@ acpi_dm_byte_list (
211 union acpi_parse_object *op); 211 union acpi_parse_object *op);
212 212
213void 213void
214acpi_is_eisa_id ( 214acpi_dm_is_eisa_id (
215 union acpi_parse_object *op); 215 union acpi_parse_object *op);
216 216
217void 217void
diff --git a/include/acpi/acexcep.h b/include/acpi/acexcep.h
index 60d737b2d70..0a6f492f3c8 100644
--- a/include/acpi/acexcep.h
+++ b/include/acpi/acexcep.h
@@ -95,8 +95,9 @@
95#define AE_ABORT_METHOD (acpi_status) (0x001C | AE_CODE_ENVIRONMENTAL) 95#define AE_ABORT_METHOD (acpi_status) (0x001C | AE_CODE_ENVIRONMENTAL)
96#define AE_SAME_HANDLER (acpi_status) (0x001D | AE_CODE_ENVIRONMENTAL) 96#define AE_SAME_HANDLER (acpi_status) (0x001D | AE_CODE_ENVIRONMENTAL)
97#define AE_WAKE_ONLY_GPE (acpi_status) (0x001E | AE_CODE_ENVIRONMENTAL) 97#define AE_WAKE_ONLY_GPE (acpi_status) (0x001E | AE_CODE_ENVIRONMENTAL)
98#define AE_OWNER_ID_LIMIT (acpi_status) (0x001F | AE_CODE_ENVIRONMENTAL)
98 99
99#define AE_CODE_ENV_MAX 0x001E 100#define AE_CODE_ENV_MAX 0x001F
100 101
101 102
102/* 103/*
@@ -226,7 +227,8 @@ char const *acpi_gbl_exception_names_env[] =
226 "AE_LOGICAL_ADDRESS", 227 "AE_LOGICAL_ADDRESS",
227 "AE_ABORT_METHOD", 228 "AE_ABORT_METHOD",
228 "AE_SAME_HANDLER", 229 "AE_SAME_HANDLER",
229 "AE_WAKE_ONLY_GPE" 230 "AE_WAKE_ONLY_GPE",
231 "AE_OWNER_ID_LIMIT"
230}; 232};
231 233
232char const *acpi_gbl_exception_names_pgm[] = 234char const *acpi_gbl_exception_names_pgm[] =
diff --git a/include/acpi/acglobal.h b/include/acpi/acglobal.h
index 8d5a397abd6..e3cf16eadbe 100644
--- a/include/acpi/acglobal.h
+++ b/include/acpi/acglobal.h
@@ -218,9 +218,8 @@ ACPI_EXTERN u32 acpi_gbl_original_mode;
218ACPI_EXTERN u32 acpi_gbl_rsdp_original_location; 218ACPI_EXTERN u32 acpi_gbl_rsdp_original_location;
219ACPI_EXTERN u32 acpi_gbl_ns_lookup_count; 219ACPI_EXTERN u32 acpi_gbl_ns_lookup_count;
220ACPI_EXTERN u32 acpi_gbl_ps_find_count; 220ACPI_EXTERN u32 acpi_gbl_ps_find_count;
221ACPI_EXTERN u32 acpi_gbl_owner_id_mask;
221ACPI_EXTERN u16 acpi_gbl_pm1_enable_register_save; 222ACPI_EXTERN u16 acpi_gbl_pm1_enable_register_save;
222ACPI_EXTERN u16 acpi_gbl_next_table_owner_id;
223ACPI_EXTERN u16 acpi_gbl_next_method_owner_id;
224ACPI_EXTERN u16 acpi_gbl_global_lock_handle; 223ACPI_EXTERN u16 acpi_gbl_global_lock_handle;
225ACPI_EXTERN u8 acpi_gbl_debugger_configuration; 224ACPI_EXTERN u8 acpi_gbl_debugger_configuration;
226ACPI_EXTERN u8 acpi_gbl_global_lock_acquired; 225ACPI_EXTERN u8 acpi_gbl_global_lock_acquired;
diff --git a/include/acpi/aclocal.h b/include/acpi/aclocal.h
index 58f9ba1a34e..4d2635698e1 100644
--- a/include/acpi/aclocal.h
+++ b/include/acpi/aclocal.h
@@ -56,6 +56,13 @@ typedef u32 acpi_mutex_handle;
56#define AML_NUM_OPCODES 0x7F 56#define AML_NUM_OPCODES 0x7F
57 57
58 58
59/* Forward declarations */
60
61struct acpi_walk_state ;
62struct acpi_obj_mutex;
63union acpi_parse_object ;
64
65
59/***************************************************************************** 66/*****************************************************************************
60 * 67 *
61 * Mutex typedefs and structs 68 * Mutex typedefs and structs
@@ -116,19 +123,24 @@ static char *acpi_gbl_mutex_names[] =
116#endif 123#endif
117 124
118 125
126/* Owner IDs are used to track namespace nodes for selective deletion */
127
128typedef u8 acpi_owner_id;
129#define ACPI_OWNER_ID_MAX 0xFF
130
131/* This Thread ID means that the mutex is not in use (unlocked) */
132
133#define ACPI_MUTEX_NOT_ACQUIRED (u32) -1
134
119/* Table for the global mutexes */ 135/* Table for the global mutexes */
120 136
121struct acpi_mutex_info 137struct acpi_mutex_info
122{ 138{
123 acpi_mutex mutex; 139 acpi_mutex mutex;
124 u32 use_count; 140 u32 use_count;
125 u32 owner_id; 141 u32 thread_id;
126}; 142};
127 143
128/* This owner ID means that the mutex is not in use (unlocked) */
129
130#define ACPI_MUTEX_NOT_ACQUIRED (u32) (-1)
131
132 144
133/* Lock flag parameter for various interfaces */ 145/* Lock flag parameter for various interfaces */
134 146
@@ -136,13 +148,6 @@ struct acpi_mutex_info
136#define ACPI_MTX_LOCK 1 148#define ACPI_MTX_LOCK 1
137 149
138 150
139typedef u16 acpi_owner_id;
140#define ACPI_OWNER_TYPE_TABLE 0x0
141#define ACPI_OWNER_TYPE_METHOD 0x1
142#define ACPI_FIRST_METHOD_ID 0x0001
143#define ACPI_FIRST_TABLE_ID 0xF000
144
145
146/* Field access granularities */ 151/* Field access granularities */
147 152
148#define ACPI_FIELD_BYTE_GRANULARITY 1 153#define ACPI_FIELD_BYTE_GRANULARITY 1
@@ -185,13 +190,20 @@ struct acpi_namespace_node
185{ 190{
186 u8 descriptor; /* Used to differentiate object descriptor types */ 191 u8 descriptor; /* Used to differentiate object descriptor types */
187 u8 type; /* Type associated with this name */ 192 u8 type; /* Type associated with this name */
188 u16 owner_id; 193 u16 reference_count; /* Current count of references and children */
189 union acpi_name_union name; /* ACPI Name, always 4 chars per ACPI spec */ 194 union acpi_name_union name; /* ACPI Name, always 4 chars per ACPI spec */
190 union acpi_operand_object *object; /* Pointer to attached ACPI object (optional) */ 195 union acpi_operand_object *object; /* Pointer to attached ACPI object (optional) */
191 struct acpi_namespace_node *child; /* First child */ 196 struct acpi_namespace_node *child; /* First child */
192 struct acpi_namespace_node *peer; /* Next peer*/ 197 struct acpi_namespace_node *peer; /* Next peer*/
193 u16 reference_count; /* Current count of references and children */ 198 u8 owner_id; /* Who created this node */
194 u8 flags; 199 u8 flags;
200
201 /* Fields used by the ASL compiler only */
202
203#ifdef ACPI_ASL_COMPILER
204 u32 value;
205 union acpi_parse_object *op;
206#endif
195}; 207};
196 208
197 209
@@ -222,7 +234,7 @@ struct acpi_table_desc
222 u64 physical_address; 234 u64 physical_address;
223 u32 aml_length; 235 u32 aml_length;
224 acpi_size length; 236 acpi_size length;
225 acpi_owner_id table_id; 237 acpi_owner_id owner_id;
226 u8 type; 238 u8 type;
227 u8 allocation; 239 u8 allocation;
228 u8 loaded_into_namespace; 240 u8 loaded_into_namespace;
@@ -420,13 +432,6 @@ struct acpi_field_info
420#define ACPI_CONTROL_PREDICATE_TRUE 0xC4 432#define ACPI_CONTROL_PREDICATE_TRUE 0xC4
421 433
422 434
423/* Forward declarations */
424
425struct acpi_walk_state ;
426struct acpi_obj_mutex;
427union acpi_parse_object ;
428
429
430#define ACPI_STATE_COMMON /* Two 32-bit fields and a pointer */\ 435#define ACPI_STATE_COMMON /* Two 32-bit fields and a pointer */\
431 u8 data_type; /* To differentiate various internal objs */\ 436 u8 data_type; /* To differentiate various internal objs */\
432 u8 flags; \ 437 u8 flags; \
@@ -916,14 +921,6 @@ struct acpi_integrity_info
916 * 921 *
917 ****************************************************************************/ 922 ****************************************************************************/
918 923
919struct acpi_debug_print_info
920{
921 u32 component_id;
922 char *proc_name;
923 char *module_name;
924};
925
926
927/* Entry for a memory allocation (debug only) */ 924/* Entry for a memory allocation (debug only) */
928 925
929#define ACPI_MEM_MALLOC 0 926#define ACPI_MEM_MALLOC 0
diff --git a/include/acpi/acmacros.h b/include/acpi/acmacros.h
index 09be937d2c3..5b100cef8df 100644
--- a/include/acpi/acmacros.h
+++ b/include/acpi/acmacros.h
@@ -437,21 +437,22 @@
437#define ACPI_PARAM_LIST(pl) pl 437#define ACPI_PARAM_LIST(pl) pl
438 438
439/* 439/*
440 * Error reporting. These versions add callers module and line#. Since 440 * Error reporting. These versions add callers module and line#.
441 * _THIS_MODULE gets compiled out when ACPI_DEBUG_OUTPUT isn't defined, only 441 *
442 * use it in debug mode. 442 * Since _acpi_module_name gets compiled out when ACPI_DEBUG_OUTPUT
443 * isn't defined, only use it in debug mode.
443 */ 444 */
444#ifdef ACPI_DEBUG_OUTPUT 445#ifdef ACPI_DEBUG_OUTPUT
445 446
446#define ACPI_REPORT_INFO(fp) {acpi_ut_report_info(_THIS_MODULE,__LINE__,_COMPONENT); \ 447#define ACPI_REPORT_INFO(fp) {acpi_ut_report_info(_acpi_module_name,__LINE__,_COMPONENT); \
447 acpi_os_printf ACPI_PARAM_LIST(fp);} 448 acpi_os_printf ACPI_PARAM_LIST(fp);}
448#define ACPI_REPORT_ERROR(fp) {acpi_ut_report_error(_THIS_MODULE,__LINE__,_COMPONENT); \ 449#define ACPI_REPORT_ERROR(fp) {acpi_ut_report_error(_acpi_module_name,__LINE__,_COMPONENT); \
449 acpi_os_printf ACPI_PARAM_LIST(fp);} 450 acpi_os_printf ACPI_PARAM_LIST(fp);}
450#define ACPI_REPORT_WARNING(fp) {acpi_ut_report_warning(_THIS_MODULE,__LINE__,_COMPONENT); \ 451#define ACPI_REPORT_WARNING(fp) {acpi_ut_report_warning(_acpi_module_name,__LINE__,_COMPONENT); \
451 acpi_os_printf ACPI_PARAM_LIST(fp);} 452 acpi_os_printf ACPI_PARAM_LIST(fp);}
452#define ACPI_REPORT_NSERROR(s,e) acpi_ns_report_error(_THIS_MODULE,__LINE__,_COMPONENT, s, e); 453#define ACPI_REPORT_NSERROR(s,e) acpi_ns_report_error(_acpi_module_name,__LINE__,_COMPONENT, s, e);
453 454
454#define ACPI_REPORT_METHOD_ERROR(s,n,p,e) acpi_ns_report_method_error(_THIS_MODULE,__LINE__,_COMPONENT, s, n, p, e); 455#define ACPI_REPORT_METHOD_ERROR(s,n,p,e) acpi_ns_report_method_error(_acpi_module_name,__LINE__,_COMPONENT, s, n, p, e);
455 456
456#else 457#else
457 458
@@ -480,36 +481,56 @@
480 * Debug macros that are conditionally compiled 481 * Debug macros that are conditionally compiled
481 */ 482 */
482#ifdef ACPI_DEBUG_OUTPUT 483#ifdef ACPI_DEBUG_OUTPUT
484#define ACPI_MODULE_NAME(name) static char ACPI_UNUSED_VAR *_acpi_module_name = name;
483 485
484#define ACPI_MODULE_NAME(name) static char ACPI_UNUSED_VAR *_THIS_MODULE = name; 486/*
487 * Common parameters used for debug output functions:
488 * line number, function name, module(file) name, component ID
489 */
490#define ACPI_DEBUG_PARAMETERS __LINE__, ACPI_GET_FUNCTION_NAME, _acpi_module_name, _COMPONENT
485 491
486/* 492/*
487 * Function entry tracing. 493 * Function entry tracing
488 * The first parameter should be the procedure name as a quoted string. This is declared
489 * as a local string ("_proc_name) so that it can be also used by the function exit macros below.
490 */ 494 */
491#define ACPI_FUNCTION_NAME(a) struct acpi_debug_print_info _debug_info; \ 495
492 _debug_info.component_id = _COMPONENT; \ 496/*
493 _debug_info.proc_name = a; \ 497 * If ACPI_GET_FUNCTION_NAME was not defined in the compiler-dependent header,
494 _debug_info.module_name = _THIS_MODULE; 498 * define it now. This is the case where there the compiler does not support
495 499 * a __FUNCTION__ macro or equivalent. We save the function name on the
496#define ACPI_FUNCTION_TRACE(a) ACPI_FUNCTION_NAME(a) \ 500 * local stack.
497 acpi_ut_trace(__LINE__,&_debug_info) 501 */
498#define ACPI_FUNCTION_TRACE_PTR(a,b) ACPI_FUNCTION_NAME(a) \ 502#ifndef ACPI_GET_FUNCTION_NAME
499 acpi_ut_trace_ptr(__LINE__,&_debug_info,(void *)b) 503#define ACPI_GET_FUNCTION_NAME _acpi_function_name
500#define ACPI_FUNCTION_TRACE_U32(a,b) ACPI_FUNCTION_NAME(a) \ 504/*
501 acpi_ut_trace_u32(__LINE__,&_debug_info,(u32)b) 505 * The Name parameter should be the procedure name as a quoted string.
502#define ACPI_FUNCTION_TRACE_STR(a,b) ACPI_FUNCTION_NAME(a) \ 506 * This is declared as a local string ("my_function_name") so that it can
503 acpi_ut_trace_str(__LINE__,&_debug_info,(char *)b) 507 * be also used by the function exit macros below.
504 508 */
505#define ACPI_FUNCTION_ENTRY() acpi_ut_track_stack_ptr() 509#define ACPI_FUNCTION_NAME(name) char *_acpi_function_name = name;
510
511#else
512/* Compiler supports __FUNCTION__ (or equivalent) -- Ignore this macro */
513
514#define ACPI_FUNCTION_NAME(name)
515#endif
516
517#define ACPI_FUNCTION_TRACE(a) ACPI_FUNCTION_NAME(a) \
518 acpi_ut_trace(ACPI_DEBUG_PARAMETERS)
519#define ACPI_FUNCTION_TRACE_PTR(a,b) ACPI_FUNCTION_NAME(a) \
520 acpi_ut_trace_ptr(ACPI_DEBUG_PARAMETERS,(void *)b)
521#define ACPI_FUNCTION_TRACE_U32(a,b) ACPI_FUNCTION_NAME(a) \
522 acpi_ut_trace_u32(ACPI_DEBUG_PARAMETERS,(u32)b)
523#define ACPI_FUNCTION_TRACE_STR(a,b) ACPI_FUNCTION_NAME(a) \
524 acpi_ut_trace_str(ACPI_DEBUG_PARAMETERS,(char *)b)
525
526#define ACPI_FUNCTION_ENTRY() acpi_ut_track_stack_ptr()
506 527
507/* 528/*
508 * Function exit tracing. 529 * Function exit tracing.
509 * WARNING: These macros include a return statement. This is usually considered 530 * WARNING: These macros include a return statement. This is usually considered
510 * bad form, but having a separate exit macro is very ugly and difficult to maintain. 531 * bad form, but having a separate exit macro is very ugly and difficult to maintain.
511 * One of the FUNCTION_TRACE macros above must be used in conjunction with these macros 532 * One of the FUNCTION_TRACE macros above must be used in conjunction with these macros
512 * so that "_proc_name" is defined. 533 * so that "_acpi_function_name" is defined.
513 */ 534 */
514#ifdef ACPI_USE_DO_WHILE_0 535#ifdef ACPI_USE_DO_WHILE_0
515#define ACPI_DO_WHILE0(a) do a while(0) 536#define ACPI_DO_WHILE0(a) do a while(0)
@@ -517,10 +538,10 @@
517#define ACPI_DO_WHILE0(a) a 538#define ACPI_DO_WHILE0(a) a
518#endif 539#endif
519 540
520#define return_VOID ACPI_DO_WHILE0 ({acpi_ut_exit(__LINE__,&_debug_info);return;}) 541#define return_VOID ACPI_DO_WHILE0 ({acpi_ut_exit(ACPI_DEBUG_PARAMETERS);return;})
521#define return_ACPI_STATUS(s) ACPI_DO_WHILE0 ({acpi_ut_status_exit(__LINE__,&_debug_info,(s));return((s));}) 542#define return_ACPI_STATUS(s) ACPI_DO_WHILE0 ({acpi_ut_status_exit(ACPI_DEBUG_PARAMETERS,(s));return((s));})
522#define return_VALUE(s) ACPI_DO_WHILE0 ({acpi_ut_value_exit(__LINE__,&_debug_info,(acpi_integer)(s));return((s));}) 543#define return_VALUE(s) ACPI_DO_WHILE0 ({acpi_ut_value_exit(ACPI_DEBUG_PARAMETERS,(acpi_integer)(s));return((s));})
523#define return_PTR(s) ACPI_DO_WHILE0 ({acpi_ut_ptr_exit(__LINE__,&_debug_info,(u8 *)(s));return((s));}) 544#define return_PTR(s) ACPI_DO_WHILE0 ({acpi_ut_ptr_exit(ACPI_DEBUG_PARAMETERS,(u8 *)(s));return((s));})
524 545
525/* Conditional execution */ 546/* Conditional execution */
526 547
@@ -535,7 +556,7 @@
535/* Stack and buffer dumping */ 556/* Stack and buffer dumping */
536 557
537#define ACPI_DUMP_STACK_ENTRY(a) acpi_ex_dump_operand((a),0) 558#define ACPI_DUMP_STACK_ENTRY(a) acpi_ex_dump_operand((a),0)
538#define ACPI_DUMP_OPERANDS(a,b,c,d,e) acpi_ex_dump_operands(a,b,c,d,e,_THIS_MODULE,__LINE__) 559#define ACPI_DUMP_OPERANDS(a,b,c,d,e) acpi_ex_dump_operands(a,b,c,d,e,_acpi_module_name,__LINE__)
539 560
540 561
541#define ACPI_DUMP_ENTRY(a,b) acpi_ns_dump_entry (a,b) 562#define ACPI_DUMP_ENTRY(a,b) acpi_ns_dump_entry (a,b)
@@ -572,7 +593,7 @@
572 * leaving no executable debug code! 593 * leaving no executable debug code!
573 */ 594 */
574#define ACPI_MODULE_NAME(name) 595#define ACPI_MODULE_NAME(name)
575#define _THIS_MODULE "" 596#define _acpi_module_name ""
576 597
577#define ACPI_DEBUG_EXEC(a) 598#define ACPI_DEBUG_EXEC(a)
578#define ACPI_NORMAL_EXEC(a) a; 599#define ACPI_NORMAL_EXEC(a) a;
@@ -648,19 +669,18 @@
648 669
649/* Memory allocation */ 670/* Memory allocation */
650 671
651#define ACPI_MEM_ALLOCATE(a) acpi_ut_allocate((acpi_size)(a),_COMPONENT,_THIS_MODULE,__LINE__) 672#define ACPI_MEM_ALLOCATE(a) acpi_ut_allocate((acpi_size)(a),_COMPONENT,_acpi_module_name,__LINE__)
652#define ACPI_MEM_CALLOCATE(a) acpi_ut_callocate((acpi_size)(a), _COMPONENT,_THIS_MODULE,__LINE__) 673#define ACPI_MEM_CALLOCATE(a) acpi_ut_callocate((acpi_size)(a), _COMPONENT,_acpi_module_name,__LINE__)
653#define ACPI_MEM_FREE(a) acpi_os_free(a) 674#define ACPI_MEM_FREE(a) acpi_os_free(a)
654#define ACPI_MEM_TRACKING(a) 675#define ACPI_MEM_TRACKING(a)
655 676
656
657#else 677#else
658 678
659/* Memory allocation */ 679/* Memory allocation */
660 680
661#define ACPI_MEM_ALLOCATE(a) acpi_ut_allocate_and_track((acpi_size)(a),_COMPONENT,_THIS_MODULE,__LINE__) 681#define ACPI_MEM_ALLOCATE(a) acpi_ut_allocate_and_track((acpi_size)(a),_COMPONENT,_acpi_module_name,__LINE__)
662#define ACPI_MEM_CALLOCATE(a) acpi_ut_callocate_and_track((acpi_size)(a), _COMPONENT,_THIS_MODULE,__LINE__) 682#define ACPI_MEM_CALLOCATE(a) acpi_ut_callocate_and_track((acpi_size)(a), _COMPONENT,_acpi_module_name,__LINE__)
663#define ACPI_MEM_FREE(a) acpi_ut_free_and_track(a,_COMPONENT,_THIS_MODULE,__LINE__) 683#define ACPI_MEM_FREE(a) acpi_ut_free_and_track(a,_COMPONENT,_acpi_module_name,__LINE__)
664#define ACPI_MEM_TRACKING(a) a 684#define ACPI_MEM_TRACKING(a) a
665 685
666#endif /* ACPI_DBG_TRACK_ALLOCATIONS */ 686#endif /* ACPI_DBG_TRACK_ALLOCATIONS */
diff --git a/include/acpi/acnamesp.h b/include/acpi/acnamesp.h
index d1b3ce80056..870e2544bd9 100644
--- a/include/acpi/acnamesp.h
+++ b/include/acpi/acnamesp.h
@@ -163,7 +163,7 @@ acpi_ns_delete_namespace_subtree (
163 163
164void 164void
165acpi_ns_delete_namespace_by_owner ( 165acpi_ns_delete_namespace_by_owner (
166 u16 table_id); 166 acpi_owner_id owner_id);
167 167
168void 168void
169acpi_ns_detach_object ( 169acpi_ns_detach_object (
@@ -219,7 +219,7 @@ acpi_ns_dump_objects (
219 acpi_object_type type, 219 acpi_object_type type,
220 u8 display_type, 220 u8 display_type,
221 u32 max_depth, 221 u32 max_depth,
222 u32 ownder_id, 222 acpi_owner_id owner_id,
223 acpi_handle start_handle); 223 acpi_handle start_handle);
224#endif /* ACPI_FUTURE_USAGE */ 224#endif /* ACPI_FUTURE_USAGE */
225 225
diff --git a/include/acpi/acobject.h b/include/acpi/acobject.h
index e079b94e4fc..34f9d1f1f79 100644
--- a/include/acpi/acobject.h
+++ b/include/acpi/acobject.h
@@ -199,7 +199,7 @@ struct acpi_object_method
199 ACPI_INTERNAL_METHOD implementation; 199 ACPI_INTERNAL_METHOD implementation;
200 u8 concurrency; 200 u8 concurrency;
201 u8 thread_count; 201 u8 thread_count;
202 acpi_owner_id owning_id; 202 acpi_owner_id owner_id;
203}; 203};
204 204
205 205
diff --git a/include/acpi/acoutput.h b/include/acpi/acoutput.h
index 2fbe180fee6..d7e828cb84b 100644
--- a/include/acpi/acoutput.h
+++ b/include/acpi/acoutput.h
@@ -136,7 +136,7 @@
136/* 136/*
137 * Debug level macros that are used in the DEBUG_PRINT macros 137 * Debug level macros that are used in the DEBUG_PRINT macros
138 */ 138 */
139#define ACPI_DEBUG_LEVEL(dl) (u32) dl,__LINE__,&_debug_info 139#define ACPI_DEBUG_LEVEL(dl) (u32) dl,ACPI_DEBUG_PARAMETERS
140 140
141/* Exception level -- used in the global "debug_level" */ 141/* Exception level -- used in the global "debug_level" */
142 142
diff --git a/include/acpi/acstruct.h b/include/acpi/acstruct.h
index a2025a8da00..f375c17ad0b 100644
--- a/include/acpi/acstruct.h
+++ b/include/acpi/acstruct.h
@@ -71,7 +71,6 @@ struct acpi_walk_state
71 u8 walk_type; 71 u8 walk_type;
72 acpi_owner_id owner_id; /* Owner of objects created during the walk */ 72 acpi_owner_id owner_id; /* Owner of objects created during the walk */
73 u8 last_predicate; /* Result of last predicate */ 73 u8 last_predicate; /* Result of last predicate */
74 u8 reserved; /* For alignment */
75 u8 current_result; /* */ 74 u8 current_result; /* */
76 u8 next_op_info; /* Info about next_op */ 75 u8 next_op_info; /* Info about next_op */
77 u8 num_operands; /* Stack pointer for Operands[] array */ 76 u8 num_operands; /* Stack pointer for Operands[] array */
@@ -154,17 +153,17 @@ struct acpi_device_walk_info
154struct acpi_walk_info 153struct acpi_walk_info
155{ 154{
156 u32 debug_level; 155 u32 debug_level;
157 u32 owner_id; 156 acpi_owner_id owner_id;
158 u8 display_type; 157 u8 display_type;
159}; 158};
160 159
161/* Display Types */ 160/* Display Types */
162 161
163#define ACPI_DISPLAY_SUMMARY 0 162#define ACPI_DISPLAY_SUMMARY (u8) 0
164#define ACPI_DISPLAY_OBJECTS 1 163#define ACPI_DISPLAY_OBJECTS (u8) 1
165#define ACPI_DISPLAY_MASK 1 164#define ACPI_DISPLAY_MASK (u8) 1
166 165
167#define ACPI_DISPLAY_SHORT 2 166#define ACPI_DISPLAY_SHORT (u8) 2
168 167
169struct acpi_get_devices_info 168struct acpi_get_devices_info
170{ 169{
diff --git a/include/acpi/actables.h b/include/acpi/actables.h
index 39df92e21a0..97e6f12da52 100644
--- a/include/acpi/actables.h
+++ b/include/acpi/actables.h
@@ -169,6 +169,10 @@ acpi_status
169acpi_tb_get_table_rsdt ( 169acpi_tb_get_table_rsdt (
170 void); 170 void);
171 171
172acpi_status
173acpi_tb_validate_rsdp (
174 struct rsdp_descriptor *rsdp);
175
172 176
173/* 177/*
174 * tbutils - common table utilities 178 * tbutils - common table utilities
diff --git a/include/acpi/actbl.h b/include/acpi/actbl.h
index b5cdcca444c..c1e9110c366 100644
--- a/include/acpi/actbl.h
+++ b/include/acpi/actbl.h
@@ -86,15 +86,15 @@
86 */ 86 */
87struct rsdp_descriptor /* Root System Descriptor Pointer */ 87struct rsdp_descriptor /* Root System Descriptor Pointer */
88{ 88{
89 char signature [8]; /* ACPI signature, contains "RSD PTR " */ 89 char signature[8]; /* ACPI signature, contains "RSD PTR " */
90 u8 checksum; /* To make sum of struct == 0 */ 90 u8 checksum; /* ACPI 1.0 checksum */
91 char oem_id [6]; /* OEM identification */ 91 char oem_id[6]; /* OEM identification */
92 u8 revision; /* Must be 0 for 1.0, 2 for 2.0 */ 92 u8 revision; /* Must be (0) for ACPI 1.0 or (2) for ACPI 2.0+ */
93 u32 rsdt_physical_address; /* 32-bit physical address of RSDT */ 93 u32 rsdt_physical_address; /* 32-bit physical address of the RSDT */
94 u32 length; /* XSDT Length in bytes including hdr */ 94 u32 length; /* XSDT Length in bytes, including header */
95 u64 xsdt_physical_address; /* 64-bit physical address of XSDT */ 95 u64 xsdt_physical_address; /* 64-bit physical address of the XSDT */
96 u8 extended_checksum; /* Checksum of entire table */ 96 u8 extended_checksum; /* Checksum of entire table (ACPI 2.0) */
97 char reserved [3]; /* Reserved field must be 0 */ 97 char reserved[3]; /* Reserved, must be zero */
98}; 98};
99 99
100 100
@@ -107,15 +107,15 @@ struct acpi_common_facs /* Common FACS for internal use */
107 107
108 108
109#define ACPI_TABLE_HEADER_DEF /* ACPI common table header */ \ 109#define ACPI_TABLE_HEADER_DEF /* ACPI common table header */ \
110 char signature [4]; /* ACPI signature (4 ASCII characters) */\ 110 char signature[4]; /* ASCII table signature */\
111 u32 length; /* Length of table, in bytes, including header */\ 111 u32 length; /* Length of table in bytes, including this header */\
112 u8 revision; /* ACPI Specification minor version # */\ 112 u8 revision; /* ACPI Specification minor version # */\
113 u8 checksum; /* To make sum of entire table == 0 */\ 113 u8 checksum; /* To make sum of entire table == 0 */\
114 char oem_id [6]; /* OEM identification */\ 114 char oem_id[6]; /* ASCII OEM identification */\
115 char oem_table_id [8]; /* OEM table identification */\ 115 char oem_table_id[8]; /* ASCII OEM table identification */\
116 u32 oem_revision; /* OEM revision number */\ 116 u32 oem_revision; /* OEM revision number */\
117 char asl_compiler_id [4]; /* ASL compiler vendor ID */\ 117 char asl_compiler_id [4]; /* ASCII ASL compiler vendor ID */\
118 u32 asl_compiler_revision; /* ASL compiler revision number */ 118 u32 asl_compiler_revision; /* ASL compiler version */
119 119
120 120
121struct acpi_table_header /* ACPI common table header */ 121struct acpi_table_header /* ACPI common table header */
@@ -139,8 +139,12 @@ struct multiple_apic_table
139{ 139{
140 ACPI_TABLE_HEADER_DEF /* ACPI common table header */ 140 ACPI_TABLE_HEADER_DEF /* ACPI common table header */
141 u32 local_apic_address; /* Physical address of local APIC */ 141 u32 local_apic_address; /* Physical address of local APIC */
142 u32 PCATcompat : 1; /* A one indicates system also has dual 8259s */ 142
143 u32 reserved1 : 31; 143 /* Flags (32 bits) */
144
145 u8 PCATcompat : 1; /* 00: System also has dual 8259s */
146 u8 : 7; /* 01-07: Reserved, must be zero */
147 u8 reserved1[3]; /* 08-31: Reserved, must be zero */
144}; 148};
145 149
146/* Values for Type in APIC_HEADER_DEF */ 150/* Values for Type in APIC_HEADER_DEF */
@@ -180,16 +184,18 @@ struct apic_header
180#define TRIGGER_RESERVED 2 184#define TRIGGER_RESERVED 2
181#define TRIGGER_LEVEL 3 185#define TRIGGER_LEVEL 3
182 186
183/* Common flag definitions */ 187/* Common flag definitions (16 bits each) */
184 188
185#define MPS_INTI_FLAGS \ 189#define MPS_INTI_FLAGS \
186 u16 polarity : 2; /* Polarity of APIC I/O input signals */\ 190 u8 polarity : 2; /* 00-01: Polarity of APIC I/O input signals */\
187 u16 trigger_mode : 2; /* Trigger mode of APIC input signals */\ 191 u8 trigger_mode : 2; /* 02-03: Trigger mode of APIC input signals */\
188 u16 reserved1 : 12; /* Reserved, must be zero */ 192 u8 : 4; /* 04-07: Reserved, must be zero */\
193 u8 reserved1; /* 08-15: Reserved, must be zero */
189 194
190#define LOCAL_APIC_FLAGS \ 195#define LOCAL_APIC_FLAGS \
191 u32 processor_enabled: 1; /* Processor is usable if set */\ 196 u8 processor_enabled: 1; /* 00: Processor is usable if set */\
192 u32 reserved2 : 31; /* Reserved, must be zero */ 197 u8 : 7; /* 01-07: Reserved, must be zero */\
198 u8 reserved2; /* 08-15: Reserved, must be zero */
193 199
194/* Sub-structures for MADT */ 200/* Sub-structures for MADT */
195 201
@@ -238,7 +244,7 @@ struct madt_local_apic_nmi
238struct madt_address_override 244struct madt_address_override
239{ 245{
240 APIC_HEADER_DEF 246 APIC_HEADER_DEF
241 u16 reserved; /* Reserved - must be zero */ 247 u16 reserved; /* Reserved, must be zero */
242 u64 address; /* APIC physical address */ 248 u64 address; /* APIC physical address */
243}; 249};
244 250
@@ -246,7 +252,7 @@ struct madt_io_sapic
246{ 252{
247 APIC_HEADER_DEF 253 APIC_HEADER_DEF
248 u8 io_sapic_id; /* I/O SAPIC ID */ 254 u8 io_sapic_id; /* I/O SAPIC ID */
249 u8 reserved; /* Reserved - must be zero */ 255 u8 reserved; /* Reserved, must be zero */
250 u32 interrupt_base; /* Glocal interrupt for SAPIC start */ 256 u32 interrupt_base; /* Glocal interrupt for SAPIC start */
251 u64 address; /* SAPIC physical address */ 257 u64 address; /* SAPIC physical address */
252}; 258};
@@ -257,7 +263,7 @@ struct madt_local_sapic
257 u8 processor_id; /* ACPI processor id */ 263 u8 processor_id; /* ACPI processor id */
258 u8 local_sapic_id; /* SAPIC ID */ 264 u8 local_sapic_id; /* SAPIC ID */
259 u8 local_sapic_eid; /* SAPIC EID */ 265 u8 local_sapic_eid; /* SAPIC EID */
260 u8 reserved [3]; /* Reserved - must be zero */ 266 u8 reserved[3]; /* Reserved, must be zero */
261 LOCAL_APIC_FLAGS 267 LOCAL_APIC_FLAGS
262 u32 processor_uID; /* Numeric UID - ACPI 3.0 */ 268 u32 processor_uID; /* Numeric UID - ACPI 3.0 */
263 char processor_uIDstring[1]; /* String UID - ACPI 3.0 */ 269 char processor_uIDstring[1]; /* String UID - ACPI 3.0 */
diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h
index 33de5f4d2cc..93c175a4f44 100644
--- a/include/acpi/actbl1.h
+++ b/include/acpi/actbl1.h
@@ -52,8 +52,7 @@
52struct rsdt_descriptor_rev1 52struct rsdt_descriptor_rev1
53{ 53{
54 ACPI_TABLE_HEADER_DEF /* ACPI common table header */ 54 ACPI_TABLE_HEADER_DEF /* ACPI common table header */
55 u32 table_offset_entry [1]; /* Array of pointers to other */ 55 u32 table_offset_entry[1]; /* Array of pointers to ACPI tables */
56 /* ACPI tables */
57}; 56};
58 57
59 58
@@ -62,14 +61,19 @@ struct rsdt_descriptor_rev1
62 */ 61 */
63struct facs_descriptor_rev1 62struct facs_descriptor_rev1
64{ 63{
65 char signature[4]; /* ACPI Signature */ 64 char signature[4]; /* ASCII table signature */
66 u32 length; /* Length of structure, in bytes */ 65 u32 length; /* Length of structure in bytes */
67 u32 hardware_signature; /* Hardware configuration signature */ 66 u32 hardware_signature; /* Hardware configuration signature */
68 u32 firmware_waking_vector; /* ACPI OS waking vector */ 67 u32 firmware_waking_vector; /* ACPI OS waking vector */
69 u32 global_lock; /* Global Lock */ 68 u32 global_lock; /* Global Lock */
70 u32 S4bios_f : 1; /* Indicates if S4BIOS support is present */ 69
71 u32 reserved1 : 31; /* Must be 0 */ 70 /* Flags (32 bits) */
72 u8 resverved3 [40]; /* Reserved - must be zero */ 71
72 u8 S4bios_f : 1; /* 00: S4BIOS support is present */
73 u8 : 7; /* 01-07: Reserved, must be zero */
74 u8 reserved1[3]; /* 08-31: Reserved, must be zero */
75
76 u8 reserved2[40]; /* Reserved, must be zero */
73}; 77};
74 78
75 79
@@ -82,13 +86,13 @@ struct fadt_descriptor_rev1
82 u32 firmware_ctrl; /* Physical address of FACS */ 86 u32 firmware_ctrl; /* Physical address of FACS */
83 u32 dsdt; /* Physical address of DSDT */ 87 u32 dsdt; /* Physical address of DSDT */
84 u8 model; /* System Interrupt Model */ 88 u8 model; /* System Interrupt Model */
85 u8 reserved1; /* Reserved */ 89 u8 reserved1; /* Reserved, must be zero */
86 u16 sci_int; /* System vector of SCI interrupt */ 90 u16 sci_int; /* System vector of SCI interrupt */
87 u32 smi_cmd; /* Port address of SMI command port */ 91 u32 smi_cmd; /* Port address of SMI command port */
88 u8 acpi_enable; /* Value to write to smi_cmd to enable ACPI */ 92 u8 acpi_enable; /* Value to write to smi_cmd to enable ACPI */
89 u8 acpi_disable; /* Value to write to smi_cmd to disable ACPI */ 93 u8 acpi_disable; /* Value to write to smi_cmd to disable ACPI */
90 u8 S4bios_req; /* Value to write to SMI CMD to enter S4BIOS state */ 94 u8 S4bios_req; /* Value to write to SMI CMD to enter S4BIOS state */
91 u8 reserved2; /* Reserved - must be zero */ 95 u8 reserved2; /* Reserved, must be zero */
92 u32 pm1a_evt_blk; /* Port address of Power Mgt 1a acpi_event Reg Blk */ 96 u32 pm1a_evt_blk; /* Port address of Power Mgt 1a acpi_event Reg Blk */
93 u32 pm1b_evt_blk; /* Port address of Power Mgt 1b acpi_event Reg Blk */ 97 u32 pm1b_evt_blk; /* Port address of Power Mgt 1b acpi_event Reg Blk */
94 u32 pm1a_cnt_blk; /* Port address of Power Mgt 1a Control Reg Blk */ 98 u32 pm1a_cnt_blk; /* Port address of Power Mgt 1a Control Reg Blk */
@@ -104,7 +108,7 @@ struct fadt_descriptor_rev1
104 u8 gpe0_blk_len; /* Byte Length of ports at gpe0_blk */ 108 u8 gpe0_blk_len; /* Byte Length of ports at gpe0_blk */
105 u8 gpe1_blk_len; /* Byte Length of ports at gpe1_blk */ 109 u8 gpe1_blk_len; /* Byte Length of ports at gpe1_blk */
106 u8 gpe1_base; /* Offset in gpe model where gpe1 events start */ 110 u8 gpe1_base; /* Offset in gpe model where gpe1 events start */
107 u8 reserved3; /* Reserved */ 111 u8 reserved3; /* Reserved, must be zero */
108 u16 plvl2_lat; /* Worst case HW latency to enter/exit C2 state */ 112 u16 plvl2_lat; /* Worst case HW latency to enter/exit C2 state */
109 u16 plvl3_lat; /* Worst case HW latency to enter/exit C3 state */ 113 u16 plvl3_lat; /* Worst case HW latency to enter/exit C3 state */
110 u16 flush_size; /* Size of area read to flush caches */ 114 u16 flush_size; /* Size of area read to flush caches */
@@ -114,19 +118,21 @@ struct fadt_descriptor_rev1
114 u8 day_alrm; /* Index to day-of-month alarm in RTC CMOS RAM */ 118 u8 day_alrm; /* Index to day-of-month alarm in RTC CMOS RAM */
115 u8 mon_alrm; /* Index to month-of-year alarm in RTC CMOS RAM */ 119 u8 mon_alrm; /* Index to month-of-year alarm in RTC CMOS RAM */
116 u8 century; /* Index to century in RTC CMOS RAM */ 120 u8 century; /* Index to century in RTC CMOS RAM */
117 u8 reserved4; /* Reserved */ 121 u8 reserved4[3]; /* Reserved, must be zero */
118 u8 reserved4a; /* Reserved */ 122
119 u8 reserved4b; /* Reserved */ 123 /* Flags (32 bits) */
120 u32 wb_invd : 1; /* The wbinvd instruction works properly */ 124
121 u32 wb_invd_flush : 1; /* The wbinvd flushes but does not invalidate */ 125 u8 wb_invd : 1; /* 00: The wbinvd instruction works properly */
122 u32 proc_c1 : 1; /* All processors support C1 state */ 126 u8 wb_invd_flush : 1; /* 01: The wbinvd flushes but does not invalidate */
123 u32 plvl2_up : 1; /* C2 state works on MP system */ 127 u8 proc_c1 : 1; /* 02: All processors support C1 state */
124 u32 pwr_button : 1; /* Power button is handled as a generic feature */ 128 u8 plvl2_up : 1; /* 03: C2 state works on MP system */
125 u32 sleep_button : 1; /* Sleep button is handled as a generic feature, or not present */ 129 u8 pwr_button : 1; /* 04: Power button is handled as a generic feature */
126 u32 fixed_rTC : 1; /* RTC wakeup stat not in fixed register space */ 130 u8 sleep_button : 1; /* 05: Sleep button is handled as a generic feature, or not present */
127 u32 rtcs4 : 1; /* RTC wakeup stat not possible from S4 */ 131 u8 fixed_rTC : 1; /* 06: RTC wakeup stat not in fixed register space */
128 u32 tmr_val_ext : 1; /* The tmr_val width is 32 bits (0 = 24 bits) */ 132 u8 rtcs4 : 1; /* 07: RTC wakeup stat not possible from S4 */
129 u32 reserved5 : 23; /* Reserved - must be zero */ 133 u8 tmr_val_ext : 1; /* 08: tmr_val width is 32 bits (0 = 24 bits) */
134 u8 : 7; /* 09-15: Reserved, must be zero */
135 u8 reserved5[2]; /* 16-31: Reserved, must be zero */
130}; 136};
131 137
132#pragma pack() 138#pragma pack()
diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h
index e1729c967e0..84ce5abbd6f 100644
--- a/include/acpi/actbl2.h
+++ b/include/acpi/actbl2.h
@@ -73,8 +73,7 @@
73struct rsdt_descriptor_rev2 73struct rsdt_descriptor_rev2
74{ 74{
75 ACPI_TABLE_HEADER_DEF /* ACPI common table header */ 75 ACPI_TABLE_HEADER_DEF /* ACPI common table header */
76 u32 table_offset_entry [1]; /* Array of pointers to */ 76 u32 table_offset_entry[1]; /* Array of pointers to ACPI tables */
77 /* ACPI table headers */
78}; 77};
79 78
80 79
@@ -84,8 +83,7 @@ struct rsdt_descriptor_rev2
84struct xsdt_descriptor_rev2 83struct xsdt_descriptor_rev2
85{ 84{
86 ACPI_TABLE_HEADER_DEF /* ACPI common table header */ 85 ACPI_TABLE_HEADER_DEF /* ACPI common table header */
87 u64 table_offset_entry [1]; /* Array of pointers to */ 86 u64 table_offset_entry[1]; /* Array of pointers to ACPI tables */
88 /* ACPI table headers */
89}; 87};
90 88
91 89
@@ -94,16 +92,21 @@ struct xsdt_descriptor_rev2
94 */ 92 */
95struct facs_descriptor_rev2 93struct facs_descriptor_rev2
96{ 94{
97 char signature[4]; /* ACPI signature */ 95 char signature[4]; /* ASCII table signature */
98 u32 length; /* Length of structure, in bytes */ 96 u32 length; /* Length of structure, in bytes */
99 u32 hardware_signature; /* Hardware configuration signature */ 97 u32 hardware_signature; /* Hardware configuration signature */
100 u32 firmware_waking_vector; /* 32bit physical address of the Firmware Waking Vector. */ 98 u32 firmware_waking_vector; /* 32-bit physical address of the Firmware Waking Vector. */
101 u32 global_lock; /* Global Lock used to synchronize access to shared hardware resources */ 99 u32 global_lock; /* Global Lock used to synchronize access to shared hardware resources */
102 u32 S4bios_f : 1; /* S4Bios_f - Indicates if S4BIOS support is present */ 100
103 u32 reserved1 : 31; /* Must be 0 */ 101 /* Flags (32 bits) */
104 u64 xfirmware_waking_vector; /* 64bit physical address of the Firmware Waking Vector. */ 102
103 u8 S4bios_f : 1; /* 00: S4BIOS support is present */
104 u8 : 7; /* 01-07: Reserved, must be zero */
105 u8 reserved1[3]; /* 08-31: Reserved, must be zero */
106
107 u64 xfirmware_waking_vector; /* 64-bit physical address of the Firmware Waking Vector. */
105 u8 version; /* Version of this table */ 108 u8 version; /* Version of this table */
106 u8 reserved3 [31]; /* Reserved - must be zero */ 109 u8 reserved3[31]; /* Reserved, must be zero */
107}; 110};
108 111
109 112
@@ -165,35 +168,37 @@ struct fadt_descriptor_rev2
165{ 168{
166 ACPI_TABLE_HEADER_DEF /* ACPI common table header */ 169 ACPI_TABLE_HEADER_DEF /* ACPI common table header */
167 FADT_REV2_COMMON 170 FADT_REV2_COMMON
168 u8 reserved2; /* Reserved */ 171 u8 reserved2; /* Reserved, must be zero */
169 u32 wb_invd : 1; /* The wbinvd instruction works properly */ 172
170 u32 wb_invd_flush : 1; /* The wbinvd flushes but does not invalidate */ 173 /* Flags (32 bits) */
171 u32 proc_c1 : 1; /* All processors support C1 state */ 174
172 u32 plvl2_up : 1; /* C2 state works on MP system */ 175 u8 wb_invd : 1; /* 00: The wbinvd instruction works properly */
173 u32 pwr_button : 1; /* Power button is handled as a generic feature */ 176 u8 wb_invd_flush : 1; /* 01: The wbinvd flushes but does not invalidate */
174 u32 sleep_button : 1; /* Sleep button is handled as a generic feature, or not present */ 177 u8 proc_c1 : 1; /* 02: All processors support C1 state */
175 u32 fixed_rTC : 1; /* RTC wakeup stat not in fixed register space */ 178 u8 plvl2_up : 1; /* 03: C2 state works on MP system */
176 u32 rtcs4 : 1; /* RTC wakeup stat not possible from S4 */ 179 u8 pwr_button : 1; /* 04: Power button is handled as a generic feature */
177 u32 tmr_val_ext : 1; /* Indicates tmr_val is 32 bits 0=24-bits */ 180 u8 sleep_button : 1; /* 05: Sleep button is handled as a generic feature, or not present */
178 u32 dock_cap : 1; /* Supports Docking */ 181 u8 fixed_rTC : 1; /* 06: RTC wakeup stat not in fixed register space */
179 u32 reset_reg_sup : 1; /* Indicates system supports system reset via the FADT RESET_REG */ 182 u8 rtcs4 : 1; /* 07: RTC wakeup stat not possible from S4 */
180 u32 sealed_case : 1; /* Indicates system has no internal expansion capabilities and case is sealed */ 183 u8 tmr_val_ext : 1; /* 08: tmr_val is 32 bits 0=24-bits */
181 u32 headless : 1; /* Indicates system does not have local video capabilities or local input devices */ 184 u8 dock_cap : 1; /* 09: Docking supported */
182 u32 cpu_sw_sleep : 1; /* Indicates to OSPM that a processor native instruction */ 185 u8 reset_reg_sup : 1; /* 10: System reset via the FADT RESET_REG supported */
183 /* must be executed after writing the SLP_TYPx register */ 186 u8 sealed_case : 1; /* 11: No internal expansion capabilities and case is sealed */
184 /* ACPI 3.0 flag bits */ 187 u8 headless : 1; /* 12: No local video capabilities or local input devices */
185 188 u8 cpu_sw_sleep : 1; /* 13: Must execute native instruction after writing SLP_TYPx register */
186 u32 pci_exp_wak : 1; /* System supports PCIEXP_WAKE (STS/EN) bits */ 189
187 u32 use_platform_clock : 1; /* OSPM should use platform-provided timer */ 190 u8 pci_exp_wak : 1; /* 14: System supports PCIEXP_WAKE (STS/EN) bits (ACPI 3.0) */
188 u32 S4rtc_sts_valid : 1; /* Contents of RTC_STS valid after S4 wake */ 191 u8 use_platform_clock : 1; /* 15: OSPM should use platform-provided timer (ACPI 3.0) */
189 u32 remote_power_on_capable : 1; /* System is compatible with remote power on */ 192 u8 S4rtc_sts_valid : 1; /* 16: Contents of RTC_STS valid after S4 wake (ACPI 3.0) */
190 u32 force_apic_cluster_model : 1; /* All local APICs must use cluster model */ 193 u8 remote_power_on_capable : 1; /* 17: System is compatible with remote power on (ACPI 3.0) */
191 u32 force_apic_physical_destination_mode : 1; /* all local x_aPICs must use physical dest mode */ 194 u8 force_apic_cluster_model : 1; /* 18: All local APICs must use cluster model (ACPI 3.0) */
192 u32 reserved6 : 12;/* Reserved - must be zero */ 195 u8 force_apic_physical_destination_mode : 1; /* 19: all local x_aPICs must use physical dest mode (ACPI 3.0) */
196 u8 : 4; /* 20-23: Reserved, must be zero */
197 u8 reserved3; /* 24-31: Reserved, must be zero */
193 198
194 struct acpi_generic_address reset_register; /* Reset register address in GAS format */ 199 struct acpi_generic_address reset_register; /* Reset register address in GAS format */
195 u8 reset_value; /* Value to write to the reset_register port to reset the system */ 200 u8 reset_value; /* Value to write to the reset_register port to reset the system */
196 u8 reserved7[3]; /* These three bytes must be zero */ 201 u8 reserved4[3]; /* These three bytes must be zero */
197 u64 xfirmware_ctrl; /* 64-bit physical address of FACS */ 202 u64 xfirmware_ctrl; /* 64-bit physical address of FACS */
198 u64 Xdsdt; /* 64-bit physical address of DSDT */ 203 u64 Xdsdt; /* 64-bit physical address of DSDT */
199 struct acpi_generic_address xpm1a_evt_blk; /* Extended Power Mgt 1a acpi_event Reg Blk address */ 204 struct acpi_generic_address xpm1a_evt_blk; /* Extended Power Mgt 1a acpi_event Reg Blk address */
@@ -213,11 +218,11 @@ struct fadt_descriptor_rev2_minus
213{ 218{
214 ACPI_TABLE_HEADER_DEF /* ACPI common table header */ 219 ACPI_TABLE_HEADER_DEF /* ACPI common table header */
215 FADT_REV2_COMMON 220 FADT_REV2_COMMON
216 u8 reserved2; /* Reserved */ 221 u8 reserved2; /* Reserved, must be zero */
217 u32 flags; 222 u32 flags;
218 struct acpi_generic_address reset_register; /* Reset register address in GAS format */ 223 struct acpi_generic_address reset_register; /* Reset register address in GAS format */
219 u8 reset_value; /* Value to write to the reset_register port to reset the system. */ 224 u8 reset_value; /* Value to write to the reset_register port to reset the system. */
220 u8 reserved7[3]; /* These three bytes must be zero */ 225 u8 reserved7[3]; /* Reserved, must be zero */
221}; 226};
222 227
223 228
@@ -242,11 +247,16 @@ struct static_resource_alloc
242 u8 length; 247 u8 length;
243 u8 proximity_domain_lo; 248 u8 proximity_domain_lo;
244 u8 apic_id; 249 u8 apic_id;
245 u32 enabled :1; 250
246 u32 reserved3 :31; 251 /* Flags (32 bits) */
252
253 u8 enabled :1; /* 00: Use affinity structure */
254 u8 :7; /* 01-07: Reserved, must be zero */
255 u8 reserved3[3]; /* 08-31: Reserved, must be zero */
256
247 u8 local_sapic_eid; 257 u8 local_sapic_eid;
248 u8 proximity_domain_hi[3]; 258 u8 proximity_domain_hi[3];
249 u32 reserved4; 259 u32 reserved4; /* Reserved, must be zero */
250}; 260};
251 261
252struct memory_affinity 262struct memory_affinity
@@ -258,18 +268,23 @@ struct memory_affinity
258 u64 base_address; 268 u64 base_address;
259 u64 address_length; 269 u64 address_length;
260 u32 reserved4; 270 u32 reserved4;
261 u32 enabled :1; 271
262 u32 hot_pluggable :1; 272 /* Flags (32 bits) */
263 u32 non_volatile :1; 273
264 u32 reserved5 :29; 274 u8 enabled :1; /* 00: Use affinity structure */
265 u64 reserved6; 275 u8 hot_pluggable :1; /* 01: Memory region is hot pluggable */
276 u8 non_volatile :1; /* 02: Memory is non-volatile */
277 u8 :5; /* 03-07: Reserved, must be zero */
278 u8 reserved5[3]; /* 08-31: Reserved, must be zero */
279
280 u64 reserved6; /* Reserved, must be zero */
266}; 281};
267 282
268struct system_resource_affinity 283struct system_resource_affinity
269{ 284{
270 ACPI_TABLE_HEADER_DEF 285 ACPI_TABLE_HEADER_DEF
271 u32 reserved1; /* Must be value '1' */ 286 u32 reserved1; /* Must be value '1' */
272 u64 reserved2; 287 u64 reserved2; /* Reserved, must be zero */
273}; 288};
274 289
275 290
diff --git a/include/acpi/actypes.h b/include/acpi/actypes.h
index 8cd774a20c6..1895b862ce0 100644
--- a/include/acpi/actypes.h
+++ b/include/acpi/actypes.h
@@ -205,10 +205,11 @@ typedef u32 acpi_size;
205 205
206 206
207/* 207/*
208 * Miscellaneous common types 208 * This type is used for bitfields in ACPI tables. The only type that is
209 * even remotely portable is u8. Anything else is not portable, so
210 * do not add any more bitfield types.
209 */ 211 */
210typedef u16 UINT16_BIT; 212typedef u8 UINT8_BIT;
211typedef u32 UINT32_BIT;
212typedef acpi_native_uint ACPI_PTRDIFF; 213typedef acpi_native_uint ACPI_PTRDIFF;
213 214
214/* 215/*
@@ -243,10 +244,13 @@ struct acpi_pointer
243#define ACPI_LOGMODE_PHYSPTR ACPI_LOGICAL_ADDRESSING | ACPI_PHYSICAL_POINTER 244#define ACPI_LOGMODE_PHYSPTR ACPI_LOGICAL_ADDRESSING | ACPI_PHYSICAL_POINTER
244#define ACPI_LOGMODE_LOGPTR ACPI_LOGICAL_ADDRESSING | ACPI_LOGICAL_POINTER 245#define ACPI_LOGMODE_LOGPTR ACPI_LOGICAL_ADDRESSING | ACPI_LOGICAL_POINTER
245 246
246/* Types for the OS interface layer (OSL) */ 247/*
247 248 * If acpi_cache_t was not defined in the OS-dependent header,
248#ifdef ACPI_USE_LOCAL_CACHE 249 * define it now. This is typically the case where the local cache
249#define acpi_cache_t struct acpi_memory_list 250 * manager implementation is to be used (ACPI_USE_LOCAL_CACHE)
251 */
252#ifndef acpi_cache_t
253#define acpi_cache_t struct acpi_memory_list
250#endif 254#endif
251 255
252/* 256/*
diff --git a/include/acpi/acutils.h b/include/acpi/acutils.h
index e9c1584dd78..9c05c10e379 100644
--- a/include/acpi/acutils.h
+++ b/include/acpi/acutils.h
@@ -120,10 +120,6 @@ u8
120acpi_ut_valid_object_type ( 120acpi_ut_valid_object_type (
121 acpi_object_type type); 121 acpi_object_type type);
122 122
123acpi_owner_id
124acpi_ut_allocate_owner_id (
125 u32 id_type);
126
127 123
128/* 124/*
129 * utinit - miscellaneous initialization and shutdown 125 * utinit - miscellaneous initialization and shutdown
@@ -306,47 +302,63 @@ acpi_ut_track_stack_ptr (
306void 302void
307acpi_ut_trace ( 303acpi_ut_trace (
308 u32 line_number, 304 u32 line_number,
309 struct acpi_debug_print_info *dbg_info); 305 char *function_name,
306 char *module_name,
307 u32 component_id);
310 308
311void 309void
312acpi_ut_trace_ptr ( 310acpi_ut_trace_ptr (
313 u32 line_number, 311 u32 line_number,
314 struct acpi_debug_print_info *dbg_info, 312 char *function_name,
313 char *module_name,
314 u32 component_id,
315 void *pointer); 315 void *pointer);
316 316
317void 317void
318acpi_ut_trace_u32 ( 318acpi_ut_trace_u32 (
319 u32 line_number, 319 u32 line_number,
320 struct acpi_debug_print_info *dbg_info, 320 char *function_name,
321 char *module_name,
322 u32 component_id,
321 u32 integer); 323 u32 integer);
322 324
323void 325void
324acpi_ut_trace_str ( 326acpi_ut_trace_str (
325 u32 line_number, 327 u32 line_number,
326 struct acpi_debug_print_info *dbg_info, 328 char *function_name,
329 char *module_name,
330 u32 component_id,
327 char *string); 331 char *string);
328 332
329void 333void
330acpi_ut_exit ( 334acpi_ut_exit (
331 u32 line_number, 335 u32 line_number,
332 struct acpi_debug_print_info *dbg_info); 336 char *function_name,
337 char *module_name,
338 u32 component_id);
333 339
334void 340void
335acpi_ut_status_exit ( 341acpi_ut_status_exit (
336 u32 line_number, 342 u32 line_number,
337 struct acpi_debug_print_info *dbg_info, 343 char *function_name,
344 char *module_name,
345 u32 component_id,
338 acpi_status status); 346 acpi_status status);
339 347
340void 348void
341acpi_ut_value_exit ( 349acpi_ut_value_exit (
342 u32 line_number, 350 u32 line_number,
343 struct acpi_debug_print_info *dbg_info, 351 char *function_name,
352 char *module_name,
353 u32 component_id,
344 acpi_integer value); 354 acpi_integer value);
345 355
346void 356void
347acpi_ut_ptr_exit ( 357acpi_ut_ptr_exit (
348 u32 line_number, 358 u32 line_number,
349 struct acpi_debug_print_info *dbg_info, 359 char *function_name,
360 char *module_name,
361 u32 component_id,
350 u8 *ptr); 362 u8 *ptr);
351 363
352void 364void
@@ -378,7 +390,9 @@ void ACPI_INTERNAL_VAR_XFACE
378acpi_ut_debug_print ( 390acpi_ut_debug_print (
379 u32 requested_debug_level, 391 u32 requested_debug_level,
380 u32 line_number, 392 u32 line_number,
381 struct acpi_debug_print_info *dbg_info, 393 char *function_name,
394 char *module_name,
395 u32 component_id,
382 char *format, 396 char *format,
383 ...) ACPI_PRINTF_LIKE_FUNC; 397 ...) ACPI_PRINTF_LIKE_FUNC;
384 398
@@ -386,7 +400,9 @@ void ACPI_INTERNAL_VAR_XFACE
386acpi_ut_debug_print_raw ( 400acpi_ut_debug_print_raw (
387 u32 requested_debug_level, 401 u32 requested_debug_level,
388 u32 line_number, 402 u32 line_number,
389 struct acpi_debug_print_info *dbg_info, 403 char *function_name,
404 char *module_name,
405 u32 component_id,
390 char *format, 406 char *format,
391 ...) ACPI_PRINTF_LIKE_FUNC; 407 ...) ACPI_PRINTF_LIKE_FUNC;
392 408
@@ -477,8 +493,8 @@ acpi_ut_allocate_object_desc_dbg (
477 u32 line_number, 493 u32 line_number,
478 u32 component_id); 494 u32 component_id);
479 495
480#define acpi_ut_create_internal_object(t) acpi_ut_create_internal_object_dbg (_THIS_MODULE,__LINE__,_COMPONENT,t) 496#define acpi_ut_create_internal_object(t) acpi_ut_create_internal_object_dbg (_acpi_module_name,__LINE__,_COMPONENT,t)
481#define acpi_ut_allocate_object_desc() acpi_ut_allocate_object_desc_dbg (_THIS_MODULE,__LINE__,_COMPONENT) 497#define acpi_ut_allocate_object_desc() acpi_ut_allocate_object_desc_dbg (_acpi_module_name,__LINE__,_COMPONENT)
482 498
483void 499void
484acpi_ut_delete_object_desc ( 500acpi_ut_delete_object_desc (
@@ -579,6 +595,14 @@ acpi_ut_short_divide (
579 * utmisc 595 * utmisc
580 */ 596 */
581acpi_status 597acpi_status
598acpi_ut_allocate_owner_id (
599 acpi_owner_id *owner_id);
600
601acpi_status
602acpi_ut_release_owner_id (
603 acpi_owner_id owner_id);
604
605acpi_status
582acpi_ut_walk_package_tree ( 606acpi_ut_walk_package_tree (
583 union acpi_operand_object *source_object, 607 union acpi_operand_object *source_object,
584 void *target_object, 608 void *target_object,
diff --git a/include/acpi/platform/acgcc.h b/include/acpi/platform/acgcc.h
index 91fda36b042..39264127574 100644
--- a/include/acpi/platform/acgcc.h
+++ b/include/acpi/platform/acgcc.h
@@ -44,13 +44,17 @@
44#ifndef __ACGCC_H__ 44#ifndef __ACGCC_H__
45#define __ACGCC_H__ 45#define __ACGCC_H__
46 46
47/* Function name is used for debug output. Non-ANSI, compiler-dependent */
48
49#define ACPI_GET_FUNCTION_NAME __FUNCTION__
50
47/* This macro is used to tag functions as "printf-like" because 51/* This macro is used to tag functions as "printf-like" because
48 * some compilers (like GCC) can catch printf format string problems. 52 * some compilers (like GCC) can catch printf format string problems.
49 */ 53 */
50#define ACPI_PRINTF_LIKE_FUNC __attribute__ ((__format__ (__printf__, 4, 5))) 54#define ACPI_PRINTF_LIKE_FUNC __attribute__ ((__format__ (__printf__, 6, 7)))
51 55
52/* Some compilers complain about unused variables. Sometimes we don't want to 56/* Some compilers complain about unused variables. Sometimes we don't want to
53 * use all the variables (most specifically for _THIS_MODULE). This allow us 57 * use all the variables (for example, _acpi_module_name). This allows us
54 * to to tell the compiler warning in a per-variable manner that a variable 58 * to to tell the compiler warning in a per-variable manner that a variable
55 * is unused. 59 * is unused.
56 */ 60 */