ACPICA patches for 2.6.35
Subsystems (4)
Len Brown
reviewerFor the record, here again is the ACPICA queue for 2.6.35.
cheers,
-Len Brown, Intel Open Source Technology Center
Len Brown
reviewerPATCH 1/22 ACPICA: Enhance configuration for output of AML Debug Object
From: Lin Ming <[email protected]>
This change will enable debug object output via a global variable, acpi_gbl_enable_aml_debug_object. This will help with remote machine debugging. Also, moved all debug object support code to a new file, exdebug.c. Entire debug object module can now be configured out of the ACPICA build if desired.
--- drivers/acpi/acpica/Makefile | 2 +- drivers/acpi/acpica/acglobal.h | 5 + drivers/acpi/acpica/acinterp.h | 7 + drivers/acpi/acpica/exdebug.c | 261 ++++++++++++++++++++++++++++++++++++++++ drivers/acpi/acpica/exstore.c | 216 +--------------------------------- include/acpi/acoutput.h | 2 + include/acpi/acpixf.h | 1 + 7 files changed, 278 insertions(+), 216 deletions(-) create mode 100644 drivers/acpi/acpica/exdebug.c
drivers/acpi/acpica/Makefile +1 -1
@@ -19,7 +19,7 @@ acpi-y += evevent.o evregion.o evsci.o evxfevnt.o \ acpi-y += exconfig.o exfield.o exnames.o exoparg6.o exresolv.o exstorob.o\ exconvrt.o exfldio.o exoparg1.o exprep.o exresop.o exsystem.o\ excreate.o exmisc.o exoparg2.o exregion.o exstore.o exutils.o \ - exdump.o exmutex.o exoparg3.o exresnte.o exstoren.o + exdump.o exmutex.o exoparg3.o exresnte.o exstoren.o exdebug.o acpi-y += hwacpi.o hwgpe.o hwregs.o hwsleep.o hwxface.o hwvalid.o
drivers/acpi/acpica/acglobal.h +5 -0
@@ -112,6 +112,11 @@ u8 ACPI_INIT_GLOBAL(acpi_gbl_leave_wake_gpes_disabled, TRUE);*/ u8 ACPI_INIT_GLOBAL (acpi_gbl_use_default_register_widths ,TRUE ); +/* +* Optionally enable output from the AML Debug Object. +*/ +u8 ACPI_INIT_GLOBAL (acpi_gbl_enable_aml_debug_object ,FALSE ); +/* acpi_gbl_FADT is a local copy of the FADT, converted to a common format. */ struct acpi_table_fadt acpi_gbl_FADT;
drivers/acpi/acpica/acinterp.h +7 -0
@@ -121,6 +121,13 @@ acpi_ex_convert_to_target_type(acpi_object_type destination_type, struct acpi_walk_state *walk_state);/* +* exdebug - AML debug object +*/ +void +acpi_ex_do_debug_object (union acpi_operand_object *source_desc, +u32 level,u32 index); + +/* * exfield - ACPI AML (p-code) execution - field manipulation */ acpi_status
drivers/acpi/acpica/exdebug.c new file +261 -0
261 lines not on this page · raw message
drivers/acpi/acpica/exstore.c +1 -215
237 lines not on this page · raw message
include/acpi/acoutput.h +2 -0
@@ -206,6 +206,7 @@#define ACPI_WARNING (plist) acpi_warning plist#define ACPI_EXCEPTION (plist) acpi_exception plist#define ACPI_ERROR (plist) acpi_error plist +#define ACPI_DEBUG_OBJECT (obj,l,i) acpi_ex_do_debug_object(obj,l,i)#else
@@ -215,6 +216,7 @@#define ACPI_WARNING (plist)#define ACPI_EXCEPTION (plist)#define ACPI_ERROR (plist) +#define ACPI_DEBUG_OBJECT (obj,l,i)#endif /* ACPI_NO_ERROR_MESSAGES */
include/acpi/acpixf.h +1 -0
@@ -67,6 +67,7 @@ extern u8 acpi_gbl_leave_wake_gpes_disabled;extern u8 acpi_gbl_use_default_register_widths;extern acpi_name acpi_gbl_trace_method_name;extern u32 acpi_gbl_trace_flags; +extern u8 acpi_gbl_enable_aml_debug_object;extern u32 acpi_current_gpe_count;extern struct acpi_table_fadt acpi_gbl_FADT;
Signature · 1 line
1.6.0.6
Len Brown
reviewerPATCH 2/22 ACPICA: Add support for MCHI table
In reply to Len BrownFrom: Bob Moore <[email protected]>
Disassembler and header file support for MCHI - Managment Controller Host Interface table.
--- include/acpi/actbl2.h | 27 +++++++++++++++++++++++++++ 1 files changed, 27 insertions(+), 0 deletions(-)
include/acpi/actbl2.h +27 -0
@@ -69,6 +69,7 @@#define ACPI_SIG_IBFT "IBFT"/* i_sCSI Boot Firmware Table */ #define ACPI_SIG_IVRS "IVRS"/* I/O Virtualization Reporting Structure */ #define ACPI_SIG_MCFG "MCFG"/* PCI Memory Mapped Configuration table */ +#define ACPI_SIG_MCHI "MCHI"/* Management Controller Host Interface table */ #define ACPI_SIG_SLIC "SLIC"/* Software Licensing Description Table */ #define ACPI_SIG_SPCR "SPCR"/* Serial Port Console Redirection table */ #define ACPI_SIG_SPMI "SPMI"/* Server Platform Management Interface table */
@@ -679,6 +680,32 @@ struct acpi_mcfg_allocation {/******************************************************************************* * +* MCHI - Management Controller Host Interface Table +* Version 1 +* +* Conforms to "Management Component Transport Protocol (MCTP) Host +* Interface Specification", Revision 1.0.0a, October 13, 2009 +* +******************************************************************************/ + +struct acpi_table_mchi { +struct acpi_table_header header;/* Common ACPI table header */ +u8 interface_type; +u8 protocol; +u64 protocol_data; +u8 interrupt_type; +u8 gpe; +u8 pci_device_flag; +u32 global_interrupt; +struct acpi_generic_address control_register; +u8 pci_segment; +u8 pci_bus; +u8 pci_device; +u8 pci_function; +}; + +/******************************************************************************* +* * SPCR - Serial Port Console Redirection table * Version 1 *
Signature · 1 line
1.6.0.6
Len Brown
reviewerPATCH 3/22 ACPICA: Standardize integer output for ACPICA warnings/errors
In reply to Len BrownFrom: Bob Moore <[email protected]>
Always use 0x prefix for hex output, use %u for integer output (all integers are unsigned.)
--- drivers/acpi/acpica/dsfield.c | 2 +- drivers/acpi/acpica/dsmethod.c | 2 +- drivers/acpi/acpica/dsmthdat.c | 10 +++++----- drivers/acpi/acpica/dsobject.c | 14 +++++++------- drivers/acpi/acpica/dsopcode.c | 13 +++++++------ drivers/acpi/acpica/dswexec.c | 6 +++--- drivers/acpi/acpica/dswstate.c | 10 +++++----- drivers/acpi/acpica/evevent.c | 2 +- drivers/acpi/acpica/evgpe.c | 12 ++++++------ drivers/acpi/acpica/evgpeblk.c | 4 ++-- drivers/acpi/acpica/evmisc.c | 2 +- drivers/acpi/acpica/evxface.c | 4 ++-- drivers/acpi/acpica/exconvrt.c | 4 ++-- drivers/acpi/acpica/excreate.c | 4 ++-- drivers/acpi/acpica/exfield.c | 2 +- drivers/acpi/acpica/exfldio.c | 16 ++++++++-------- drivers/acpi/acpica/exmisc.c | 8 ++++---- drivers/acpi/acpica/exmutex.c | 4 ++-- drivers/acpi/acpica/exnames.c | 4 ++-- drivers/acpi/acpica/exoparg1.c | 16 ++++++++-------- drivers/acpi/acpica/exoparg2.c | 10 +++++----- drivers/acpi/acpica/exoparg3.c | 4 ++-- drivers/acpi/acpica/exoparg6.c | 4 ++-- drivers/acpi/acpica/exprep.c | 4 ++-- drivers/acpi/acpica/exregion.c | 4 ++-- drivers/acpi/acpica/exresnte.c | 4 ++-- drivers/acpi/acpica/exresolv.c | 11 ++++++----- drivers/acpi/acpica/exresop.c | 8 ++++---- drivers/acpi/acpica/exstore.c | 2 +- drivers/acpi/acpica/exsystem.c | 2 +- drivers/acpi/acpica/hwregs.c | 6 +++--- drivers/acpi/acpica/hwsleep.c | 2 +- drivers/acpi/acpica/hwvalid.c | 2 +- drivers/acpi/acpica/nsaccess.c | 2 +- drivers/acpi/acpica/nsdump.c | 4 ++-- drivers/acpi/acpica/nsnames.c | 2 +- drivers/acpi/acpica/nssearch.c | 2 +- drivers/acpi/acpica/nsutils.c | 4 ++-- drivers/acpi/acpica/psargs.c | 4 ++-- drivers/acpi/acpica/psloop.c | 3 +-- drivers/acpi/acpica/rscreate.c | 14 +++++++------- drivers/acpi/acpica/rslist.c | 6 +++--- drivers/acpi/acpica/rsmisc.c | 4 ++-- drivers/acpi/acpica/tbfadt.c | 16 ++++++++-------- drivers/acpi/acpica/tbutils.c | 4 ++-- drivers/acpi/acpica/tbxfroot.c | 6 +++--- drivers/acpi/acpica/utalloc.c | 2 +- drivers/acpi/acpica/utdelete.c | 6 +++--- drivers/acpi/acpica/uteval.c | 2 +- drivers/acpi/acpica/utmisc.c | 6 +++--- drivers/acpi/acpica/utmutex.c | 4 ++-- drivers/acpi/acpica/utobject.c | 8 ++++---- 52 files changed, 151 insertions(+), 150 deletions(-)
drivers/acpi/acpica/dsfield.c +1 -1
@@ -323,7 +323,7 @@ acpi_ds_get_field_names(struct acpi_create_field_info *info,default :ACPI_ERROR ((AE_INFO , -"Invalid opcode in field list: %X" , +"Invalid opcode in field list: 0x%X" , arg->common.aml_opcode));return_ACPI_STATUS (AE_AML_BAD_OPCODE ); }
drivers/acpi/acpica/dsmethod.c +1 -1
@@ -225,7 +225,7 @@ acpi_ds_begin_method_execution(struct acpi_namespace_node *method_node, (walk_state->thread->current_sync_level > obj_desc->method.mutex->mutex.sync_level)) {ACPI_ERROR ((AE_INFO , -"Cannot acquire Mutex for method [%4.4s], current SyncLevel is too large (%d)" , +"Cannot acquire Mutex for method [%4.4s], current SyncLevel is too large (%u)" ,acpi_ut_get_node_name (method_node), walk_state->thread->current_sync_level));
drivers/acpi/acpica/dsmthdat.c +5 -5
@@ -262,7 +262,7 @@ acpi_ds_method_data_get_node(u8 type,if (index >ACPI_METHOD_MAX_LOCAL ) {ACPI_ERROR ((AE_INFO , -"Local index %d is invalid (max %d)" , +"Local index %u is invalid (max %u)" , index,ACPI_METHOD_MAX_LOCAL ));return_ACPI_STATUS (AE_AML_INVALID_INDEX ); }
@@ -276,7 +276,7 @@ acpi_ds_method_data_get_node(u8 type,if (index >ACPI_METHOD_MAX_ARG ) {ACPI_ERROR ((AE_INFO , -"Arg index %d is invalid (max %d)" , +"Arg index %u is invalid (max %u)" , index,ACPI_METHOD_MAX_ARG ));return_ACPI_STATUS (AE_AML_INVALID_INDEX ); }
@@ -287,7 +287,7 @@ acpi_ds_method_data_get_node(u8 type,break ;default : -ACPI_ERROR ((AE_INFO ,"Type %d is invalid" , type)); +ACPI_ERROR ((AE_INFO ,"Type %u is invalid" , type));return_ACPI_STATUS (AE_TYPE ); }
@@ -424,7 +424,7 @@ acpi_ds_method_data_get_value(u8 type,case ACPI_REFCLASS_ARG :ACPI_ERROR ((AE_INFO , -"Uninitialized Arg[%d] at node %p" , +"Uninitialized Arg[%u] at node %p" , index, node));return_ACPI_STATUS (AE_AML_UNINITIALIZED_ARG );
@@ -440,7 +440,7 @@ acpi_ds_method_data_get_value(u8 type,default :ACPI_ERROR ((AE_INFO , -"Not a Arg/Local opcode: %X" , +"Not a Arg/Local opcode: 0x%X" , type));return_ACPI_STATUS (AE_AML_INTERNAL ); }
drivers/acpi/acpica/dsobject.c +7 -7
@@ -288,7 +288,7 @@ acpi_ds_build_internal_buffer_obj(struct acpi_walk_state *walk_state,if (byte_list) {if (byte_list->common.aml_opcode !=AML_INT_BYTELIST_OP ) {ACPI_ERROR ((AE_INFO , -"Expecting bytelist, got AML opcode %X in op %p" , +"Expecting bytelist, found AML opcode 0x%X in op %p" , byte_list->common.aml_opcode, byte_list));acpi_ut_remove_reference (obj_desc);
@@ -511,7 +511,7 @@ acpi_ds_build_internal_package_obj(struct acpi_walk_state *walk_state, }ACPI_INFO ((AE_INFO , -"Actual Package length (0x%X) is larger than NumElements field (0x%X), truncated\n" , +"Actual Package length (%u) is larger than NumElements field (%u), truncated\n" , i, element_count)); }else if (i < element_count) {/*
@@ -519,7 +519,7 @@ acpi_ds_build_internal_package_obj(struct acpi_walk_state *walk_state,* Note: this is not an error, the package is padded out with NULLs. */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO , -"Package List length (0x%X) smaller than NumElements count (0x%X), padded with null elements\n" , +"Package List length (%u) smaller than NumElements count (%u), padded with null elements\n" , i, element_count)); }
@@ -701,7 +701,7 @@ acpi_ds_init_object_from_op(struct acpi_walk_state *walk_state,default :ACPI_ERROR ((AE_INFO , -"Unknown constant opcode %X" , +"Unknown constant opcode 0x%X" , opcode)); status =AE_AML_OPERAND_TYPE ;break ;
@@ -717,7 +717,7 @@ acpi_ds_init_object_from_op(struct acpi_walk_state *walk_state,break ;default : -ACPI_ERROR ((AE_INFO ,"Unknown Integer type %X" , +ACPI_ERROR ((AE_INFO ,"Unknown Integer type 0x%X" , op_info->type)); status =AE_AML_OPERAND_TYPE ;break ;
@@ -806,7 +806,7 @@ acpi_ds_init_object_from_op(struct acpi_walk_state *walk_state,default :ACPI_ERROR ((AE_INFO , -"Unimplemented reference type for AML opcode: %4.4X" , +"Unimplemented reference type for AML opcode: 0x%4.4X" , opcode));return_ACPI_STATUS (AE_AML_OPERAND_TYPE ); }
@@ -816,7 +816,7 @@ acpi_ds_init_object_from_op(struct acpi_walk_state *walk_state,default : -ACPI_ERROR ((AE_INFO ,"Unimplemented data type: %X" , +ACPI_ERROR ((AE_INFO ,"Unimplemented data type: 0x%X" , obj_desc->common.type)); status =AE_AML_OPERAND_TYPE ;
drivers/acpi/acpica/dsopcode.c +7 -6
@@ -292,7 +292,7 @@ acpi_status acpi_ds_get_buffer_arguments(union acpi_operand_object *obj_desc) node = obj_desc->buffer.node;if (!node) {ACPI_ERROR ((AE_INFO , -"No pointer back to NS node in buffer obj %p" , +"No pointer back to namespace node in buffer object %p" , obj_desc));return_ACPI_STATUS (AE_AML_INTERNAL ); }
@@ -336,7 +336,7 @@ acpi_status acpi_ds_get_package_arguments(union acpi_operand_object *obj_desc) node = obj_desc->package.node;if (!node) {ACPI_ERROR ((AE_INFO , -"No pointer back to NS node in package %p" , +"No pointer back to namespace node in package %p" , obj_desc));return_ACPI_STATUS (AE_AML_INTERNAL ); }
@@ -580,7 +580,8 @@ acpi_ds_init_buffer_field(u16 aml_opcode,default :ACPI_ERROR ((AE_INFO , -"Unknown field creation opcode %02x" , aml_opcode)); +"Unknown field creation opcode 0x%02X" , + aml_opcode)); status =AE_AML_BAD_OPCODE ; goto cleanup; }
@@ -589,7 +590,7 @@ acpi_ds_init_buffer_field(u16 aml_opcode,if ((bit_offset + bit_count) > (8 * (u32 ) buffer_desc->buffer.length)) { ACPI_ERROR((AE_INFO, - "Field [%4.4s] at %d exceeds Buffer [%4.4s] size %d (bits)", + "Field [%4.4s] at %u exceeds Buffer [%4.4s] size %u (bits)", acpi_ut_get_node_name(result_desc), bit_offset + bit_count, acpi_ut_get_node_name(buffer_desc->buffer.node),
@@ -693,7 +694,7 @@ acpi_ds_eval_buffer_field_operands(struct acpi_walk_state *walk_state, status =acpi_ex_resolve_operands (op->common.aml_opcode,ACPI_WALK_OPERANDS , walk_state);if (ACPI_FAILURE (status)) { -ACPI_ERROR ((AE_INFO ,"(%s) bad operand(s) (%X)" , +ACPI_ERROR ((AE_INFO ,"(%s) bad operand(s), status 0x%X" ,acpi_ps_get_opcode_name (op->common.aml_opcode), status));
@@ -1461,7 +1462,7 @@ acpi_ds_exec_end_control_op(struct acpi_walk_state * walk_state,default : -ACPI_ERROR ((AE_INFO ,"Unknown control opcode=%X Op=%p" , +ACPI_ERROR ((AE_INFO ,"Unknown control opcode=0x%X Op=%p" , op->common.aml_opcode, op)); status =AE_AML_BAD_OPCODE ;
drivers/acpi/acpica/dswexec.c +3 -3
@@ -140,7 +140,7 @@ acpi_ds_get_predicate_value(struct acpi_walk_state *walk_state,if (local_obj_desc->common.type !=ACPI_TYPE_INTEGER ) {ACPI_ERROR ((AE_INFO , -"Bad predicate (not an integer) ObjDesc=%p State=%p Type=%X" , +"Bad predicate (not an integer) ObjDesc=%p State=%p Type=0x%X" , obj_desc, walk_state, obj_desc->common.type)); status =AE_AML_OPERAND_TYPE ;
@@ -354,7 +354,7 @@ acpi_status acpi_ds_exec_end_op(struct acpi_walk_state *walk_state) op_class = walk_state->op_info->class;if (op_class ==AML_CLASS_UNKNOWN ) { -ACPI_ERROR ((AE_INFO ,"Unknown opcode %X" , +ACPI_ERROR ((AE_INFO ,"Unknown opcode 0x%X" , op->common.aml_opcode));return_ACPI_STATUS (AE_NOT_IMPLEMENTED ); }
@@ -678,7 +678,7 @@ acpi_status acpi_ds_exec_end_op(struct acpi_walk_state *walk_state)default :ACPI_ERROR ((AE_INFO , -"Unimplemented opcode, class=%X type=%X Opcode=%X Op=%p" , +"Unimplemented opcode, class=0x%X type=0x%X Opcode=-0x%X Op=%p" , op_class, op_type, op->common.aml_opcode, op));
drivers/acpi/acpica/dswstate.c +5 -5
@@ -179,7 +179,7 @@ acpi_ds_result_push(union acpi_operand_object * object,if (!object) {ACPI_ERROR ((AE_INFO , -"Null Object! Obj=%p State=%p Num=%X" , +"Null Object! Obj=%p State=%p Num=%u" , object, walk_state, walk_state->result_count));return (AE_BAD_PARAMETER ); }
@@ -223,7 +223,7 @@ static acpi_status acpi_ds_result_stack_push(struct acpi_walk_state *walk_state)if (((u32 ) walk_state->result_size +ACPI_RESULTS_FRAME_OBJ_NUM ) >ACPI_RESULTS_OBJ_NUM_MAX ) { -ACPI_ERROR ((AE_INFO ,"Result stack overflow: State=%p Num=%X" , +ACPI_ERROR ((AE_INFO ,"Result stack overflow: State=%p Num=%u" , walk_state, walk_state->result_size));return (AE_STACK_OVERFLOW ); }
@@ -314,7 +314,7 @@ acpi_ds_obj_stack_push(void *object, struct acpi_walk_state * walk_state)if (walk_state->num_operands >=ACPI_OBJ_NUM_OPERANDS ) {ACPI_ERROR ((AE_INFO , -"Object stack overflow! Obj=%p State=%p #Ops=%X" , +"Object stack overflow! Obj=%p State=%p #Ops=%u" , object, walk_state, walk_state->num_operands));return (AE_STACK_OVERFLOW ); }
@@ -365,7 +365,7 @@ acpi_ds_obj_stack_pop(u32 pop_count, struct acpi_walk_state * walk_state)if (walk_state->num_operands ==0 ) {ACPI_ERROR ((AE_INFO , -"Object stack underflow! Count=%X State=%p #Ops=%X" , +"Object stack underflow! Count=%X State=%p #Ops=%u" , pop_count, walk_state, walk_state->num_operands));return (AE_STACK_UNDERFLOW );
@@ -377,7 +377,7 @@ acpi_ds_obj_stack_pop(u32 pop_count, struct acpi_walk_state * walk_state) walk_state->operands[walk_state->num_operands] =NULL ; } -ACPI_DEBUG_PRINT ((ACPI_DB_EXEC ,"Count=%X State=%p #Ops=%X\n" , +ACPI_DEBUG_PRINT ((ACPI_DB_EXEC ,"Count=%X State=%p #Ops=%u\n" , pop_count, walk_state, walk_state->num_operands));return (AE_OK );
drivers/acpi/acpica/evevent.c +1 -1
@@ -302,7 +302,7 @@ static u32 acpi_ev_fixed_event_dispatch(u32 event) ACPI_DISABLE_EVENT);ACPI_ERROR ((AE_INFO , -"No installed handler for fixed event [%08X]" , +"No installed handler for fixed event [0x%08X]" , event));return (ACPI_INTERRUPT_NOT_HANDLED );
drivers/acpi/acpica/evgpe.c +6 -6
@@ -499,7 +499,7 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info, u32 gpe_number) status =acpi_hw_clear_gpe (gpe_event_info);if (ACPI_FAILURE (status)) {ACPI_EXCEPTION ((AE_INFO , status, -"Unable to clear GPE[%2X]" , +"Unable to clear GPE[0x%2X]" , gpe_number));return_UINT32 (ACPI_INTERRUPT_NOT_HANDLED ); }
@@ -532,7 +532,7 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info, u32 gpe_number) status =acpi_hw_clear_gpe (gpe_event_info);if (ACPI_FAILURE (status)) {ACPI_EXCEPTION ((AE_INFO , status, -"Unable to clear GPE[%2X]" , +"Unable to clear GPE[0x%2X]" , gpe_number));return_UINT32 (ACPI_INTERRUPT_NOT_HANDLED ); }
@@ -548,7 +548,7 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info, u32 gpe_number) status =acpi_ev_disable_gpe (gpe_event_info);if (ACPI_FAILURE (status)) {ACPI_EXCEPTION ((AE_INFO , status, -"Unable to disable GPE[%2X]" , +"Unable to disable GPE[0x%2X]" , gpe_number));return_UINT32 (ACPI_INTERRUPT_NOT_HANDLED ); }
@@ -562,7 +562,7 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info, u32 gpe_number) gpe_event_info);if (ACPI_FAILURE (status)) {ACPI_EXCEPTION ((AE_INFO , status, -"Unable to queue handler for GPE[%2X] - event disabled" , +"Unable to queue handler for GPE[0x%2X] - event disabled" , gpe_number)); }break ;
@@ -572,7 +572,7 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info, u32 gpe_number)/* No handler or method to run! */ ACPI_ERROR ((AE_INFO , -"No handler or method for GPE[%2X], disabling event" , +"No handler or method for GPE[0x%2X], disabling event" , gpe_number));/*
@@ -582,7 +582,7 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info, u32 gpe_number) status =acpi_ev_disable_gpe (gpe_event_info);if (ACPI_FAILURE (status)) {ACPI_EXCEPTION ((AE_INFO , status, -"Unable to disable GPE[%2X]" , +"Unable to disable GPE[0x%2X]" , gpe_number));return_UINT32 (ACPI_INTERRUPT_NOT_HANDLED ); }
drivers/acpi/acpica/evgpeblk.c +2 -2
@@ -1139,8 +1139,8 @@ acpi_status acpi_ev_gpe_initialize(void) if ((register_count0) && (gpe_number_max >= acpi_gbl_FADT.gpe1_base)) { ACPI_ERROR((AE_INFO, - "GPE0 block (GPE 0 to %d) overlaps the GPE1 block " - "(GPE %d to %d) - Ignoring GPE1", + "GPE0 block (GPE 0 to %u) overlaps the GPE1 block " + "(GPE %u to %u) - Ignoring GPE1", gpe_number_max, acpi_gbl_FADT.gpe1_base, acpi_gbl_FADT.gpe1_base + ((register_count1 *
drivers/acpi/acpica/evmisc.c +1 -1
@@ -590,7 +590,7 @@ void acpi_ev_terminate(void) status =acpi_disable_event (i,0 );if (ACPI_FAILURE (status)) {ACPI_ERROR ((AE_INFO , -"Could not disable fixed event %d" , +"Could not disable fixed event %u" , (u32 ) i)); } }
drivers/acpi/acpica/evxface.c +2 -2
@@ -142,7 +142,7 @@ acpi_install_fixed_event_handler(u32 event,if (ACPI_SUCCESS (status)) status =acpi_enable_event (event,0 );if (ACPI_FAILURE (status)) { -ACPI_WARNING ((AE_INFO ,"Could not enable fixed event %X" , +ACPI_WARNING ((AE_INFO ,"Could not enable fixed event 0x%X" , event));/* Remove the handler */
@@ -203,7 +203,7 @@ acpi_remove_fixed_event_handler(u32 event, acpi_event_handler handler)if (ACPI_FAILURE (status)) {ACPI_WARNING ((AE_INFO , -"Could not write to fixed event enable register %X" , +"Could not write to fixed event enable register 0x%X" , event)); }else { ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Disabled fixed event %X\n",
drivers/acpi/acpica/exconvrt.c +2 -2
@@ -650,7 +650,7 @@ acpi_ex_convert_to_target_type(acpi_object_type destination_type,default :ACPI_ERROR ((AE_INFO , -"Bad destination type during conversion: %X" , +"Bad destination type during conversion: 0x%X" , destination_type)); status =AE_AML_INTERNAL ;break ;
@@ -665,7 +665,7 @@ acpi_ex_convert_to_target_type(acpi_object_type destination_type,default : ACPI_ERROR((AE_INFO, - "Unknown Target type ID 0x%X AmlOpcode %X DestType %s", + "Unknown Target type ID 0x%X AmlOpcode 0x%X DestType %s", GET_CURRENT_ARG_TYPE(walk_state->op_info-> runtime_args), walk_state->opcode,
drivers/acpi/acpica/excreate.c +2 -2
@@ -306,12 +306,12 @@ acpi_ex_create_region(u8 * aml_start,*/ if ((region_space >=ACPI_NUM_PREDEFINED_REGIONS ) && (region_space <ACPI_USER_REGION_BEGIN )) { -ACPI_ERROR ((AE_INFO ,"Invalid AddressSpace type %X" , +ACPI_ERROR ((AE_INFO ,"Invalid AddressSpace type 0x%X" , region_space));return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID ); } -ACPI_DEBUG_PRINT ((ACPI_DB_LOAD ,"Region Type - %s (%X)\n" , +ACPI_DEBUG_PRINT ((ACPI_DB_LOAD ,"Region Type - %s (0x%X)\n" ,acpi_ut_get_region_name (region_space), region_space));/* Create the region descriptor */
drivers/acpi/acpica/exfield.c +1 -1
@@ -281,7 +281,7 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,if (source_desc->buffer.length < length) {ACPI_ERROR ((AE_INFO , -"SMBus or IPMI write requires Buffer of length %X, found length %X" , +"SMBus or IPMI write requires Buffer of length %u, found length %u" , length, source_desc->buffer.length));return_ACPI_STATUS (AE_AML_BUFFER_LIMIT );
drivers/acpi/acpica/exfldio.c +8 -8
@@ -94,7 +94,7 @@ acpi_ex_setup_region(union acpi_operand_object *obj_desc,/* We must have a valid region */ if (rgn_desc->common.type !=ACPI_TYPE_REGION ) { -ACPI_ERROR ((AE_INFO ,"Needed Region, found type %X (%s)" , +ACPI_ERROR ((AE_INFO ,"Needed Region, found type 0x%X (%s)" , rgn_desc->common.type,acpi_ut_get_object_type_name (rgn_desc)));
@@ -175,7 +175,7 @@ acpi_ex_setup_region(union acpi_operand_object *obj_desc,* byte, and a field with Dword access specified. */ ACPI_ERROR((AE_INFO, - "Field [%4.4s] access width (%d bytes) too large for region [%4.4s] (length %X)", + "Field [%4.4s] access width (%u bytes) too large for region [%4.4s] (length %u)", acpi_ut_get_node_name(obj_desc-> common_field.node), obj_desc->common_field.access_byte_width,
@@ -189,7 +189,7 @@ acpi_ex_setup_region(union acpi_operand_object *obj_desc,* exceeds region length, indicate an error */ ACPI_ERROR((AE_INFO, - "Field [%4.4s] Base+Offset+Width %X+%X+%X is beyond end of region [%4.4s] (length %X)", + "Field [%4.4s] Base+Offset+Width %u+%u+%u is beyond end of region [%4.4s] (length %u)", acpi_ut_get_node_name(obj_desc->common_field.node), obj_desc->common_field.base_byte_offset, field_datum_byte_offset,
@@ -281,13 +281,13 @@ acpi_ex_access_region(union acpi_operand_object *obj_desc,if (ACPI_FAILURE (status)) {if (status ==AE_NOT_IMPLEMENTED ) {ACPI_ERROR ((AE_INFO , -"Region %s(%X) not implemented" , +"Region %s(0x%X) not implemented" ,acpi_ut_get_region_name (rgn_desc->region. space_id), rgn_desc->region.space_id)); }else if (status ==AE_NOT_EXIST ) {ACPI_ERROR ((AE_INFO , -"Region %s(%X) has no handler" , +"Region %s(0x%X) has no handler" ,acpi_ut_get_region_name (rgn_desc->region. space_id), rgn_desc->region.space_id));
@@ -525,7 +525,7 @@ acpi_ex_field_datum_io(union acpi_operand_object *obj_desc,default : -ACPI_ERROR ((AE_INFO ,"Wrong object type in field I/O %X" , +ACPI_ERROR ((AE_INFO ,"Wrong object type in field I/O %u" , obj_desc->common.type)); status =AE_AML_INTERNAL ;break ;
@@ -630,7 +630,7 @@ acpi_ex_write_with_update_rule(union acpi_operand_object *obj_desc,default :ACPI_ERROR ((AE_INFO , -"Unknown UpdateRule value: %X" , +"Unknown UpdateRule value: 0x%X" , (obj_desc->common_field. field_flags &AML_FIELD_UPDATE_RULE_MASK )));
@@ -689,7 +689,7 @@ acpi_ex_extract_from_field(union acpi_operand_object *obj_desc,if (buffer_length <ACPI_ROUND_BITS_UP_TO_BYTES (obj_desc->common_field.bit_length)) {ACPI_ERROR ((AE_INFO , -"Field size %X (bits) is too large for buffer (%X)" , +"Field size %u (bits) is too large for buffer (%u)" , obj_desc->common_field.bit_length, buffer_length));return_ACPI_STATUS (AE_BUFFER_OVERFLOW );
drivers/acpi/acpica/exmisc.c +4 -4
@@ -99,7 +99,7 @@ acpi_ex_get_object_reference(union acpi_operand_object *obj_desc,default : -ACPI_ERROR ((AE_INFO ,"Unknown Reference Class %2.2X" , +ACPI_ERROR ((AE_INFO ,"Unknown Reference Class 0x%2.2X" , obj_desc->reference.class));return_ACPI_STATUS (AE_AML_INTERNAL ); }
@@ -115,7 +115,7 @@ acpi_ex_get_object_reference(union acpi_operand_object *obj_desc,default : -ACPI_ERROR ((AE_INFO ,"Invalid descriptor type %X" , +ACPI_ERROR ((AE_INFO ,"Invalid descriptor type 0x%X" ,ACPI_GET_DESCRIPTOR_TYPE (obj_desc)));return_ACPI_STATUS (AE_TYPE ); }
@@ -276,7 +276,7 @@ acpi_ex_do_concatenate(union acpi_operand_object *operand0,break ;default : -ACPI_ERROR ((AE_INFO ,"Invalid object type: %X" , +ACPI_ERROR ((AE_INFO ,"Invalid object type: 0x%X" , operand0->common.type)); status =AE_AML_INTERNAL ; }
@@ -378,7 +378,7 @@ acpi_ex_do_concatenate(union acpi_operand_object *operand0,/* Invalid object type, should not happen here */ -ACPI_ERROR ((AE_INFO ,"Invalid object type: %X" , +ACPI_ERROR ((AE_INFO ,"Invalid object type: 0x%X" , operand0->common.type)); status =AE_AML_INTERNAL ; goto cleanup;
drivers/acpi/acpica/exmutex.c +2 -2
@@ -249,7 +249,7 @@ acpi_ex_acquire_mutex(union acpi_operand_object *time_desc,*/ if (walk_state->thread->current_sync_level > obj_desc->mutex.sync_level) {ACPI_ERROR ((AE_INFO , -"Cannot acquire Mutex [%4.4s], current SyncLevel is too large (%d)" , +"Cannot acquire Mutex [%4.4s], current SyncLevel is too large (%u)" ,acpi_ut_get_node_name (obj_desc->mutex.node), walk_state->thread->current_sync_level));return_ACPI_STATUS (AE_AML_MUTEX_ORDER );
@@ -410,7 +410,7 @@ acpi_ex_release_mutex(union acpi_operand_object *obj_desc,if (obj_desc->mutex.sync_level != walk_state->thread->current_sync_level) {ACPI_ERROR ((AE_INFO , -"Cannot release Mutex [%4.4s], SyncLevel mismatch: mutex %d current %d" , +"Cannot release Mutex [%4.4s], SyncLevel mismatch: mutex %u current %u" ,acpi_ut_get_node_name (obj_desc->mutex.node), obj_desc->mutex.sync_level, walk_state->thread->current_sync_level));
drivers/acpi/acpica/exnames.c +2 -2
@@ -102,7 +102,7 @@ static char *acpi_ex_allocate_name_string(u32 prefix_count, u32 num_name_segs) name_string =ACPI_ALLOCATE (size_needed);if (!name_string) {ACPI_ERROR ((AE_INFO , -"Could not allocate size %d" , size_needed)); +"Could not allocate size %u" , size_needed));return_PTR (NULL ); }
@@ -216,7 +216,7 @@ static acpi_status acpi_ex_name_segment(u8 ** in_aml_address, char *name_string)*/ status =AE_AML_BAD_NAME ;ACPI_ERROR ((AE_INFO , -"Bad character %02x in name, at %p" , +"Bad character 0x%02x in name, at %p" , *aml_address, aml_address)); }
drivers/acpi/acpica/exoparg1.c +8 -8
@@ -110,7 +110,7 @@ acpi_status acpi_ex_opcode_0A_0T_1R(struct acpi_walk_state *walk_state)default :/* Unknown opcode */ -ACPI_ERROR ((AE_INFO ,"Unknown AML opcode %X" , +ACPI_ERROR ((AE_INFO ,"Unknown AML opcode 0x%X" , walk_state->opcode)); status =AE_AML_BAD_OPCODE ;break ;
@@ -189,7 +189,7 @@ acpi_status acpi_ex_opcode_1A_0T_0R(struct acpi_walk_state *walk_state)default :/* Unknown opcode */ -ACPI_ERROR ((AE_INFO ,"Unknown AML opcode %X" , +ACPI_ERROR ((AE_INFO ,"Unknown AML opcode 0x%X" , walk_state->opcode)); status =AE_AML_BAD_OPCODE ;break ;
@@ -229,7 +229,7 @@ acpi_status acpi_ex_opcode_1A_1T_0R(struct acpi_walk_state *walk_state)default :/* Unknown opcode */ -ACPI_ERROR ((AE_INFO ,"Unknown AML opcode %X" , +ACPI_ERROR ((AE_INFO ,"Unknown AML opcode 0x%X" , walk_state->opcode)); status =AE_AML_BAD_OPCODE ; goto cleanup;
@@ -399,7 +399,7 @@ acpi_status acpi_ex_opcode_1A_1T_1R(struct acpi_walk_state *walk_state)if (digit >0 ) {ACPI_ERROR ((AE_INFO , -"Integer too large to convert to BCD: %8.8X%8.8X" , +"Integer too large to convert to BCD: 0x%8.8X%8.8X" ,ACPI_FORMAT_UINT64 (operand[0 ]-> integer.value))); status =AE_AML_NUMERIC_OVERFLOW ;
@@ -540,7 +540,7 @@ acpi_status acpi_ex_opcode_1A_1T_1R(struct acpi_walk_state *walk_state)default :/* Unknown opcode */ -ACPI_ERROR ((AE_INFO ,"Unknown AML opcode %X" , +ACPI_ERROR ((AE_INFO ,"Unknown AML opcode 0x%X" , walk_state->opcode)); status =AE_AML_BAD_OPCODE ; goto cleanup;
@@ -979,7 +979,7 @@ acpi_status acpi_ex_opcode_1A_0T_1R(struct acpi_walk_state *walk_state)default :ACPI_ERROR ((AE_INFO , -"Unknown Index TargetType %X in reference object %p" , +"Unknown Index TargetType 0x%X in reference object %p" , operand[0 ]->reference. target_type, operand[0 ])); status =AE_AML_OPERAND_TYPE ;
@@ -1007,7 +1007,7 @@ acpi_status acpi_ex_opcode_1A_0T_1R(struct acpi_walk_state *walk_state)default :ACPI_ERROR ((AE_INFO , -"Unknown class in reference(%p) - %2.2X" , +"Unknown class in reference(%p) - 0x%2.2X" , operand[0 ], operand[0 ]->reference.class));
@@ -1019,7 +1019,7 @@ acpi_status acpi_ex_opcode_1A_0T_1R(struct acpi_walk_state *walk_state)default : -ACPI_ERROR ((AE_INFO ,"Unknown AML opcode %X" , +ACPI_ERROR ((AE_INFO ,"Unknown AML opcode 0x%X" , walk_state->opcode)); status =AE_AML_BAD_OPCODE ; goto cleanup;
drivers/acpi/acpica/exoparg2.c +5 -5
@@ -159,7 +159,7 @@ acpi_status acpi_ex_opcode_2A_0T_0R(struct acpi_walk_state *walk_state)default : -ACPI_ERROR ((AE_INFO ,"Unknown AML opcode %X" , +ACPI_ERROR ((AE_INFO ,"Unknown AML opcode 0x%X" , walk_state->opcode)); status =AE_AML_BAD_OPCODE ; }
@@ -224,7 +224,7 @@ acpi_status acpi_ex_opcode_2A_2T_1R(struct acpi_walk_state *walk_state)default : -ACPI_ERROR ((AE_INFO ,"Unknown AML opcode %X" , +ACPI_ERROR ((AE_INFO ,"Unknown AML opcode 0x%X" , walk_state->opcode)); status =AE_AML_BAD_OPCODE ; goto cleanup;
@@ -441,7 +441,7 @@ acpi_status acpi_ex_opcode_2A_1T_1R(struct acpi_walk_state *walk_state)if (ACPI_FAILURE (status)) {ACPI_EXCEPTION ((AE_INFO , status, -"Index (%X%8.8X) is beyond end of object" , +"Index (0x%8.8X%8.8X) is beyond end of object" ,ACPI_FORMAT_UINT64 (index))); goto cleanup; }
@@ -464,7 +464,7 @@ acpi_status acpi_ex_opcode_2A_1T_1R(struct acpi_walk_state *walk_state)default : -ACPI_ERROR ((AE_INFO ,"Unknown AML opcode %X" , +ACPI_ERROR ((AE_INFO ,"Unknown AML opcode 0x%X" , walk_state->opcode)); status =AE_AML_BAD_OPCODE ;break ;
@@ -572,7 +572,7 @@ acpi_status acpi_ex_opcode_2A_0T_1R(struct acpi_walk_state *walk_state)default : -ACPI_ERROR ((AE_INFO ,"Unknown AML opcode %X" , +ACPI_ERROR ((AE_INFO ,"Unknown AML opcode 0x%X" , walk_state->opcode)); status =AE_AML_BAD_OPCODE ; goto cleanup;
drivers/acpi/acpica/exoparg3.c +2 -2
@@ -119,7 +119,7 @@ acpi_status acpi_ex_opcode_3A_0T_0R(struct acpi_walk_state *walk_state)default : -ACPI_ERROR ((AE_INFO ,"Unknown AML opcode %X" , +ACPI_ERROR ((AE_INFO ,"Unknown AML opcode 0x%X" , walk_state->opcode)); status =AE_AML_BAD_OPCODE ; goto cleanup;
@@ -244,7 +244,7 @@ acpi_status acpi_ex_opcode_3A_1T_1R(struct acpi_walk_state *walk_state)default : -ACPI_ERROR ((AE_INFO ,"Unknown AML opcode %X" , +ACPI_ERROR ((AE_INFO ,"Unknown AML opcode 0x%X" , walk_state->opcode)); status =AE_AML_BAD_OPCODE ; goto cleanup;
drivers/acpi/acpica/exoparg6.c +2 -2
@@ -245,7 +245,7 @@ acpi_status acpi_ex_opcode_6A_0T_1R(struct acpi_walk_state * walk_state) index = operand[5 ]->integer.value;if (index >= operand[0 ]->package.count) {ACPI_ERROR ((AE_INFO , -"Index (%X%8.8X) beyond package end (%X)" , +"Index (0x%8.8X%8.8X) beyond package end (0x%X)" ,ACPI_FORMAT_UINT64 (index), operand[0 ]->package.count)); status =AE_AML_PACKAGE_LIMIT ;
@@ -314,7 +314,7 @@ acpi_status acpi_ex_opcode_6A_0T_1R(struct acpi_walk_state * walk_state)default : -ACPI_ERROR ((AE_INFO ,"Unknown AML opcode %X" , +ACPI_ERROR ((AE_INFO ,"Unknown AML opcode 0x%X" , walk_state->opcode)); status =AE_AML_BAD_OPCODE ; goto cleanup;
drivers/acpi/acpica/exprep.c +2 -2
@@ -275,7 +275,7 @@ acpi_ex_decode_field_access(union acpi_operand_object *obj_desc,default :/* Invalid field access type */ -ACPI_ERROR ((AE_INFO ,"Unknown field access type %X" , access)); +ACPI_ERROR ((AE_INFO ,"Unknown field access type 0x%X" , access));return_UINT32 (0 ); }
@@ -430,7 +430,7 @@ acpi_status acpi_ex_prep_field_value(struct acpi_create_field_info *info) type =acpi_ns_get_type (info->region_node);if (type !=ACPI_TYPE_REGION ) {ACPI_ERROR ((AE_INFO , -"Needed Region, found type %X (%s)" , +"Needed Region, found type 0x%X (%s)" , type,acpi_ut_get_type_name (type)));return_ACPI_STATUS (AE_AML_OPERAND_TYPE );
drivers/acpi/acpica/exregion.c +2 -2
@@ -105,7 +105,7 @@ acpi_ex_system_memory_space_handler(u32 function,break ;default : -ACPI_ERROR ((AE_INFO ,"Invalid SystemMemory width %d" , +ACPI_ERROR ((AE_INFO ,"Invalid SystemMemory width %u" , bit_width));return_ACPI_STATUS (AE_AML_OPERAND_VALUE ); }
@@ -173,7 +173,7 @@ acpi_ex_system_memory_space_handler(u32 function, mem_info->mapped_logical_address =acpi_os_map_memory ((acpi_physical_address ) address, map_length);if (!mem_info->mapped_logical_address) {ACPI_ERROR ((AE_INFO , -"Could not map memory at %8.8X%8.8X, size %X" , +"Could not map memory at 0x%8.8X%8.8X, size %u" ,ACPI_FORMAT_NATIVE_UINT (address), (u32 ) map_length)); mem_info->mapped_length =0 ;
drivers/acpi/acpica/exresnte.c +2 -2
@@ -252,7 +252,7 @@ acpi_ex_resolve_node_to_value(struct acpi_namespace_node **object_ptr,/* No named references are allowed here */ ACPI_ERROR ((AE_INFO , -"Unsupported Reference type %X" , +"Unsupported Reference type 0x%X" , source_desc->reference.class));return_ACPI_STATUS (AE_AML_OPERAND_TYPE );
@@ -264,7 +264,7 @@ acpi_ex_resolve_node_to_value(struct acpi_namespace_node **object_ptr,/* Default case is for unknown types */ ACPI_ERROR ((AE_INFO , -"Node %p - Unknown object type %X" , +"Node %p - Unknown object type 0x%X" , node, entry_type));return_ACPI_STATUS (AE_AML_OPERAND_TYPE );
drivers/acpi/acpica/exresolv.c +6 -5
@@ -231,7 +231,7 @@ acpi_ex_resolve_object_to_value(union acpi_operand_object **stack_ptr,/* Invalid reference object */ ACPI_ERROR ((AE_INFO , -"Unknown TargetType %X in Index/Reference object %p" , +"Unknown TargetType 0x%X in Index/Reference object %p" , stack_desc->reference.target_type, stack_desc)); status =AE_AML_INTERNAL ;
@@ -273,8 +273,8 @@ acpi_ex_resolve_object_to_value(union acpi_operand_object **stack_ptr,default :ACPI_ERROR ((AE_INFO , -"Unknown Reference type %X in %p" , ref_type, - stack_desc)); +"Unknown Reference type 0x%X in %p" , + ref_type, stack_desc)); status =AE_AML_INTERNAL ;break ; }
@@ -403,7 +403,8 @@ acpi_ex_resolve_multiple(struct acpi_walk_state *walk_state,if (ACPI_GET_DESCRIPTOR_TYPE (node) !=ACPI_DESC_TYPE_NAMED ) { -ACPI_ERROR ((AE_INFO ,"Not a NS node %p [%s]" , +ACPI_ERROR ((AE_INFO , +"Not a namespace node %p [%s]" , node,acpi_ut_get_descriptor_name (node)));return_ACPI_STATUS (AE_AML_INTERNAL );
@@ -507,7 +508,7 @@ acpi_ex_resolve_multiple(struct acpi_walk_state *walk_state,default :ACPI_ERROR ((AE_INFO , -"Unknown Reference Class %2.2X" , +"Unknown Reference Class 0x%2.2X" , obj_desc->reference.class));return_ACPI_STATUS (AE_AML_INTERNAL ); }
drivers/acpi/acpica/exresop.c +4 -4
@@ -153,7 +153,7 @@ acpi_ex_resolve_operands(u16 opcode, arg_types = op_info->runtime_args;if (arg_types ==ARGI_INVALID_OPCODE ) { -ACPI_ERROR ((AE_INFO ,"Unknown AML opcode %X" , opcode)); +ACPI_ERROR ((AE_INFO ,"Unknown AML opcode 0x%X" , opcode));return_ACPI_STATUS (AE_AML_INTERNAL ); }
@@ -218,7 +218,7 @@ acpi_ex_resolve_operands(u16 opcode,if (!acpi_ut_valid_object_type (object_type)) {ACPI_ERROR ((AE_INFO , -"Bad operand object type [%X]" , +"Bad operand object type [0x%X]" , object_type));return_ACPI_STATUS (AE_AML_OPERAND_TYPE );
@@ -253,7 +253,7 @@ acpi_ex_resolve_operands(u16 opcode,default :ACPI_ERROR ((AE_INFO , -"Unknown Reference Class %2.2X in %p" , +"Unknown Reference Class 0x%2.2X in %p" , obj_desc->reference.class, obj_desc));
@@ -665,7 +665,7 @@ acpi_ex_resolve_operands(u16 opcode,/* Unknown type */ ACPI_ERROR ((AE_INFO , -"Internal - Unknown ARGI (required operand) type %X" , +"Internal - Unknown ARGI (required operand) type 0x%X" , this_arg_type));return_ACPI_STATUS (AE_BAD_PARAMETER );
drivers/acpi/acpica/exstore.c +1 -1
@@ -193,7 +193,7 @@ acpi_ex_store(union acpi_operand_object *source_desc,default : -ACPI_ERROR ((AE_INFO ,"Unknown Reference Class %2.2X" , +ACPI_ERROR ((AE_INFO ,"Unknown Reference Class 0x%2.2X" , ref_desc->reference.class));ACPI_DUMP_ENTRY (ref_desc,ACPI_LV_INFO );
drivers/acpi/acpica/exsystem.c +1 -1
@@ -170,7 +170,7 @@ acpi_status acpi_ex_system_do_stall(u32 how_long)* (ACPI specifies 100 usec as max, but this gives some slack in * order to support existing BIOSs) */ -ACPI_ERROR ((AE_INFO ,"Time parameter is too large (%d)" , +ACPI_ERROR ((AE_INFO ,"Time parameter is too large (%u)" , how_long)); status =AE_AML_OPERAND_VALUE ; }else {
drivers/acpi/acpica/hwregs.c +3 -3
@@ -299,7 +299,7 @@ struct acpi_bit_register_info *acpi_hw_get_bit_register_info(u32 register_id)ACPI_FUNCTION_ENTRY ();if (register_id >ACPI_BITREG_MAX ) { -ACPI_ERROR ((AE_INFO ,"Invalid BitRegister ID: %X" , +ACPI_ERROR ((AE_INFO ,"Invalid BitRegister ID: 0x%X" , register_id));return (NULL ); }
@@ -413,7 +413,7 @@ acpi_hw_register_read(u32 register_id, u32 * return_value)break ;default : -ACPI_ERROR ((AE_INFO ,"Unknown Register ID: %X" , register_id)); +ACPI_ERROR ((AE_INFO ,"Unknown Register ID: 0x%X" , register_id)); status =AE_BAD_PARAMETER ;break ; }
@@ -549,7 +549,7 @@ acpi_status acpi_hw_register_write(u32 register_id, u32 value)break ;default : -ACPI_ERROR ((AE_INFO ,"Unknown Register ID: %X" , register_id)); +ACPI_ERROR ((AE_INFO ,"Unknown Register ID: 0x%X" , register_id)); status =AE_BAD_PARAMETER ;break ; }
drivers/acpi/acpica/hwsleep.c +1 -1
@@ -245,7 +245,7 @@ acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state)if ((acpi_gbl_sleep_type_a >ACPI_SLEEP_TYPE_MAX ) || (acpi_gbl_sleep_type_b >ACPI_SLEEP_TYPE_MAX )) { -ACPI_ERROR ((AE_INFO ,"Sleep values out of range: A=%X B=%X" , +ACPI_ERROR ((AE_INFO ,"Sleep values out of range: A=0x%X B=0x%X" , acpi_gbl_sleep_type_a, acpi_gbl_sleep_type_b));return_ACPI_STATUS (AE_AML_OPERAND_VALUE ); }
drivers/acpi/acpica/hwvalid.c +1 -1
@@ -150,7 +150,7 @@ acpi_hw_validate_io_request(acpi_io_address address, u32 bit_width)if (last_address >ACPI_UINT16_MAX ) {ACPI_ERROR ((AE_INFO , -"Illegal I/O port address/length above 64K: 0x%p/%X" , +"Illegal I/O port address/length above 64K: %p/0x%X" ,ACPI_CAST_PTR (void, address), byte_width));return_ACPI_STATUS (AE_LIMIT ); }
drivers/acpi/acpica/nsaccess.c +1 -1
@@ -222,7 +222,7 @@ acpi_status acpi_ns_root_initialize(void)default :ACPI_ERROR ((AE_INFO , -"Unsupported initial type value %X" , +"Unsupported initial type value 0x%X" , init_val->type));acpi_ut_remove_reference (obj_desc); obj_desc =NULL ;
drivers/acpi/acpica/nsdump.c +2 -2
@@ -205,8 +205,8 @@ acpi_ns_dump_one_object(acpi_handle obj_handle,/* Check the node type and name */ if (type >ACPI_TYPE_LOCAL_MAX ) { -ACPI_WARNING ((AE_INFO ,"Invalid ACPI Object Type %08X" , - type)); +ACPI_WARNING ((AE_INFO , +"Invalid ACPI Object Type 0x%08X" , type)); }if (!acpi_ut_valid_acpi_name (this_node->name.integer)) {
drivers/acpi/acpica/nsnames.c +1 -1
@@ -107,7 +107,7 @@ acpi_ns_build_external_path(struct acpi_namespace_node *node,if (index !=0 ) {ACPI_ERROR ((AE_INFO , -"Could not construct external pathname; index=%X, size=%X, Path=%s" , +"Could not construct external pathname; index=%u, size=%u, Path=%s" , (u32 ) index, (u32 ) size, &name_buffer[size]));return (AE_BAD_PARAMETER );
drivers/acpi/acpica/nssearch.c +1 -1
@@ -311,7 +311,7 @@ acpi_ns_search_and_enter(u32 target_name,if (!node || !target_name || !return_node) {ACPI_ERROR ((AE_INFO , -"Null parameter: Node %p Name %X ReturnNode %p" , +"Null parameter: Node %p Name 0x%X ReturnNode %p" , node, target_name, return_node));return_ACPI_STATUS (AE_BAD_PARAMETER ); }
drivers/acpi/acpica/nsutils.c +2 -2
@@ -276,7 +276,7 @@ u32 acpi_ns_local(acpi_object_type type)/* Type code out of range */ -ACPI_WARNING ((AE_INFO ,"Invalid Object Type %X" , type)); +ACPI_WARNING ((AE_INFO ,"Invalid Object Type 0x%X" , type));return_UINT32 (ACPI_NS_NORMAL ); }
@@ -764,7 +764,7 @@ u32 acpi_ns_opens_scope(acpi_object_type type)/* type code out of range */ -ACPI_WARNING ((AE_INFO ,"Invalid Object Type %X" , type)); +ACPI_WARNING ((AE_INFO ,"Invalid Object Type 0x%X" , type));return_UINT32 (ACPI_NS_NORMAL ); }
drivers/acpi/acpica/psargs.c +2 -2
@@ -460,7 +460,7 @@ acpi_ps_get_next_simple_arg(struct acpi_parse_state *parser_state,default : -ACPI_ERROR ((AE_INFO ,"Invalid ArgType %X" , arg_type)); +ACPI_ERROR ((AE_INFO ,"Invalid ArgType 0x%X" , arg_type)); return_VOID; }
@@ -742,7 +742,7 @@ acpi_ps_get_next_arg(struct acpi_walk_state *walk_state,default : -ACPI_ERROR ((AE_INFO ,"Invalid ArgType: %X" , arg_type)); +ACPI_ERROR ((AE_INFO ,"Invalid ArgType: 0x%X" , arg_type)); status =AE_AML_OPERAND_TYPE ;break ; }
drivers/acpi/acpica/psloop.c +1 -2
@@ -136,7 +136,7 @@ static acpi_status acpi_ps_get_aml_opcode(struct acpi_walk_state *walk_state)/* The opcode is unrecognized. Just skip unknown opcodes */ ACPI_ERROR ((AE_INFO , -"Found unknown opcode %X at AML address %p offset %X, ignoring" , +"Found unknown opcode 0x%X at AML address %p offset 0x%X, ignoring" , walk_state->opcode, walk_state->parser_state.aml, walk_state->aml_offset));
@@ -1021,7 +1021,6 @@ acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state)if (status ==AE_AML_NO_RETURN_VALUE ) {ACPI_EXCEPTION ((AE_INFO , status,"Invoked method did not return a value" )); - } ACPI_EXCEPTION((AE_INFO, status,
drivers/acpi/acpica/rscreate.c +7 -7
@@ -212,7 +212,7 @@ acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object,if ((*top_object_list)->common.type !=ACPI_TYPE_PACKAGE ) {ACPI_ERROR ((AE_INFO , -"(PRT[%X]) Need sub-package, found %s" , +"(PRT[%u]) Need sub-package, found %s" , index,acpi_ut_get_object_type_name (*top_object_list)));
@@ -223,7 +223,7 @@ acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object,if ((*top_object_list)->package.count !=4 ) {ACPI_ERROR ((AE_INFO , -"(PRT[%X]) Need package of length 4, found length %d" , +"(PRT[%u]) Need package of length 4, found length %u" , index, (*top_object_list)->package.count));return_ACPI_STATUS (AE_AML_PACKAGE_LIMIT ); }
@@ -240,7 +240,7 @@ acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object, obj_desc = sub_object_list[0 ];if (obj_desc->common.type !=ACPI_TYPE_INTEGER ) {ACPI_ERROR ((AE_INFO , -"(PRT[%X].Address) Need Integer, found %s" , +"(PRT[%u].Address) Need Integer, found %s" , index,acpi_ut_get_object_type_name (obj_desc)));return_ACPI_STATUS (AE_BAD_DATA );
@@ -253,7 +253,7 @@ acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object, obj_desc = sub_object_list[1 ];if (obj_desc->common.type !=ACPI_TYPE_INTEGER ) {ACPI_ERROR ((AE_INFO , -"(PRT[%X].Pin) Need Integer, found %s" , +"(PRT[%u].Pin) Need Integer, found %s" , index,acpi_ut_get_object_type_name (obj_desc)));return_ACPI_STATUS (AE_BAD_DATA );
@@ -289,7 +289,7 @@ acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object,if (obj_desc->reference.class !=ACPI_REFCLASS_NAME ) {ACPI_ERROR ((AE_INFO , -"(PRT[%X].Source) Need name, found Reference Class %X" , +"(PRT[%u].Source) Need name, found Reference Class 0x%X" , index, obj_desc->reference.class));return_ACPI_STATUS (AE_BAD_DATA );
@@ -340,7 +340,7 @@ acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object,default :ACPI_ERROR ((AE_INFO , -"(PRT[%X].Source) Need Ref/String/Integer, found %s" , +"(PRT[%u].Source) Need Ref/String/Integer, found %s" , index,acpi_ut_get_object_type_name (obj_desc)));
@@ -358,7 +358,7 @@ acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object, obj_desc = sub_object_list[3 ];if (obj_desc->common.type !=ACPI_TYPE_INTEGER ) {ACPI_ERROR ((AE_INFO , -"(PRT[%X].SourceIndex) Need Integer, found %s" , +"(PRT[%u].SourceIndex) Need Integer, found %s" , index,acpi_ut_get_object_type_name (obj_desc)));return_ACPI_STATUS (AE_BAD_DATA );
drivers/acpi/acpica/rslist.c +3 -3
@@ -94,7 +94,7 @@ acpi_rs_convert_aml_to_resources(u8 * aml, [resource_index]);if (ACPI_FAILURE (status)) {ACPI_EXCEPTION ((AE_INFO , status, -"Could not convert AML resource (Type %X)" , +"Could not convert AML resource (Type 0x%X)" , *aml));return_ACPI_STATUS (status); }
@@ -147,7 +147,7 @@ acpi_rs_convert_resources_to_aml(struct acpi_resource *resource,if (resource->type >ACPI_RESOURCE_TYPE_MAX ) {ACPI_ERROR ((AE_INFO , -"Invalid descriptor type (%X) in resource list" , +"Invalid descriptor type (0x%X) in resource list" , resource->type));return_ACPI_STATUS (AE_BAD_DATA ); }
@@ -161,7 +161,7 @@ acpi_rs_convert_resources_to_aml(struct acpi_resource *resource, [resource->type]);if (ACPI_FAILURE (status)) {ACPI_EXCEPTION ((AE_INFO , status, -"Could not convert resource (type %X) to AML" , +"Could not convert resource (type 0x%X) to AML" , resource->type));return_ACPI_STATUS (status); }
drivers/acpi/acpica/rsmisc.c +2 -2
@@ -88,7 +88,7 @@ acpi_rs_convert_aml_to_resource(struct acpi_resource *resource,/* Each internal resource struct is expected to be 32-bit aligned */ ACPI_WARNING ((AE_INFO , -"Misaligned resource pointer (get): %p Type %2.2X Len %X" , +"Misaligned resource pointer (get): %p Type 0x%2.2X Length %u" , resource, resource->type, resource->length)); }
@@ -541,7 +541,7 @@ if (((aml->irq.flags & 0x09) == 0x00) || ((aml->irq.flags & 0x09) == 0x09)) {* "IRQ Format"), so 0x00 and 0x09 are illegal. */ ACPI_ERROR ((AE_INFO , -"Invalid interrupt polarity/trigger in resource list, %X" , +"Invalid interrupt polarity/trigger in resource list, 0x%X" , aml->irq.flags));return_ACPI_STATUS (AE_BAD_DATA ); }
drivers/acpi/acpica/tbfadt.c +8 -8
@@ -283,7 +283,7 @@ void acpi_tb_create_local_fadt(struct acpi_table_header *table, u32 length)if (length >sizeof (struct acpi_table_fadt )) {ACPI_WARNING ((AE_INFO ,"FADT (revision %u) is longer than ACPI 2.0 version, " -"truncating length 0x%X to 0x%X" , +"truncating length %u to %u" , table->revision, length, (u32 )sizeof (struct acpi_table_fadt ))); }
@@ -422,7 +422,7 @@ static void acpi_tb_convert_fadt(void)if (address64->address && address32 && (address64->address != (u64 ) address32)) {ACPI_ERROR ((AE_INFO , -"32/64X address mismatch in %s: %8.8X/%8.8X%8.8X, using 32" , +"32/64X address mismatch in %s: 0x%8.8X/0x%8.8X%8.8X, using 32" , fadt_info_table[i].name, address32,ACPI_FORMAT_UINT64 (address64->address))); }
@@ -481,7 +481,7 @@ static void acpi_tb_validate_fadt(void) (acpi_gbl_FADT.Xfacs != (u64) acpi_gbl_FADT.facs)) {ACPI_WARNING ((AE_INFO ,"32/64X FACS address mismatch in FADT - " -"%8.8X/%8.8X%8.8X, using 32" , +"0x%8.8X/0x%8.8X%8.8X, using 32" , acpi_gbl_FADT.facs,ACPI_FORMAT_UINT64 (acpi_gbl_FADT.Xfacs)));
@@ -492,7 +492,7 @@ static void acpi_tb_validate_fadt(void) (acpi_gbl_FADT.Xdsdt != (u64) acpi_gbl_FADT.dsdt)) {ACPI_WARNING ((AE_INFO ,"32/64X DSDT address mismatch in FADT - " -"%8.8X/%8.8X%8.8X, using 32" , +"0x%8.8X/0x%8.8X%8.8X, using 32" , acpi_gbl_FADT.dsdt,ACPI_FORMAT_UINT64 (acpi_gbl_FADT.Xdsdt)));
@@ -521,7 +521,7 @@ static void acpi_tb_validate_fadt(void)if (address64->address && (address64->bit_width !=ACPI_MUL_8 (length))) {ACPI_WARNING ((AE_INFO , -"32/64X length mismatch in %s: %d/%d" , +"32/64X length mismatch in %s: %u/%u" , name,ACPI_MUL_8 (length), address64->bit_width)); }
@@ -534,7 +534,7 @@ static void acpi_tb_validate_fadt(void)if (!address64->address || !length) { ACPI_ERROR((AE_INFO, "Required field %s has zero address and/or length:" - " %8.8X%8.8X/%X", + " 0x%8.8X%8.8X/0x%X", name, ACPI_FORMAT_UINT64(address64-> address),
@@ -550,7 +550,7 @@ static void acpi_tb_validate_fadt(void) (!address64->address && length)) { ACPI_WARNING((AE_INFO, "Optional field %s has zero address or length: " - "%8.8X%8.8X/%X", + "0x%8.8X%8.8X/0x%X", name, ACPI_FORMAT_UINT64(address64-> address),
@@ -600,7 +600,7 @@ static void acpi_tb_setup_fadt_registers(void) (fadt_info_table[i].default_length != target64->bit_width)) { ACPI_WARNING((AE_INFO, - "Invalid length for %s: %d, using default %d", + "Invalid length for %s: %u, using default %u", fadt_info_table[i].name, target64->bit_width, fadt_info_table[i].
drivers/acpi/acpica/tbutils.c +2 -2
@@ -309,7 +309,7 @@ acpi_status acpi_tb_verify_checksum(struct acpi_table_header *table, u32 length)if (checksum) {ACPI_WARNING ((AE_INFO , -"Incorrect checksum in table [%4.4s] - %2.2X, should be %2.2X" , +"Incorrect checksum in table [%4.4s] - 0x%2.2X, should be 0x%2.2X" , table->signature, table->checksum, (u8) (table->checksum - checksum)));
@@ -496,7 +496,7 @@ acpi_tb_get_root_table_entry(u8 *table_entry, u32 table_entry_size)/* Will truncate 64-bit address to 32 bits, issue warning */ ACPI_WARNING ((AE_INFO , -"64-bit Physical Address in XSDT is too large (%8.8X%8.8X)," +"64-bit Physical Address in XSDT is too large (0x%8.8X%8.8X)," " truncating" ,ACPI_FORMAT_UINT64 (address64))); }
drivers/acpi/acpica/tbxfroot.c +3 -3
@@ -134,7 +134,7 @@ acpi_status acpi_find_root_pointer(acpi_size *table_address) ACPI_EBDA_PTR_LENGTH);if (!table_ptr) {ACPI_ERROR ((AE_INFO , -"Could not map memory at %8.8X for length %X" , +"Could not map memory at 0x%8.8X for length %u" ,ACPI_EBDA_PTR_LOCATION ,ACPI_EBDA_PTR_LENGTH ));return_ACPI_STATUS (AE_NO_MEMORY );
@@ -159,7 +159,7 @@ acpi_status acpi_find_root_pointer(acpi_size *table_address) ACPI_EBDA_WINDOW_SIZE);if (!table_ptr) {ACPI_ERROR ((AE_INFO , -"Could not map memory at %8.8X for length %X" , +"Could not map memory at 0x%8.8X for length %u" , physical_address,ACPI_EBDA_WINDOW_SIZE ));return_ACPI_STATUS (AE_NO_MEMORY );
@@ -191,7 +191,7 @@ acpi_status acpi_find_root_pointer(acpi_size *table_address)if (!table_ptr) {ACPI_ERROR ((AE_INFO , -"Could not map memory at %8.8X for length %X" , +"Could not map memory at 0x%8.8X for length %u" ,ACPI_HI_RSDP_WINDOW_BASE ,ACPI_HI_RSDP_WINDOW_SIZE ));
drivers/acpi/acpica/utalloc.c +1 -1
@@ -340,7 +340,7 @@ void *acpi_ut_allocate(acpi_size size,/* Report allocation error */ ACPI_WARNING ((module, line, -"Could not allocate size %X" , (u32 ) size)); +"Could not allocate size %u" , (u32 ) size));return_PTR (NULL ); }
drivers/acpi/acpica/utdelete.c +3 -3
@@ -434,7 +434,7 @@ acpi_ut_update_ref_count(union acpi_operand_object *object, u32 action)default : -ACPI_ERROR ((AE_INFO ,"Unknown action (%X)" , action)); +ACPI_ERROR ((AE_INFO ,"Unknown action (0x%X)" , action));break ; }
@@ -444,8 +444,8 @@ acpi_ut_update_ref_count(union acpi_operand_object *object, u32 action)*/ if (count >ACPI_MAX_REFERENCE_COUNT ) {ACPI_WARNING ((AE_INFO , -"Large Reference Count (%X) in object %p" , count, - object)); +"Large Reference Count (0x%X) in object %p" , + count, object)); } }
drivers/acpi/acpica/uteval.c +1 -1
@@ -307,7 +307,7 @@ acpi_ut_evaluate_object(struct acpi_namespace_node *prefix_node, prefix_node, path, AE_TYPE);ACPI_ERROR ((AE_INFO , -"Type returned from %s was incorrect: %s, expected Btypes: %X" , +"Type returned from %s was incorrect: %s, expected Btypes: 0x%X" , path,acpi_ut_get_object_type_name (info->return_object), expected_return_btypes));
drivers/acpi/acpica/utmisc.c +3 -3
@@ -205,7 +205,7 @@ acpi_status acpi_ut_allocate_owner_id(acpi_owner_id * owner_id)/* Guard against multiple allocations of ID to the same location */ if (*owner_id) { -ACPI_ERROR ((AE_INFO ,"Owner ID [%2.2X] already exists" , +ACPI_ERROR ((AE_INFO ,"Owner ID [0x%2.2X] already exists" , *owner_id));return_ACPI_STATUS (AE_ALREADY_EXISTS ); }
@@ -315,7 +315,7 @@ void acpi_ut_release_owner_id(acpi_owner_id * owner_id_ptr)/* Zero is not a valid owner_iD */ if (owner_id ==0 ) { -ACPI_ERROR ((AE_INFO ,"Invalid OwnerId: %2.2X" , owner_id)); +ACPI_ERROR ((AE_INFO ,"Invalid OwnerId: 0x%2.2X" , owner_id)); return_VOID; }
@@ -341,7 +341,7 @@ void acpi_ut_release_owner_id(acpi_owner_id * owner_id_ptr) acpi_gbl_owner_id_mask[index] ^= bit; }else {ACPI_ERROR ((AE_INFO , -"Release of non-allocated OwnerId: %2.2X" , +"Release of non-allocated OwnerId: 0x%2.2X" , owner_id +1 )); }
drivers/acpi/acpica/utmutex.c +2 -2
@@ -258,7 +258,7 @@ acpi_status acpi_ut_acquire_mutex(acpi_mutex_handle mutex_id) acpi_gbl_mutex_info[mutex_id].thread_id = this_thread_id; }else {ACPI_EXCEPTION ((AE_INFO , status, -"Thread %p could not acquire Mutex [%X]" , +"Thread %p could not acquire Mutex [0x%X]" ,ACPI_CAST_PTR (void, this_thread_id), mutex_id)); }
@@ -297,7 +297,7 @@ acpi_status acpi_ut_release_mutex(acpi_mutex_handle mutex_id)*/ if (acpi_gbl_mutex_info[mutex_id].thread_id ==ACPI_MUTEX_NOT_ACQUIRED ) {ACPI_ERROR ((AE_INFO , -"Mutex [%X] is not acquired, cannot release" , +"Mutex [0x%X] is not acquired, cannot release" , mutex_id));return (AE_NOT_ACQUIRED );
drivers/acpi/acpica/utobject.c +4 -4
@@ -251,7 +251,7 @@ union acpi_operand_object *acpi_ut_create_buffer_object(acpi_size buffer_size) buffer =ACPI_ALLOCATE_ZEROED (buffer_size);if (!buffer) { -ACPI_ERROR ((AE_INFO ,"Could not allocate size %X" , +ACPI_ERROR ((AE_INFO ,"Could not allocate size %u" , (u32 ) buffer_size));acpi_ut_remove_reference (buffer_desc);return_PTR (NULL );
@@ -303,7 +303,7 @@ union acpi_operand_object *acpi_ut_create_string_object(acpi_size string_size)*/ string =ACPI_ALLOCATE_ZEROED (string_size +1 );if (!string) { -ACPI_ERROR ((AE_INFO ,"Could not allocate size %X" , +ACPI_ERROR ((AE_INFO ,"Could not allocate size %u" , (u32 ) string_size));acpi_ut_remove_reference (string_desc);return_PTR (NULL );
@@ -533,7 +533,7 @@ acpi_ut_get_simple_object_size(union acpi_operand_object *internal_object,*/ ACPI_ERROR ((AE_INFO ,"Cannot convert to external object - " -"unsupported Reference Class [%s] %X in object %p" , +"unsupported Reference Class [%s] 0x%X in object %p" ,acpi_ut_get_reference_name (internal_object), internal_object->reference.class, internal_object));
@@ -545,7 +545,7 @@ acpi_ut_get_simple_object_size(union acpi_operand_object *internal_object,default :ACPI_ERROR ((AE_INFO ,"Cannot convert to external object - " -"unsupported type [%s] %X in object %p" , +"unsupported type [%s] 0x%X in object %p" ,acpi_ut_get_object_type_name (internal_object), internal_object->common.type, internal_object)); status =AE_TYPE ;
Signature · 1 line
1.6.0.6
Len Brown
reviewerPATCH 4/22 ACPICA: Fix for possible fault in acpi_ex_release_mutex
In reply to Len BrownFrom: Lin Ming <[email protected]>
Fixed a problem with the AML Mutex handling function acpi_ex_release_mutex where the function could fault under the very rare condition when the interpreter has blocked, the interpreter lock is released, the interpreter is then reentered via the same thread, and attempts to acquire a mutex that was previously acquired. FreeBSD report 140979.
http://www.freebsd.org/cgi/query-pr.cgi?pr=140979
--- drivers/acpi/acpica/exmutex.c | 21 ++++++++++----------- 1 files changed, 10 insertions(+), 11 deletions(-)
drivers/acpi/acpica/exmutex.c +10 -11
@@ -359,6 +359,7 @@ acpi_ex_release_mutex(union acpi_operand_object *obj_desc, {acpi_status status =AE_OK ;u8 previous_sync_level; +struct acpi_thread_state *owner_thread;ACPI_FUNCTION_TRACE (ex_release_mutex);
@@ -366,9 +367,11 @@ acpi_ex_release_mutex(union acpi_operand_object *obj_desc,return_ACPI_STATUS (AE_BAD_PARAMETER ); } + owner_thread = obj_desc->mutex.owner_thread; +/* The mutex must have been previously acquired in order to release it */ -if (!obj_desc->mutex.owner_thread) { +if (!owner_thread) {ACPI_ERROR ((AE_INFO ,"Cannot release Mutex [%4.4s], not acquired" ,acpi_ut_get_node_name (obj_desc->mutex.node)));
@@ -387,16 +390,13 @@ acpi_ex_release_mutex(union acpi_operand_object *obj_desc,* The Mutex is owned, but this thread must be the owner. * Special case for Global Lock, any thread can release */ -if ((obj_desc->mutex.owner_thread->thread_id != - walk_state->thread->thread_id) - && (obj_desc != acpi_gbl_global_lock_mutex)) { +if ((owner_thread->thread_id != walk_state->thread->thread_id) && + (obj_desc != acpi_gbl_global_lock_mutex)) {ACPI_ERROR ((AE_INFO ,"Thread %p cannot release Mutex [%4.4s] acquired by thread %p" ,ACPI_CAST_PTR (void, walk_state->thread->thread_id),acpi_ut_get_node_name (obj_desc->mutex.node), -ACPI_CAST_PTR (void, - obj_desc->mutex.owner_thread-> - thread_id))); +ACPI_CAST_PTR (void, owner_thread->thread_id)));return_ACPI_STATUS (AE_AML_NOT_OWNER ); }
@@ -407,8 +407,7 @@ acpi_ex_release_mutex(union acpi_operand_object *obj_desc,* different level can only mean that the mutex ordering rule is being * violated. This behavior is clarified in ACPI 4.0 specification. */ -if (obj_desc->mutex.sync_level != - walk_state->thread->current_sync_level) { +if (obj_desc->mutex.sync_level != owner_thread->current_sync_level) { ACPI_ERROR((AE_INFO, "Cannot release Mutex [%4.4s], SyncLevel mismatch: mutex %u current %u", acpi_ut_get_node_name(obj_desc->mutex.node),
@@ -423,7 +422,7 @@ acpi_ex_release_mutex(union acpi_operand_object *obj_desc,* acquired, but are not released in reverse order. */ previous_sync_level = - walk_state->thread->acquired_mutex_list->mutex.original_sync_level; + owner_thread->acquired_mutex_list->mutex.original_sync_level; status =acpi_ex_release_mutex_object (obj_desc);if (ACPI_FAILURE (status)) {
@@ -434,7 +433,7 @@ acpi_ex_release_mutex(union acpi_operand_object *obj_desc,/* Restore the previous sync_level */ - walk_state->thread->current_sync_level = previous_sync_level; + owner_thread->current_sync_level = previous_sync_level; }return_ACPI_STATUS (status); }
Signature · 1 line
1.6.0.6
Len Brown
reviewerPATCH 5/22 ACPICA: Update version to 20100304
In reply to Len BrownFrom: Bob Moore <[email protected]>
Version 20100304.
--- include/acpi/acpixf.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
include/acpi/acpixf.h +1 -1
@@ -47,7 +47,7 @@/* Current ACPICA subsystem version in YYYYMMDD format */ -#define ACPI_CA_VERSION 0x20100121 +#define ACPI_CA_VERSION 0x20100304#include "actypes.h" #include "actbl.h"
Signature · 1 line
1.6.0.6
Len Brown
reviewerPATCH 6/22 ACPICA: Update comments/headers, no functional change
In reply to Len BrownFrom: Bob Moore <[email protected]>
Also split some long lines.
--- drivers/acpi/acpica/exmutex.c | 21 +++++++++++---------- 1 files changed, 11 insertions(+), 10 deletions(-)
drivers/acpi/acpica/exmutex.c +11 -10
@@ -85,10 +85,10 @@ void acpi_ex_unlink_mutex(union acpi_operand_object *obj_desc) (obj_desc->mutex.prev)->mutex.next = obj_desc->mutex.next;/* -* Migrate the previous sync level associated with this mutex to the -* previous mutex on the list so that it may be preserved. This handles -* the case where several mutexes have been acquired at the same level, -* but are not released in opposite order. +* Migrate the previous sync level associated with this mutex to +* the previous mutex on the list so that it may be preserved. +* This handles the case where several mutexes have been acquired +* at the same level, but are not released in opposite order. */ (obj_desc->mutex.prev)->mutex.original_sync_level = obj_desc->mutex.original_sync_level;
@@ -101,8 +101,8 @@ void acpi_ex_unlink_mutex(union acpi_operand_object *obj_desc)* * FUNCTION: acpi_ex_link_mutex * -* PARAMETERS: obj_desc - The mutex to be linked -* Thread - Current executing thread object +* PARAMETERS: obj_desc - The mutex to be linked +* Thread - Current executing thread object * * RETURN: None *
@@ -138,9 +138,9 @@ acpi_ex_link_mutex(union acpi_operand_object *obj_desc,* * FUNCTION: acpi_ex_acquire_mutex_object * -* PARAMETERS: time_desc - Timeout in milliseconds +* PARAMETERS: Timeout - Timeout in milliseconds * obj_desc - Mutex object -* Thread - Current thread state +* thread_id - Current thread state * * RETURN: Status *
@@ -234,7 +234,7 @@ acpi_ex_acquire_mutex(union acpi_operand_object *time_desc,return_ACPI_STATUS (AE_BAD_PARAMETER ); } -/* Must have a valid thread ID */ +/* Must have a valid thread state struct */ if (!walk_state->thread) { ACPI_ERROR((AE_INFO,
@@ -435,6 +435,7 @@ acpi_ex_release_mutex(union acpi_operand_object *obj_desc, owner_thread->current_sync_level = previous_sync_level; } +return_ACPI_STATUS (status); }
@@ -442,7 +443,7 @@ acpi_ex_release_mutex(union acpi_operand_object *obj_desc,* * FUNCTION: acpi_ex_release_all_mutexes * -* PARAMETERS: Thread - Current executing thread object +* PARAMETERS: Thread - Current executing thread object * * RETURN: Status *
Signature · 1 line
1.6.0.6
Len Brown
reviewerPATCH 7/22 ACPICA: Fix for acpi_reallocate_root_table for incorrect root table copy
In reply to Len BrownFrom: Alexey Starikovskiy <[email protected]>
When copying the root table to the new allocation, the length used was incorrect. The new size was used instead of the current table size, meaning too much data was copied.
--- drivers/acpi/acpica/tbxface.c | 23 ++++++++++++++++++----- 1 files changed, 18 insertions(+), 5 deletions(-)
drivers/acpi/acpica/tbxface.c +18 -5
@@ -172,6 +172,7 @@ acpi_status acpi_reallocate_root_table(void) {struct acpi_table_desc *tables;acpi_size new_size; +acpi_size current_size;ACPI_FUNCTION_TRACE (acpi_reallocate_root_table);
@@ -183,9 +184,15 @@ acpi_status acpi_reallocate_root_table(void)return_ACPI_STATUS (AE_SUPPORT ); } - new_size = ((acpi_size ) acpi_gbl_root_table_list.count + -ACPI_ROOT_TABLE_SIZE_INCREMENT ) * -sizeof (struct acpi_table_desc ); +/* +* Get the current size of the root table and add the default +* increment to create the new table size. +*/ + current_size = (acpi_size ) + acpi_gbl_root_table_list.count *sizeof (struct acpi_table_desc ); + + new_size = current_size + + (ACPI_ROOT_TABLE_SIZE_INCREMENT *sizeof (struct acpi_table_desc ));/* Create new array and copy the old array */
@@ -194,10 +201,16 @@ acpi_status acpi_reallocate_root_table(void)return_ACPI_STATUS (AE_NO_MEMORY ); } -ACPI_MEMCPY (tables, acpi_gbl_root_table_list.tables, new_size); +ACPI_MEMCPY (tables, acpi_gbl_root_table_list.tables, current_size); - acpi_gbl_root_table_list.size = acpi_gbl_root_table_list.count; +/* +* Update the root table descriptor. The new size will be the current +* number of tables plus the increment, independent of the reserved +* size of the original table list. +*/ acpi_gbl_root_table_list.tables = tables; + acpi_gbl_root_table_list.size = + acpi_gbl_root_table_list.count +ACPI_ROOT_TABLE_SIZE_INCREMENT ; acpi_gbl_root_table_list.flags =ACPI_ROOT_ORIGIN_ALLOCATED |ACPI_ROOT_ALLOW_RESIZE ;
Signature · 1 line
1.6.0.6
Len Brown
reviewerPATCH 8/22 ACPICA: Add write support for DataTable operation regions
In reply to Len BrownFrom: Bob Moore <[email protected]>
The original implementation only supported reading from a DataTable region. However, some machines have been seen that actually write to the ACPI table contained in such a region. This change adds support for writing to a DataTable region.
--- drivers/acpi/acpica/exregion.c | 13 ++++++++++--- 1 files changed, 10 insertions(+), 3 deletions(-)
drivers/acpi/acpica/exregion.c +10 -3
@@ -491,8 +491,10 @@ acpi_ex_data_table_space_handler(u32 function, {ACPI_FUNCTION_TRACE (ex_data_table_space_handler); -/* Perform the memory read or write */ - +/* +* Perform the memory read or write. The bit_width was already +* validated. +*/ switch (function) {case ACPI_READ :
@@ -502,9 +504,14 @@ acpi_ex_data_table_space_handler(u32 function,break ;case ACPI_WRITE : + +ACPI_MEMCPY (ACPI_PHYSADDR_TO_PTR (address), +ACPI_CAST_PTR (char, value),ACPI_DIV_8 (bit_width)); +break ; +default : -return_ACPI_STATUS (AE_SUPPORT ); +return_ACPI_STATUS (AE_BAD_PARAMETER ); }return_ACPI_STATUS (AE_OK );
Signature · 1 line
1.6.0.6
Len Brown
reviewerPATCH 9/22 ACPICA: Add detection of corrupted/replaced DSDT
In reply to Len BrownFrom: Lin Ming <[email protected]>
This change adds support to detect a DSDT that has been corrupted and/or replaced from outside the OS (by firmware). This is typically catastrophic for the system, but has been seen on some machines.
https://bugzilla.kernel.org/show_bug.cgi?id=14679
--- drivers/acpi/acpica/acglobal.h | 5 +++++ drivers/acpi/acpica/actables.h | 2 ++ drivers/acpi/acpica/psxface.c | 4 ++++ drivers/acpi/acpica/tbutils.c | 38 ++++++++++++++++++++++++++++++++++++++ drivers/acpi/acpica/tbxface.c | 32 ++++++++++++-------------------- 5 files changed, 61 insertions(+), 20 deletions(-)
drivers/acpi/acpica/acglobal.h +5 -0
@@ -165,6 +165,11 @@ ACPI_EXTERN struct acpi_generic_address acpi_gbl_xpm1a_enable; ACPI_EXTERN struct acpi_generic_address acpi_gbl_xpm1b_status; ACPI_EXTERN struct acpi_generic_address acpi_gbl_xpm1b_enable; +/* DSDT information. Used to check for DSDT corruption */ + +ACPI_EXTERN struct acpi_table_desc *acpi_gbl_DSDT; +ACPI_EXTERN struct acpi_table_header acpi_gbl_original_dsdt_header; +/* * Handle both ACPI 1.0 and ACPI 2.0 Integer widths. The integer width is * determined by the revision of the DSDT: If the DSDT revision is less than
drivers/acpi/acpica/actables.h +2 -0
@@ -107,6 +107,8 @@ u8 acpi_tb_checksum(u8 *buffer, u32 length);acpi_status acpi_tb_verify_checksum (struct acpi_table_header *table,u32 length); +void acpi_tb_check_dsdt_header (void ); +void acpi_tb_install_table (acpi_physical_address address,char *signature,u32 table_index);
drivers/acpi/acpica/psxface.c +4 -0
@@ -220,6 +220,10 @@ acpi_status acpi_ps_execute_method(struct acpi_evaluate_info *info)ACPI_FUNCTION_TRACE (ps_execute_method); +/* Quick validation of DSDT header */ + +acpi_tb_check_dsdt_header (); +/* Validate the Info and method Node */ if (!info || !info->resolved_node) {
drivers/acpi/acpica/tbutils.c +38 -0
@@ -349,6 +349,44 @@ u8 acpi_tb_checksum(u8 *buffer, u32 length)/******************************************************************************* * +* FUNCTION: acpi_tb_check_dsdt_header +* +* PARAMETERS: None +* +* RETURN: None +* +* DESCRIPTION: Quick compare to check validity of the DSDT. This will detect +* if the DSDT has been replaced from outside the OS and/or if +* the DSDT header has been corrupted. +* +******************************************************************************/ + +void acpi_tb_check_dsdt_header (void ) +{ + +/* Compare original length and checksum to current values */ + +if (acpi_gbl_original_dsdt_header.length != + acpi_gbl_DSDT->pointer->length + || acpi_gbl_original_dsdt_header.checksum != + acpi_gbl_DSDT->pointer->checksum) { +ACPI_ERROR ((AE_INFO , +"The DSDT has been corrupted or replaced - old, new headers below" )); +acpi_tb_print_table_header (0 , &acpi_gbl_original_dsdt_header); +acpi_tb_print_table_header (acpi_gbl_DSDT->address, + acpi_gbl_DSDT->pointer); + +/* Disable further error messages */ + + acpi_gbl_original_dsdt_header.length = + acpi_gbl_DSDT->pointer->length; + acpi_gbl_original_dsdt_header.checksum = + acpi_gbl_DSDT->pointer->checksum; + } +} + +/******************************************************************************* +* * FUNCTION: acpi_tb_install_table * * PARAMETERS: Address - Physical address of DSDT or FACS
drivers/acpi/acpica/tbxface.c +12 -20
@@ -518,33 +518,25 @@ static acpi_status acpi_tb_load_namespace(void) (void )acpi_ut_acquire_mutex (ACPI_MTX_TABLES ); + acpi_gbl_DSDT = &acpi_gbl_root_table_list.tables[ACPI_TABLE_INDEX_DSDT ]; +/* -* Load the namespace. The DSDT is required, but any SSDT and PSDT tables -* are optional. +* Load the namespace. The DSDT is required, but any SSDT and +* PSDT tables are optional. Verify the DSDT. */ if (!acpi_gbl_root_table_list.count || - !ACPI_COMPARE_NAME (& - (acpi_gbl_root_table_list. - tables[ACPI_TABLE_INDEX_DSDT ].signature), -ACPI_SIG_DSDT ) - || -ACPI_FAILURE (acpi_tb_verify_table - (&acpi_gbl_root_table_list. - tables[ACPI_TABLE_INDEX_DSDT ]))) { + !ACPI_COMPARE_NAME (&acpi_gbl_DSDT->signature,ACPI_SIG_DSDT ) || +ACPI_FAILURE (acpi_tb_verify_table (acpi_gbl_DSDT))) { status =AE_NO_ACPI_TABLES ; goto unlock_and_exit; } -/* A valid DSDT is required */ - - status = -acpi_tb_verify_table (&acpi_gbl_root_table_list. - tables[ACPI_TABLE_INDEX_DSDT ]); -if (ACPI_FAILURE (status)) { - - status =AE_NO_ACPI_TABLES ; - goto unlock_and_exit; - } +/* +* Save the original DSDT header for detection of table corruption +* and/or replacement of the DSDT from outside the OS. +*/ +ACPI_MEMCPY (&acpi_gbl_original_dsdt_header, acpi_gbl_DSDT->pointer, +sizeof (struct acpi_table_header )); (void )acpi_ut_release_mutex (ACPI_MTX_TABLES );
Signature · 1 line
1.6.0.6
Len Brown
reviewerPATCH 10/22 ACPICA: Add subsystem option to force copy of DSDT to local memory
In reply to Len BrownFrom: Lin Ming <[email protected]>
Optionally copy the entire DSDT to local memory (instead of simply mapping it.) There are some BIOSs that corrupt or replace the original DSDT, creating the need for this option. Default is FALSE, do not copy the DSDT.
https://bugzilla.kernel.org/show_bug.cgi?id=14679
--- drivers/acpi/acpica/acglobal.h | 8 ++++++++ drivers/acpi/acpica/actables.h | 2 ++ drivers/acpi/acpica/psxface.c | 1 + drivers/acpi/acpica/tbutils.c | 35 +++++++++++++++++++++++++++++++++++ drivers/acpi/acpica/tbxface.c | 10 ++++++++++ include/acpi/acpixf.h | 1 + 6 files changed, 57 insertions(+), 0 deletions(-)
drivers/acpi/acpica/acglobal.h +8 -0
@@ -117,6 +117,14 @@ u8 ACPI_INIT_GLOBAL(acpi_gbl_use_default_register_widths, TRUE);*/ u8 ACPI_INIT_GLOBAL (acpi_gbl_enable_aml_debug_object ,FALSE ); +/* +* Optionally copy the entire DSDT to local memory (instead of simply +* mapping it.) There are some BIOSs that corrupt or replace the original +* DSDT, creating the need for this option. Default is FALSE, do not copy +* the DSDT. +*/ +u8 ACPI_INIT_GLOBAL (acpi_gbl_copy_dsdt_locally ,FALSE ); +/* acpi_gbl_FADT is a local copy of the FADT, converted to a common format. */ struct acpi_table_fadt acpi_gbl_FADT;
drivers/acpi/acpica/actables.h +2 -0
@@ -109,6 +109,8 @@ acpi_tb_verify_checksum(struct acpi_table_header *table, u32 length);void acpi_tb_check_dsdt_header (void ); +void acpi_tb_copy_dsdt (struct acpi_table_desc *table_desc); +void acpi_tb_install_table (acpi_physical_address address,char *signature,u32 table_index);
drivers/acpi/acpica/psxface.c +1 -0
@@ -46,6 +46,7 @@#include "acparser.h" #include "acdispat.h" #include "acinterp.h" +#include "actables.h" #include "amlcode.h" #define _COMPONENT ACPI_PARSER
drivers/acpi/acpica/tbutils.c +35 -0
@@ -387,6 +387,41 @@ void acpi_tb_check_dsdt_header(void)/******************************************************************************* * +* FUNCTION: acpi_tb_copy_dsdt +* +* PARAMETERS: table_desc - Installed table to copy +* +* RETURN: None +* +* DESCRIPTION: Implements a subsystem option to copy the DSDT to local memory. +* Some very bad BIOSs are known to either corrupt the DSDT or +* install a new, bad DSDT. This copy works around the problem. +* +******************************************************************************/ + +void acpi_tb_copy_dsdt (struct acpi_table_desc *table_desc) +{ +struct acpi_table_header *new_table; + + new_table =ACPI_ALLOCATE (table_desc->length); +if (!new_table) { +ACPI_ERROR ((AE_INFO ,"Could not copy DSDT of length 0x%X" , + table_desc->length)); +return ; + } + +ACPI_MEMCPY (new_table, table_desc->pointer, table_desc->length); +acpi_tb_delete_table (table_desc); + table_desc->pointer = new_table; + table_desc->flags =ACPI_TABLE_ORIGIN_ALLOCATED ; + +ACPI_INFO ((AE_INFO , +"Forced DSDT copy: length 0x%05X copied locally, original unmapped" , + new_table->length)); +} + +/******************************************************************************* +* * FUNCTION: acpi_tb_install_table * * PARAMETERS: Address - Physical address of DSDT or FACS
drivers/acpi/acpica/tbxface.c +10 -0
@@ -532,6 +532,16 @@ static acpi_status acpi_tb_load_namespace(void) }/* +* Optionally copy the entire DSDT to local memory (instead of simply +* mapping it.) There are some BIOSs that corrupt or replace the original +* DSDT, creating the need for this option. Default is FALSE, do not copy +* the DSDT. +*/ +if (acpi_gbl_copy_dsdt_locally) { +acpi_tb_copy_dsdt (acpi_gbl_DSDT); + } + +/* * Save the original DSDT header for detection of table corruption * and/or replacement of the DSDT from outside the OS. */
include/acpi/acpixf.h +1 -0
@@ -68,6 +68,7 @@ extern u8 acpi_gbl_use_default_register_widths;extern acpi_name acpi_gbl_trace_method_name;extern u32 acpi_gbl_trace_flags;extern u8 acpi_gbl_enable_aml_debug_object; +extern u8 acpi_gbl_copy_dsdt_locally;extern u32 acpi_current_gpe_count;extern struct acpi_table_fadt acpi_gbl_FADT;
Signature · 1 line
1.6.0.6
Len Brown
reviewerPATCH 11/22 ACPICA: Update DSDT copy/detection.
In reply to Len BrownFrom: Bob Moore <[email protected]>
Move initialization of DSDT pointer. Emit address of DSDT in the dump of both table headers (good/bad DSDT). Now handles the case where the root table can be reallocated, which would invalidate the original pointer.
--- drivers/acpi/acpica/acglobal.h | 2 +- drivers/acpi/acpica/actables.h | 2 +- drivers/acpi/acpica/tbutils.c | 23 ++++++++++++----------- drivers/acpi/acpica/tbxface.c | 29 +++++++++++++++++++++++------ drivers/acpi/acpica/utglobal.c | 1 + 5 files changed, 38 insertions(+), 19 deletions(-)
drivers/acpi/acpica/acglobal.h +1 -1
@@ -175,7 +175,7 @@ ACPI_EXTERN struct acpi_generic_address acpi_gbl_xpm1b_enable;/* DSDT information. Used to check for DSDT corruption */ -ACPI_EXTERN struct acpi_table_desc *acpi_gbl_DSDT; +ACPI_EXTERN struct acpi_table_header *acpi_gbl_DSDT; ACPI_EXTERN struct acpi_table_header acpi_gbl_original_dsdt_header;/*
drivers/acpi/acpica/actables.h +1 -1
@@ -109,7 +109,7 @@ acpi_tb_verify_checksum(struct acpi_table_header *table, u32 length);void acpi_tb_check_dsdt_header (void ); -void acpi_tb_copy_dsdt (struct acpi_table_desc *table_desc); +struct acpi_table_header *acpi_tb_copy_dsdt (u32 table_index); void acpi_tb_install_table(acpi_physical_address address,
drivers/acpi/acpica/tbutils.c +12 -11
@@ -366,22 +366,18 @@ void acpi_tb_check_dsdt_header(void)/* Compare original length and checksum to current values */ -if (acpi_gbl_original_dsdt_header.length != - acpi_gbl_DSDT->pointer->length - || acpi_gbl_original_dsdt_header.checksum != - acpi_gbl_DSDT->pointer->checksum) { +if (acpi_gbl_original_dsdt_header.length != acpi_gbl_DSDT->length || + acpi_gbl_original_dsdt_header.checksum != acpi_gbl_DSDT->checksum) {ACPI_ERROR ((AE_INFO ,"The DSDT has been corrupted or replaced - old, new headers below" ));acpi_tb_print_table_header (0 , &acpi_gbl_original_dsdt_header); -acpi_tb_print_table_header (acpi_gbl_DSDT->address, - acpi_gbl_DSDT->pointer); +acpi_tb_print_table_header (0 , acpi_gbl_DSDT);/* Disable further error messages */ - acpi_gbl_original_dsdt_header.length = - acpi_gbl_DSDT->pointer->length; + acpi_gbl_original_dsdt_header.length = acpi_gbl_DSDT->length; acpi_gbl_original_dsdt_header.checksum = - acpi_gbl_DSDT->pointer->checksum; + acpi_gbl_DSDT->checksum; } }
@@ -399,15 +395,18 @@ void acpi_tb_check_dsdt_header(void)* ******************************************************************************/ -void acpi_tb_copy_dsdt (struct acpi_table_desc *table_desc) +struct acpi_table_header *acpi_tb_copy_dsdt (u32 table_index) {struct acpi_table_header *new_table; +struct acpi_table_desc *table_desc; + + table_desc = &acpi_gbl_root_table_list.tables[table_index]; new_table =ACPI_ALLOCATE (table_desc->length);if (!new_table) {ACPI_ERROR ((AE_INFO ,"Could not copy DSDT of length 0x%X" , table_desc->length)); -return ; +return (NULL ); }ACPI_MEMCPY (new_table, table_desc->pointer, table_desc->length);
@@ -418,6 +417,8 @@ void acpi_tb_copy_dsdt(struct acpi_table_desc *table_desc)ACPI_INFO ((AE_INFO ,"Forced DSDT copy: length 0x%05X copied locally, original unmapped" , new_table->length)); + +return (new_table); }/*******************************************************************************
drivers/acpi/acpica/tbxface.c +23 -6
@@ -513,39 +513,56 @@ static acpi_status acpi_tb_load_namespace(void) {acpi_status status;u32 i; +struct acpi_table_header *new_dsdt;ACPI_FUNCTION_TRACE (tb_load_namespace); (void )acpi_ut_acquire_mutex (ACPI_MTX_TABLES ); - acpi_gbl_DSDT = &acpi_gbl_root_table_list.tables[ACPI_TABLE_INDEX_DSDT ]; -/* * Load the namespace. The DSDT is required, but any SSDT and * PSDT tables are optional. Verify the DSDT. */ if (!acpi_gbl_root_table_list.count || - !ACPI_COMPARE_NAME (&acpi_gbl_DSDT->signature,ACPI_SIG_DSDT ) || -ACPI_FAILURE (acpi_tb_verify_table (acpi_gbl_DSDT))) { + !ACPI_COMPARE_NAME (& + (acpi_gbl_root_table_list. + tables[ACPI_TABLE_INDEX_DSDT ].signature), +ACPI_SIG_DSDT ) + || +ACPI_FAILURE (acpi_tb_verify_table + (&acpi_gbl_root_table_list. + tables[ACPI_TABLE_INDEX_DSDT ]))) { status =AE_NO_ACPI_TABLES ; goto unlock_and_exit; }/* +* Save the DSDT pointer for simple access. This is the mapped memory +* address. We must take care here because the address of the .Tables +* array can change dynamically as tables are loaded at run-time. Note: +* .Pointer field is not validated until after call to acpi_tb_verify_table. +*/ + acpi_gbl_DSDT = + acpi_gbl_root_table_list.tables[ACPI_TABLE_INDEX_DSDT ].pointer; + +/* * Optionally copy the entire DSDT to local memory (instead of simply * mapping it.) There are some BIOSs that corrupt or replace the original * DSDT, creating the need for this option. Default is FALSE, do not copy * the DSDT. */ if (acpi_gbl_copy_dsdt_locally) { -acpi_tb_copy_dsdt (acpi_gbl_DSDT); + new_dsdt =acpi_tb_copy_dsdt (ACPI_TABLE_INDEX_DSDT ); +if (new_dsdt) { + acpi_gbl_DSDT = new_dsdt; + } }/* * Save the original DSDT header for detection of table corruption * and/or replacement of the DSDT from outside the OS. */ -ACPI_MEMCPY (&acpi_gbl_original_dsdt_header, acpi_gbl_DSDT->pointer, +ACPI_MEMCPY (&acpi_gbl_original_dsdt_header, acpi_gbl_DSDT,sizeof (struct acpi_table_header )); (void )acpi_ut_release_mutex (ACPI_MTX_TABLES );
drivers/acpi/acpica/utglobal.c +1 -0
@@ -785,6 +785,7 @@ acpi_status acpi_ut_init_globals(void)/* Miscellaneous variables */ + acpi_gbl_DSDT =NULL ; acpi_gbl_cm_single_step = FALSE; acpi_gbl_db_terminate_threads = FALSE; acpi_gbl_shutdown = FALSE;
Signature · 1 line
1.6.0.6
Len Brown
reviewerPATCH 12/22 ACPI: add boot option acpi=copy_dsdt to fix corrupt DSDT
In reply to Len BrownFrom: Lin Ming <[email protected]>
Some BIOS on Toshiba machines corrupt the DSDT, so add a new
boot option acpi=copy_dsdt to workaround it.
Add warning message to ask users to use this option if corrupt DSDT detected.
Also build a DMI blacklist to check it and automatically copy DSDT.
https://bugzilla.kernel.org/show_bug.cgi?id=14679
--- Documentation/kernel-parameters.txt | 1 + arch/x86/kernel/acpi/boot.c | 4 +++ drivers/acpi/acpica/tbutils.c | 4 +++ drivers/acpi/bus.c | 37 +++++++++++++++++++++++++++++++++++ 4 files changed, 46 insertions(+), 0 deletions(-)
Documentation/kernel-parameters.txt +1 -0
@@ -151,6 +151,7 @@ and is between 256 and 4096 characters. It is defined in the file strict -- Be less tolerant of platforms that are not strictly ACPI specification compliant. rsdt -- prefer RSDT over (default) XSDT + copy_dsdt -- copy DSDT to memory See also Documentation/power/pm.txt, pci=noacpi
arch/x86/kernel/acpi/boot.c +4 -0
@@ -1576,6 +1576,10 @@ static int __init parse_acpi(char *arg)/* "acpi=noirq" disables ACPI interrupt routing */ else if (strcmp(arg, "noirq") == 0) { acpi_noirq_set(); + } + /* "acpi=copy_dsdt" copys DSDT */ + else if (strcmp(arg, "copy_dsdt") == 0) { + acpi_gbl_copy_dsdt_locally = 1; } else { /* Core will printk when we return error. */ return -EINVAL;
drivers/acpi/acpica/tbutils.c +4 -0
@@ -373,6 +373,10 @@ void acpi_tb_check_dsdt_header(void)acpi_tb_print_table_header (0 , &acpi_gbl_original_dsdt_header);acpi_tb_print_table_header (0 , acpi_gbl_DSDT); +ACPI_ERROR ((AE_INFO , +"Please send DMI info to [email protected]\n" +"If system does not work as expected, please boot with acpi=copy_dsdt" )); +/* Disable further error messages */ acpi_gbl_original_dsdt_header.length = acpi_gbl_DSDT->length;
drivers/acpi/bus.c +37 -0
@@ -69,6 +69,37 @@ static struct dmi_system_id __cpuinitdata power_nocheck_dmi_table[] = { }; +static int set_copy_dsdt (const struct dmi_system_id *id) +{ +printk (KERN_NOTICE "%s detected - " +"force copy of DSDT to local memory\n" , id->ident); + acpi_gbl_copy_dsdt_locally =1 ; +return 0 ; +} + +static struct dmi_system_id dsdt_dmi_table[]__initdata = { +/* +* Insyde BIOS on some TOSHIBA machines corrupt the DSDT. +* https://bugzilla.kernel.org/show_bug.cgi?id=14679 +*/ + { + .callback = set_copy_dsdt, + .ident ="TOSHIBA Satellite A505" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"TOSHIBA" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"Satellite A505" ), + }, + }, + { + .callback = set_copy_dsdt, + .ident ="TOSHIBA Satellite L505D" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"TOSHIBA" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"Satellite L505D" ), + }, + } +}; +/* -------------------------------------------------------------------------- Device Management -------------------------------------------------------------------------- */
@@ -813,6 +844,12 @@ void __init acpi_early_init(void) acpi_gbl_permanent_mmap =1 ; +/* +* If the machine falls into the DMI check table, +* DSDT will be copied to memory +*/ +dmi_check_system (dsdt_dmi_table); + status =acpi_reallocate_root_table ();if (ACPI_FAILURE (status)) { printk(KERN_ERR PREFIX
Signature · 1 line
1.6.0.6
Re: [PATCH 12/22] ACPI: add boot option acpi=copy_dsdt to fix corrupt DSDT
I *really* don't think adding a new DMI blacklist is a good idea. Either the hardware is doing something insane and Windows always copies the DSDT, or there's method to the hardware's madness and Windows copes with this somehow. This patch just papers over the problem and doesn't actually attempt to work out what's really going on.
Signature · 1 line
Matthew Garrett | [email protected]
Len Brown
reviewerPATCH 13/22 ACPICA: Minimize the differences between linux GPE code and ACPICA code base
In reply to Len BrownFrom: Lin Ming <[email protected]>
We have ported Rafael's major GPE changes
(ACPI: Use GPE reference counting to support shared GPEs) into ACPICA code base. But the port and Rafael's original patch have some differences, so we made below patch to make linux GPE code consistent with ACPICA code base.
Most changes are about comments and coding styles. Other noticeable changes are based on:
Rafael: Reduce code duplication related to GPE lookup
https://patchwork.kernel.org/patch/86237/
Rafael: Always use the same lock for GPE locking
https://patchwork.kernel.org/patch/90471/
A new field gpe_count in struct acpi_gpe_block_info to record the number of individual GPEs in block.
Rename acpi_ev_save_method_info to acpi_ev_match_gpe_method.
--- drivers/acpi/acpica/acevents.h | 7 +- drivers/acpi/acpica/aclocal.h | 5 +- drivers/acpi/acpica/evgpe.c | 153 +++++++++++++++++++++++--------- drivers/acpi/acpica/evgpeblk.c | 143 ++++++++++++++++-------------- drivers/acpi/acpica/evxface.c | 20 +++-- drivers/acpi/acpica/evxfevnt.c | 191 +++++++++++++++++++++++---------------- drivers/acpi/acpica/exoparg2.c | 27 ------ drivers/acpi/scan.c | 2 +- drivers/acpi/system.c | 5 +- include/acpi/acexcep.h | 2 +- include/acpi/acpixf.h | 11 ++- include/acpi/actypes.h | 42 ++++----- 12 files changed, 346 insertions(+), 262 deletions(-)
drivers/acpi/acpica/acevents.h +4 -3
@@ -85,6 +85,10 @@ acpi_status acpi_ev_disable_gpe(struct acpi_gpe_event_info *gpe_event_info);struct acpi_gpe_event_info *acpi_ev_get_gpe_event_info (acpi_handle gpe_device,u32 gpe_number); +struct acpi_gpe_event_info *acpi_ev_low_get_gpe_info (u32 gpe_number, +struct acpi_gpe_block_info + *gpe_block); +/* * evgpeblk */
@@ -118,9 +122,6 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info,u32 acpi_ev_gpe_detect (struct acpi_gpe_xrupt_info *gpe_xrupt_list); -acpi_status -acpi_ev_check_for_wake_only_gpe (struct acpi_gpe_event_info *gpe_event_info); -acpi_status acpi_ev_gpe_initialize (void );/*
drivers/acpi/acpica/aclocal.h +3 -2
@@ -427,8 +427,8 @@ struct acpi_gpe_event_info {struct acpi_gpe_register_info *register_info;/* Backpointer to register info */ u8 flags;/* Misc info about this GPE */ u8 gpe_number;/* This GPE */ -u8 runtime_count; -u8 wakeup_count; +u8 runtime_count;/* References to a run GPE */ +u8 wakeup_count;/* References to a wake GPE */ };/* Information about a GPE register pair, one per each status/enable pair in an array */
@@ -454,6 +454,7 @@ struct acpi_gpe_block_info {struct acpi_gpe_event_info *event_info;/* One for each GPE */ struct acpi_generic_address block_address;/* Base address of the block */ u32 register_count;/* Number of register pairs in block */ +u16 gpe_count;/* Number of individual GPEs in block */ u8 block_base_number;/* Base GPE number for this block */ };
drivers/acpi/acpica/evgpe.c +109 -44
250 lines not on this page · raw message
drivers/acpi/acpica/evgpeblk.c +76 -67
310 lines not on this page · raw message
drivers/acpi/acpica/evxface.c +11 -9
@@ -682,14 +682,13 @@ acpi_install_gpe_handler(acpi_handle gpe_device,/* Parameter validation */ -if ((!address) || (type >ACPI_GPE_XRUPT_TYPE_MASK )) { - status =AE_BAD_PARAMETER ; - goto exit; +if ((!address) || (type & ~ACPI_GPE_XRUPT_TYPE_MASK )) { +return_ACPI_STATUS (AE_BAD_PARAMETER ); } status =acpi_ut_acquire_mutex (ACPI_MTX_EVENTS );if (ACPI_FAILURE (status)) { - goto exit; +return_ACPI_STATUS (status); }/* Ensure that we have a valid GPE number */
@@ -720,6 +719,13 @@ acpi_install_gpe_handler(acpi_handle gpe_device, handler->context = context; handler->method_node = gpe_event_info->dispatch.method_node; +/* Disable the GPE before installing the handler */ + + status =acpi_ev_disable_gpe (gpe_event_info); +if (ACPI_FAILURE (status)) { + goto unlock_and_exit; + } +/* Install the handler */ flags =acpi_os_acquire_lock (acpi_gbl_gpe_lock);
@@ -733,12 +739,8 @@ acpi_install_gpe_handler(acpi_handle gpe_device,acpi_os_release_lock (acpi_gbl_gpe_lock, flags); - unlock_and_exit: +unlock_and_exit: (void )acpi_ut_release_mutex (ACPI_MTX_EVENTS ); - exit: -if (ACPI_FAILURE (status)) -ACPI_EXCEPTION ((AE_INFO , status, -"Installing notify handler failed" ));return_ACPI_STATUS (status); }
drivers/acpi/acpica/evxfevnt.c +113 -78
353 lines not on this page · raw message
drivers/acpi/acpica/exoparg2.c +0 -27
@@ -119,33 +119,6 @@ acpi_status acpi_ex_opcode_2A_0T_0R(struct acpi_walk_state *walk_state) status =AE_AML_OPERAND_TYPE ;break ; } -#ifdef ACPI_GPE_NOTIFY_CHECK -/* -* GPE method wake/notify check. Here, we want to ensure that we -* don't receive any "DeviceWake" Notifies from a GPE _Lxx or _Exx -* GPE method during system runtime. If we do, the GPE is marked -* as "wake-only" and disabled. -* -* 1) Is the Notify() value == device_wake? -* 2) Is this a GPE deferred method? (An _Lxx or _Exx method) -* 3) Did the original GPE happen at system runtime? -* (versus during wake) -* -* If all three cases are true, this is a wake-only GPE that should -* be disabled at runtime. -*/ -if (value ==2 ) {/* device_wake */ - status = -acpi_ev_check_for_wake_only_gpe (walk_state-> - gpe_event_info); -if (ACPI_FAILURE (status)) { - -/* AE_WAKE_ONLY_GPE only error, means ignore this notify */ - - return_ACPI_STATUS(AE_OK) - } - } -#endif /* * Dispatch the notify to the appropriate handler
drivers/acpi/scan.c +1 -1
@@ -765,7 +765,7 @@ static void acpi_bus_set_run_wake_flags(struct acpi_device *device) } status =acpi_get_gpe_status (NULL , device->wakeup.gpe_number, -ACPI_NOT_ISR , &event_status); + &event_status);if (status ==AE_OK ) device->wakeup.flags.run_wake = !!(event_status &ACPI_EVENT_FLAG_HANDLE );
drivers/acpi/system.c +2 -3
@@ -303,8 +303,7 @@ static int get_status(u32 index, acpi_event_status *status, acpi_handle *handle) "Invalid GPE 0x%x\n", index)); goto end; } - result =acpi_get_gpe_status (*handle, index, -ACPI_NOT_ISR , status); + result =acpi_get_gpe_status (*handle, index, status); }else if (index < (num_gpes +ACPI_NUM_FIXED_EVENTS )) result =acpi_get_event_status (index - num_gpes, status);
@@ -395,7 +394,7 @@ static ssize_t counter_set(struct kobject *kobj, result =acpi_set_gpe (handle, index,ACPI_GPE_ENABLE ); else if (!strcmp(buf, "clear\n") && (status & ACPI_EVENT_FLAG_SET)) - result =acpi_clear_gpe (handle, index,ACPI_NOT_ISR ); + result =acpi_clear_gpe (handle, index); else all_counters[index].count = strtoul(buf, NULL, 0); }else if (index < num_gpes +ACPI_NUM_FIXED_EVENTS ) {
include/acpi/acexcep.h +1 -1
@@ -87,7 +87,7 @@#define AE_NO_GLOBAL_LOCK (acpi_status) (0x0017 | AE_CODE_ENVIRONMENTAL)#define AE_ABORT_METHOD (acpi_status) (0x0018 | AE_CODE_ENVIRONMENTAL)#define AE_SAME_HANDLER (acpi_status) (0x0019 | AE_CODE_ENVIRONMENTAL) -#define AE_WAKE_ONLY_GPE (acpi_status) (0x001A | AE_CODE_ENVIRONMENTAL) +#define AE_NO_HANDLER (acpi_status) (0x001A | AE_CODE_ENVIRONMENTAL)#define AE_OWNER_ID_LIMIT (acpi_status) (0x001B | AE_CODE_ENVIRONMENTAL)#define AE_CODE_ENV_MAX 0x001B
include/acpi/acpixf.h +6 -5
@@ -285,16 +285,17 @@ acpi_status acpi_get_event_status(u32 event, acpi_event_status * event_status);*/ acpi_status acpi_set_gpe (acpi_handle gpe_device,u32 gpe_number,u8 action); -acpi_status acpi_enable_gpe (acpi_handle gpe_device,u32 gpe_number,u8 type); +acpi_status +acpi_enable_gpe (acpi_handle gpe_device,u32 gpe_number,u8 gpe_type); -acpi_status acpi_disable_gpe (acpi_handle gpe_device,u32 gpe_number,u8 type); +acpi_status +acpi_disable_gpe (acpi_handle gpe_device,u32 gpe_number,u8 gpe_type); -acpi_status acpi_clear_gpe (acpi_handle gpe_device,u32 gpe_number,u32 flags); +acpi_status acpi_clear_gpe (acpi_handle gpe_device,u32 gpe_number);acpi_status acpi_get_gpe_status (acpi_handle gpe_device, -u32 gpe_number, -u32 flags,acpi_event_status * event_status); +u32 gpe_number,acpi_event_status *event_status);acpi_status acpi_disable_all_gpes (void );
include/acpi/actypes.h +20 -22
64 lines not on this page · raw message
Signature · 1 line
1.6.0.6
Len Brown
reviewerPATCH 14/22 ACPICA: Update version to 20100331.
In reply to Len BrownFrom: Robert Moore <[email protected]>
Version 20100331.
--- include/acpi/acpixf.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
include/acpi/acpixf.h +1 -1
@@ -47,7 +47,7 @@/* Current ACPICA subsystem version in YYYYMMDD format */ -#define ACPI_CA_VERSION 0x20100304 +#define ACPI_CA_VERSION 0x20100331#include "actypes.h" #include "actbl.h"
Signature · 1 line
1.6.0.6
Len Brown
reviewerPATCH 15/22 ACPICA: Clarify/rename some root table descriptor fields
In reply to Len BrownFrom: Bob Moore <[email protected]>
Original fields were not very descriptive and led to maintenance problems. New fields should help to understand the existing code.
--- drivers/acpi/acpica/acglobal.h | 7 ++-- drivers/acpi/acpica/aclocal.h | 10 +++--- drivers/acpi/acpica/tbfind.c | 2 +- drivers/acpi/acpica/tbinstal.c | 69 +++++++++++++++++++-------------------- drivers/acpi/acpica/tbutils.c | 19 ++++++----- drivers/acpi/acpica/tbxface.c | 26 +++++++++------ 6 files changed, 68 insertions(+), 65 deletions(-)
drivers/acpi/acpica/acglobal.h +3 -4
@@ -158,11 +158,10 @@ ACPI_EXTERN u32 acpi_gbl_trace_dbg_layer;****************************************************************************/ /* -* acpi_gbl_root_table_list is the master list of ACPI tables found in the -* RSDT/XSDT. -* +* acpi_gbl_root_table_list is the master list of ACPI tables that were +* found in the RSDT/XSDT. */ -ACPI_EXTERN struct acpi_internal_rsdt acpi_gbl_root_table_list; +ACPI_EXTERN struct acpi_table_list acpi_gbl_root_table_list; ACPI_EXTERN struct acpi_table_facs *acpi_gbl_FACS;/* These addresses are calculated from the FADT Event Block addresses */
drivers/acpi/acpica/aclocal.h +5 -5
@@ -213,12 +213,12 @@ struct acpi_namespace_node {#define ANOBJ_IS_BIT_OFFSET 0x40/* i_aSL only: Reference is a bit offset */ #define ANOBJ_IS_REFERENCED 0x80/* i_aSL only: Object was referenced */ -/* One internal RSDT for table management */ +/* Internal ACPI table management - master table list */ -struct acpi_internal_rsdt { -struct acpi_table_desc *tables; -u32 count; -u32 size; +struct acpi_table_list { +struct acpi_table_desc *tables;/* Table descriptor array */ +u32 current_table_count;/* Tables currently in the array */ +u32 max_table_count;/* Max tables array will hold */ u8 flags; };
drivers/acpi/acpica/tbfind.c +1 -1
@@ -83,7 +83,7 @@ acpi_tb_find_table(char *signature,/* Search for the table */ -for (i =0 ; i < acpi_gbl_root_table_list.count; ++i) { +for (i =0 ; i < acpi_gbl_root_table_list.current_table_count; ++i) {if (ACPI_MEMCMP (&(acpi_gbl_root_table_list.tables[i].signature), header.signature,ACPI_NAME_SIZE )) {
drivers/acpi/acpica/tbinstal.c +34 -35
158 lines not on this page · raw message
drivers/acpi/acpica/tbutils.c +10 -9
@@ -158,7 +158,7 @@ acpi_status acpi_tb_initialize_facs(void)u8 acpi_tb_tables_loaded (void ) { -if (acpi_gbl_root_table_list.count >=3 ) { +if (acpi_gbl_root_table_list.current_table_count >=3 ) {return (TRUE); }
@@ -707,14 +707,14 @@ acpi_tb_parse_root_table(acpi_physical_address rsdp_address)*/ table_entry =ACPI_CAST_PTR (u8, table) +sizeof (struct acpi_table_header ); - acpi_gbl_root_table_list.count =2 ; + acpi_gbl_root_table_list.current_table_count =2 ;/* * Initialize the root table array from the RSDT/XSDT */ for (i =0 ; i < table_count; i++) { -if (acpi_gbl_root_table_list.count >= - acpi_gbl_root_table_list.size) { +if (acpi_gbl_root_table_list.current_table_count >= + acpi_gbl_root_table_list.max_table_count) {/* There is no more room in the root table array, attempt resize */
@@ -724,19 +724,20 @@ acpi_tb_parse_root_table(acpi_physical_address rsdp_address)"Truncating %u table entries!" , (unsigned ) (table_count - (acpi_gbl_root_table_list. - count - 2)))); + current_table_count - + 2))));break ; } }/* Get the table physical address (32-bit for RSDT, 64-bit for XSDT) */ - acpi_gbl_root_table_list.tables[acpi_gbl_root_table_list.count]. - address = + acpi_gbl_root_table_list.tables[acpi_gbl_root_table_list. + current_table_count].address =acpi_tb_get_root_table_entry (table_entry, table_entry_size); table_entry += table_entry_size; - acpi_gbl_root_table_list.count++; + acpi_gbl_root_table_list.current_table_count++; }/*
@@ -749,7 +750,7 @@ acpi_tb_parse_root_table(acpi_physical_address rsdp_address)* Complete the initialization of the root table array by examining * the header of each table */ -for (i =2 ; i < acpi_gbl_root_table_list.count; i++) { +for (i =2 ; i < acpi_gbl_root_table_list.current_table_count; i++) {acpi_tb_install_table (acpi_gbl_root_table_list.tables[i]. address,NULL , i);
drivers/acpi/acpica/tbxface.c +15 -11
@@ -72,7 +72,7 @@ static int no_auto_ssdt;acpi_status acpi_allocate_root_table (u32 initial_table_count) { - acpi_gbl_root_table_list.size = initial_table_count; + acpi_gbl_root_table_list.max_table_count = initial_table_count; acpi_gbl_root_table_list.flags =ACPI_ROOT_ALLOW_RESIZE ;return (acpi_tb_resize_root_table_list ());
@@ -130,7 +130,7 @@ acpi_initialize_tables(struct acpi_table_desc * initial_table_array, sizeof(struct acpi_table_desc)); acpi_gbl_root_table_list.tables = initial_table_array; - acpi_gbl_root_table_list.size = initial_table_count; + acpi_gbl_root_table_list.max_table_count = initial_table_count; acpi_gbl_root_table_list.flags =ACPI_ROOT_ORIGIN_UNKNOWN ;if (allow_resize) { acpi_gbl_root_table_list.flags |=
@@ -189,7 +189,8 @@ acpi_status acpi_reallocate_root_table(void)* increment to create the new table size. */ current_size = (acpi_size ) - acpi_gbl_root_table_list.count *sizeof (struct acpi_table_desc ); + acpi_gbl_root_table_list.current_table_count * +sizeof (struct acpi_table_desc ); new_size = current_size + (ACPI_ROOT_TABLE_SIZE_INCREMENT *sizeof (struct acpi_table_desc ));
@@ -209,8 +210,9 @@ acpi_status acpi_reallocate_root_table(void)* size of the original table list. */ acpi_gbl_root_table_list.tables = tables; - acpi_gbl_root_table_list.size = - acpi_gbl_root_table_list.count +ACPI_ROOT_TABLE_SIZE_INCREMENT ; + acpi_gbl_root_table_list.max_table_count = + acpi_gbl_root_table_list.current_table_count + +ACPI_ROOT_TABLE_SIZE_INCREMENT ; acpi_gbl_root_table_list.flags =ACPI_ROOT_ORIGIN_ALLOCATED |ACPI_ROOT_ALLOW_RESIZE ;
@@ -291,7 +293,8 @@ acpi_get_table_header(char *signature,/* Walk the root table list */ -for (i =0 , j =0 ; i < acpi_gbl_root_table_list.count; i++) { +for (i =0 , j =0 ; i < acpi_gbl_root_table_list.current_table_count; + i++) {if (!ACPI_COMPARE_NAME (&(acpi_gbl_root_table_list.tables[i].signature), signature)) {
@@ -354,7 +357,7 @@ acpi_status acpi_unload_table_id(acpi_owner_id id)ACPI_FUNCTION_TRACE (acpi_unload_table_id);/* Find table in the global table list */ -for (i =0 ; i < acpi_gbl_root_table_list.count; ++i) { +for (i =0 ; i < acpi_gbl_root_table_list.current_table_count; ++i) {if (id != acpi_gbl_root_table_list.tables[i].owner_id) {continue ; }
@@ -404,7 +407,8 @@ acpi_get_table_with_size(char *signature,/* Walk the root table list */ -for (i =0 , j =0 ; i < acpi_gbl_root_table_list.count; i++) { +for (i =0 , j =0 ; i < acpi_gbl_root_table_list.current_table_count; + i++) {if (!ACPI_COMPARE_NAME (&(acpi_gbl_root_table_list.tables[i].signature), signature)) {
@@ -472,7 +476,7 @@ acpi_get_table_by_index(u32 table_index, struct acpi_table_header **table)/* Validate index */ -if (table_index >= acpi_gbl_root_table_list.count) { +if (table_index >= acpi_gbl_root_table_list.current_table_count) { (void )acpi_ut_release_mutex (ACPI_MTX_TABLES );return_ACPI_STATUS (AE_BAD_PARAMETER ); }
@@ -523,7 +527,7 @@ static acpi_status acpi_tb_load_namespace(void)* Load the namespace. The DSDT is required, but any SSDT and * PSDT tables are optional. Verify the DSDT. */ -if (!acpi_gbl_root_table_list.count || +if (!acpi_gbl_root_table_list.current_table_count || !ACPI_COMPARE_NAME(& (acpi_gbl_root_table_list. tables[ACPI_TABLE_INDEX_DSDT].signature),
@@ -577,7 +581,7 @@ static acpi_status acpi_tb_load_namespace(void)/* Load any SSDT or PSDT tables. Note: Loop leaves tables locked */ (void )acpi_ut_acquire_mutex (ACPI_MTX_TABLES ); -for (i =0 ; i < acpi_gbl_root_table_list.count; ++i) { +for (i =0 ; i < acpi_gbl_root_table_list.current_table_count; ++i) { if ((!ACPI_COMPARE_NAME (&(acpi_gbl_root_table_list.tables[i].signature), ACPI_SIG_SSDT)
Signature · 1 line
1.6.0.6
Len Brown
reviewerPATCH 16/22 ACPICA: Add GPE support for dynamically loaded ACPI tables
In reply to Len BrownFrom: Bob Moore <[email protected]>
For all GPEs, including FADT-based and GPE Block Devices, execute any _PRW methods in the new table, and process any _Lxx/_Exx GPE methods in the new table. Any runtime GPE that is referred to by an _Lxx/_Exx method in the new table is immediately enabled. ACPICA BZ 833.
http://www.acpica.org/bugzilla/show_bug.cgi?id=833
--- drivers/acpi/acpica/acevents.h | 2 + drivers/acpi/acpica/aclocal.h | 4 + drivers/acpi/acpica/evgpe.c | 2 +- drivers/acpi/acpica/evgpeblk.c | 316 +++++++++++++++++++++++++++++++++++----- drivers/acpi/acpica/exconfig.c | 21 ++- 5 files changed, 298 insertions(+), 47 deletions(-)
drivers/acpi/acpica/acevents.h +2 -0
@@ -110,6 +110,8 @@ acpi_ev_create_gpe_block(struct acpi_namespace_node *gpe_device,u32 interrupt_number, struct acpi_gpe_block_info **return_gpe_block); +void acpi_ev_update_gpes (acpi_owner_id table_owner_id); +acpi_status acpi_ev_initialize_gpe_block (struct acpi_namespace_node *gpe_device,struct acpi_gpe_block_info *gpe_block);
drivers/acpi/acpica/aclocal.h +4 -0
@@ -470,6 +470,10 @@ struct acpi_gpe_xrupt_info {struct acpi_gpe_walk_info {struct acpi_namespace_node *gpe_device;struct acpi_gpe_block_info *gpe_block; +u16 count; +acpi_owner_id owner_id; +u8 enable_this_gpe; +u8 execute_by_owner_id; };struct acpi_gpe_device_info {
drivers/acpi/acpica/evgpe.c +1 -1
@@ -265,7 +265,7 @@ struct acpi_gpe_event_info *acpi_ev_get_gpe_event_info(acpi_handle gpe_device,ACPI_FUNCTION_ENTRY (); -/* A NULL gpe_block means use the FADT-defined GPE block(s) */ +/* A NULL gpe_device means use the FADT-defined GPE block(s) */ if (!gpe_device) {
drivers/acpi/acpica/evgpeblk.c +276 -40
455 lines not on this page · raw message
drivers/acpi/acpica/exconfig.c +15 -6
@@ -82,8 +82,9 @@ acpi_ex_add_table(u32 table_index,struct acpi_namespace_node *parent_node, union acpi_operand_object **ddb_handle) { - acpi_status status; union acpi_operand_object *obj_desc; +acpi_status status; +acpi_owner_id owner_id;ACPI_FUNCTION_TRACE (ex_add_table);
@@ -119,7 +120,14 @@ acpi_ex_add_table(u32 table_index,acpi_ns_exec_module_code_list ();acpi_ex_enter_interpreter (); -return_ACPI_STATUS (status); +/* Update GPEs for any new _PRW or _Lxx/_Exx methods. Ignore errors */ + + status =acpi_tb_get_owner_id (table_index, &owner_id); +if (ACPI_SUCCESS (status)) { +acpi_ev_update_gpes (owner_id); + } + +return_ACPI_STATUS (AE_OK ); }/*******************************************************************************
@@ -248,10 +256,8 @@ acpi_ex_load_table_op(struct acpi_walk_state *walk_state, status =acpi_get_table_by_index (table_index, &table);if (ACPI_SUCCESS (status)) { -ACPI_INFO ((AE_INFO , -"Dynamic OEM Table Load - [%.4s] OemId [%.6s] OemTableId [%.8s]" , - table->signature, table->oem_id, - table->oem_table_id)); +ACPI_INFO ((AE_INFO ,"Dynamic OEM Table Load:" )); +acpi_tb_print_table_header (0 , table); }/* Invoke table handler if present */
@@ -525,6 +531,9 @@ acpi_ex_load_op(union acpi_operand_object *obj_desc,return_ACPI_STATUS (status); } +ACPI_INFO ((AE_INFO ,"Dynamic OEM Table Load:" )); +acpi_tb_print_table_header (0 , table_desc.pointer); +/* Remove the reference by added by acpi_ex_store above */ acpi_ut_remove_reference (ddb_handle);
Signature · 1 line
1.6.0.6
Len Brown
reviewerPATCH 17/22 ACPICA: Split large file, evgpeblk
In reply to Len BrownFrom: Bob Moore <[email protected]>
Create two new files, evgpeinit.c and evgpeutil.c. Updated unix and linux makefiles.
--- drivers/acpi/acpica/Makefile | 2 +- drivers/acpi/acpica/acevents.h | 50 ++- drivers/acpi/acpica/evgpeblk.c | 909 --------------------------------------- drivers/acpi/acpica/evgpeinit.c | 653 ++++++++++++++++++++++++++++ drivers/acpi/acpica/evgpeutil.c | 337 +++++++++++++++ 5 files changed, 1025 insertions(+), 926 deletions(-) create mode 100644 drivers/acpi/acpica/evgpeinit.c create mode 100644 drivers/acpi/acpica/evgpeutil.c
drivers/acpi/acpica/Makefile +1 -1
@@ -14,7 +14,7 @@ acpi-y := dsfield.o dsmthdat.o dsopcode.o dswexec.o dswscope.o \ acpi-y += evevent.o evregion.o evsci.o evxfevnt.o \ evmisc.o evrgnini.o evxface.o evxfregn.o \ - evgpe.o evgpeblk.o + evgpe.o evgpeblk.o evgpeinit.o evgpeutil.o acpi-y += exconfig.o exfield.o exnames.o exoparg6.o exresolv.o exstorob.o\ exconvrt.o exfldio.o exoparg1.o exprep.o exresop.o exsystem.o\
drivers/acpi/acpica/acevents.h +34 -16
78 lines not on this page · raw message
drivers/acpi/acpica/evgpeblk.c +0 -909
936 lines not on this page · raw message
drivers/acpi/acpica/evgpeinit.c new file +653 -0
653 lines not on this page · raw message
drivers/acpi/acpica/evgpeutil.c new file +337 -0
337 lines not on this page · raw message
Signature · 1 line
1.6.0.6
Len Brown
reviewerPATCH 18/22 ACPICA: Prevent possible allocation overrun during object copy
In reply to Len BrownFrom: Lin Ming <[email protected]>
Original code did not handle the case where the object to be copied was a namespace node.
--- drivers/acpi/acpica/utcopy.c | 14 +++++++++++--- 1 files changed, 11 insertions(+), 3 deletions(-)
drivers/acpi/acpica/utcopy.c +11 -3
@@ -677,16 +677,24 @@ acpi_ut_copy_simple_object(union acpi_operand_object *source_desc,u16 reference_count;union acpi_operand_object *next_object;acpi_status status; +acpi_size copy_size;/* Save fields from destination that we don't want to overwrite */ reference_count = dest_desc->common.reference_count; next_object = dest_desc->common.next_object; -/* Copy the entire source object over the destination object */ +/* +* Copy the entire source object over the destination object. +* Note: Source can be either an operand object or namespace node. +*/ + copy_size =sizeof (union acpi_operand_object ); +if (ACPI_GET_DESCRIPTOR_TYPE (source_desc) ==ACPI_DESC_TYPE_NAMED ) { + copy_size =sizeof (struct acpi_namespace_node ); + } -ACPI_MEMCPY ((char *)dest_desc, (char *)source_desc, -sizeof (union acpi_operand_object )); +ACPI_MEMCPY (ACPI_CAST_PTR (char, dest_desc), +ACPI_CAST_PTR (char, source_desc), copy_size);/* Restore the saved fields */
Signature · 1 line
1.6.0.6
Len Brown
reviewerPATCH 19/22 ACPICA: Rename acpi_ex_system_do_suspend->acpi_ex_system_do_sleep
In reply to Len BrownFrom: Bob Moore <[email protected]>
Suspend has other meanings in ACPI context, name was misleading.
--- drivers/acpi/acpica/acinterp.h | 2 +- drivers/acpi/acpica/exoparg1.c | 2 +- drivers/acpi/acpica/exsystem.c | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-)
drivers/acpi/acpica/acinterp.h +1 -1
@@ -281,7 +281,7 @@ acpi_status acpi_ex_system_do_notify_op(union acpi_operand_object *value, union acpi_operand_object *obj_desc); -acpi_status acpi_ex_system_do_suspend (u64 time); +acpi_status acpi_ex_system_do_sleep (u64 time);acpi_status acpi_ex_system_do_stall (u32 time);
drivers/acpi/acpica/exoparg1.c +1 -1
@@ -173,7 +173,7 @@ acpi_status acpi_ex_opcode_1A_0T_0R(struct acpi_walk_state *walk_state)case AML_SLEEP_OP :/* Sleep (msec_time) */ - status =acpi_ex_system_do_suspend (operand[0 ]->integer.value); + status =acpi_ex_system_do_sleep (operand[0 ]->integer.value);break ;case AML_STALL_OP :/* Stall (usec_time) */
drivers/acpi/acpica/exsystem.c +4 -4
@@ -182,18 +182,18 @@ acpi_status acpi_ex_system_do_stall(u32 how_long)/******************************************************************************* * -* FUNCTION: acpi_ex_system_do_suspend +* FUNCTION: acpi_ex_system_do_sleep * -* PARAMETERS: how_long - The amount of time to suspend, +* PARAMETERS: how_long - The amount of time to sleep, * in milliseconds * * RETURN: None * -* DESCRIPTION: Suspend running thread for specified amount of time. +* DESCRIPTION: Sleep the running thread for specified amount of time. * ******************************************************************************/ -acpi_status acpi_ex_system_do_suspend (u64 how_long) +acpi_status acpi_ex_system_do_sleep (u64 how_long) {ACPI_FUNCTION_ENTRY ();
Signature · 1 line
1.6.0.6
Len Brown
reviewerPATCH 20/22 ACPICA: Update/clarify some parameter names associated with acpi_handle
In reply to Len BrownFrom: Bob Moore <[email protected]>
Simple rename of some parameters to standardize them.
--- include/acpi/acpiosxf.h | 4 ++-- include/acpi/acpixf.h | 28 +++++++++++----------------- include/acpi/actypes.h | 2 +- 3 files changed, 14 insertions(+), 20 deletions(-)
include/acpi/acpiosxf.h +2 -2
@@ -233,8 +233,8 @@ acpi_os_write_pci_configuration(struct acpi_pci_id *pci_id,* Interim function needed for PCI IRQ routing */ void -acpi_os_derive_pci_id (acpi_handle rhandle, -acpi_handle chandle,struct acpi_pci_id **pci_id); +acpi_os_derive_pci_id (acpi_handle device, +acpi_handle region,struct acpi_pci_id **pci_id);/* * Miscellaneous
include/acpi/acpixf.h +11 -17
@@ -166,7 +166,7 @@ acpi_get_devices(const char *HID, void *context, void **return_value);acpi_status -acpi_get_name (acpi_handle handle, +acpi_get_name (acpi_handle object,u32 name_type,struct acpi_buffer *ret_path_ptr); acpi_status
@@ -174,14 +174,12 @@ acpi_get_handle(acpi_handle parent, acpi_string pathname, acpi_handle * ret_handle);acpi_status -acpi_attach_data (acpi_handle obj_handle, -acpi_object_handler handler,void *data); +acpi_attach_data (acpi_handle object,acpi_object_handler handler,void *data); -acpi_status -acpi_detach_data (acpi_handle obj_handle,acpi_object_handler handler); +acpi_status acpi_detach_data (acpi_handle object,acpi_object_handler handler);acpi_status -acpi_get_data (acpi_handle obj_handle,acpi_object_handler handler,void **data); +acpi_get_data (acpi_handle object,acpi_object_handler handler,void **data);acpi_status acpi_debug_trace (char *name,u32 debug_level,u32 debug_layer,u32 flags);
@@ -203,7 +201,7 @@ acpi_evaluate_object_typed(acpi_handle object, acpi_object_type return_type);acpi_status -acpi_get_object_info (acpi_handle handle, +acpi_get_object_info (acpi_handle object,struct acpi_device_info **return_buffer);acpi_status acpi_install_method (u8 *buffer);
@@ -318,33 +316,29 @@ acpi_status(*acpi_walk_resource_callback) (struct acpi_resource * resource, void *context);acpi_status -acpi_get_vendor_resource (acpi_handle device_handle, +acpi_get_vendor_resource (acpi_handle device,char *name,struct acpi_vendor_uuid *uuid,struct acpi_buffer *ret_buffer);acpi_status -acpi_get_current_resources (acpi_handle device_handle, -struct acpi_buffer *ret_buffer); +acpi_get_current_resources (acpi_handle device,struct acpi_buffer *ret_buffer);#ifdef ACPI_FUTURE_USAGE acpi_status -acpi_get_possible_resources (acpi_handle device_handle, -struct acpi_buffer *ret_buffer); +acpi_get_possible_resources (acpi_handle device,struct acpi_buffer *ret_buffer);#endif acpi_status -acpi_walk_resources (acpi_handle device_handle, +acpi_walk_resources (acpi_handle device,char *name,acpi_walk_resource_callback user_function,void *context);acpi_status -acpi_set_current_resources (acpi_handle device_handle, -struct acpi_buffer *in_buffer); +acpi_set_current_resources (acpi_handle device,struct acpi_buffer *in_buffer);acpi_status -acpi_get_irq_routing_table (acpi_handle bus_device_handle, -struct acpi_buffer *ret_buffer); +acpi_get_irq_routing_table (acpi_handle device,struct acpi_buffer *ret_buffer); acpi_status acpi_resource_to_address64(struct acpi_resource *resource,
include/acpi/actypes.h +1 -1
@@ -951,7 +951,7 @@ acpi_status(*acpi_adr_space_setup) (acpi_handle region_handle,#define ACPI_REGION_DEACTIVATE 1typedef -acpi_status (*acpi_walk_callback ) (acpi_handle obj_handle, +acpi_status (*acpi_walk_callback ) (acpi_handle object,u32 nesting_level,void *context,void **return_value);
Signature · 1 line
1.6.0.6
Len Brown
reviewerPATCH 21/22 ACPICA: Update version to 20100428.
In reply to Len BrownFrom: Bob Moore <[email protected]>
Version 20100428.
--- include/acpi/acpixf.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
include/acpi/acpixf.h +1 -1
@@ -47,7 +47,7 @@/* Current ACPICA subsystem version in YYYYMMDD format */ -#define ACPI_CA_VERSION 0x20100331 +#define ACPI_CA_VERSION 0x20100428#include "actypes.h" #include "actbl.h"
Signature · 1 line
1.6.0.6
Len Brown
reviewerPATCH 22/22 ACPI: fix early DSDT dmi check warnings on ia64
In reply to Len BrownFrom: Lin Ming <[email protected]>
WARNING: at drivers/firmware/dmi_scan.c:423 dmi_matches+0x70/0x160()
dmi check: not initialized yet.
This is caused by commit aa2110c
(ACPI: add boot option acpi=copy_dsdt to fix corrupt DSDT). DMI is not initialized yet in acpi_early_init on ia64.
The DSDT DMI check table is x86 specific, so make it empty on other archs. And this fixes the warnings on ia64.
--- drivers/acpi/bus.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-)
drivers/acpi/bus.c +8 -1
@@ -69,6 +69,7 @@ static struct dmi_system_id __cpuinitdata power_nocheck_dmi_table[] = { }; +#ifdef CONFIG_X86 static int set_copy_dsdt (const struct dmi_system_id *id) { printk(KERN_NOTICE "%s detected - "
@@ -97,8 +98,14 @@ static struct dmi_system_id dsdt_dmi_table[] __initdata = {DMI_MATCH (DMI_SYS_VENDOR ,"TOSHIBA" ), DMI_MATCH(DMI_PRODUCT_NAME, "Satellite L505D"), }, - } + }, + {} }; +#else +static struct dmi_system_id dsdt_dmi_table[]__initdata = { + {} +}; +#endif /* -------------------------------------------------------------------------- Device Management
Signature · 1 line
1.6.0.6