Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
0f12b15e
Commit
0f12b15e
authored
Jul 10, 2006
by
Len Brown
Browse files
Options
Browse Files
Download
Plain Diff
Pull acpica-20060707 into test branch
parents
20b499aa
f6dd9221
Changes
21
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
209 additions
and
113 deletions
+209
-113
drivers/acpi/dispatcher/dsinit.c
drivers/acpi/dispatcher/dsinit.c
+0
-10
drivers/acpi/dispatcher/dsmethod.c
drivers/acpi/dispatcher/dsmethod.c
+4
-19
drivers/acpi/dispatcher/dswexec.c
drivers/acpi/dispatcher/dswexec.c
+2
-2
drivers/acpi/events/evregion.c
drivers/acpi/events/evregion.c
+25
-19
drivers/acpi/events/evxface.c
drivers/acpi/events/evxface.c
+26
-18
drivers/acpi/events/evxfregn.c
drivers/acpi/events/evxfregn.c
+12
-1
drivers/acpi/executer/exconfig.c
drivers/acpi/executer/exconfig.c
+0
-1
drivers/acpi/executer/exconvrt.c
drivers/acpi/executer/exconvrt.c
+3
-0
drivers/acpi/executer/exsystem.c
drivers/acpi/executer/exsystem.c
+4
-4
drivers/acpi/namespace/nsalloc.c
drivers/acpi/namespace/nsalloc.c
+12
-1
drivers/acpi/tables/tbget.c
drivers/acpi/tables/tbget.c
+11
-1
drivers/acpi/tables/tbinstal.c
drivers/acpi/tables/tbinstal.c
+18
-3
drivers/acpi/tables/tbrsdt.c
drivers/acpi/tables/tbrsdt.c
+23
-4
drivers/acpi/tables/tbxface.c
drivers/acpi/tables/tbxface.c
+19
-13
drivers/acpi/utilities/utdelete.c
drivers/acpi/utilities/utdelete.c
+9
-4
drivers/acpi/utilities/utmisc.c
drivers/acpi/utilities/utmisc.c
+19
-6
drivers/acpi/utilities/utstate.c
drivers/acpi/utilities/utstate.c
+7
-0
include/acpi/acconfig.h
include/acpi/acconfig.h
+1
-1
include/acpi/acinterp.h
include/acpi/acinterp.h
+7
-3
include/acpi/aclocal.h
include/acpi/aclocal.h
+1
-1
include/acpi/acresrc.h
include/acpi/acresrc.h
+6
-2
No files found.
drivers/acpi/dispatcher/dsinit.c
View file @
0f12b15e
...
...
@@ -116,16 +116,6 @@ acpi_ds_init_one_object(acpi_handle obj_handle,
case
ACPI_TYPE_METHOD
:
/*
* Set the execution data width (32 or 64) based upon the
* revision number of the parent ACPI table.
* TBD: This is really for possible future support of integer width
* on a per-table basis. Currently, we just use a global for the width.
*/
if
(
info
->
table_desc
->
pointer
->
revision
==
1
)
{
node
->
flags
|=
ANOBJ_DATA_WIDTH_32
;
}
info
->
method_count
++
;
break
;
...
...
drivers/acpi/dispatcher/dsmethod.c
View file @
0f12b15e
...
...
@@ -134,7 +134,7 @@ acpi_ds_create_method_mutex(union acpi_operand_object *method_desc)
union
acpi_operand_object
*
mutex_desc
;
acpi_status
status
;
ACPI_FUNCTION_
NAM
E
(
ds_create_method_mutex
);
ACPI_FUNCTION_
TRAC
E
(
ds_create_method_mutex
);
/* Create the new mutex object */
...
...
@@ -493,7 +493,7 @@ acpi_ds_restart_control_method(struct acpi_walk_state *walk_state,
ACPI_DEBUG_PRINT
((
ACPI_DB_DISPATCH
,
"****Restart [%4.4s] Op %p ReturnValueFromCallee %p
\n
"
,
(
char
*
)
&
walk_state
->
method_node
->
name
,
acpi_ut_get_node_name
(
walk_state
->
method_node
)
,
walk_state
->
method_call_op
,
return_desc
));
ACPI_DEBUG_PRINT
((
ACPI_DB_DISPATCH
,
...
...
@@ -610,6 +610,7 @@ acpi_ds_terminate_control_method(union acpi_operand_object *method_desc,
acpi_os_release_mutex
(
method_desc
->
method
.
mutex
->
mutex
.
os_mutex
);
method_desc
->
method
.
mutex
->
mutex
.
owner_thread
=
NULL
;
}
}
...
...
@@ -620,27 +621,11 @@ acpi_ds_terminate_control_method(union acpi_operand_object *method_desc,
*/
method_node
=
walk_state
->
method_node
;
/* Lock namespace for possible update */
status
=
acpi_ut_acquire_mutex
(
ACPI_MTX_NAMESPACE
);
if
(
ACPI_FAILURE
(
status
))
{
return_VOID
;
}
/*
* Delete any namespace entries created immediately underneath
* the method
*/
if
(
method_node
&&
method_node
->
child
)
{
acpi_ns_delete_namespace_subtree
(
method_node
);
}
/*
* Delete any namespace
entries created anywhere els
e within
* Delete any namespace
objects created anywher
e within
* the namespace by the execution of this method
*/
acpi_ns_delete_namespace_by_owner
(
method_desc
->
method
.
owner_id
);
status
=
acpi_ut_release_mutex
(
ACPI_MTX_NAMESPACE
);
}
/* Decrement the thread count on the method */
...
...
drivers/acpi/dispatcher/dswexec.c
View file @
0f12b15e
...
...
@@ -313,10 +313,10 @@ acpi_ds_exec_begin_op(struct acpi_walk_state *walk_state,
case
AML_CLASS_EXECUTE
:
case
AML_CLASS_CREATE
:
/*
* Most operators with arguments
.
* Most operators with arguments
(except create_xxx_field operators)
* Start a new result/operand state
*/
if
(
walk_state
->
op
code
!=
AML_CREATE_FIELD_OP
)
{
if
(
walk_state
->
op
_info
->
object_type
!=
ACPI_TYPE_BUFFER_FIELD
)
{
status
=
acpi_ds_result_stack_push
(
walk_state
);
}
break
;
...
...
drivers/acpi/events/evregion.c
View file @
0f12b15e
...
...
@@ -528,34 +528,40 @@ acpi_ev_detach_region(union acpi_operand_object *region_obj,
}
}
/* Call the setup handler with the deactivate notification */
/*
* If the region has been activated, call the setup handler
* with the deactivate notification
*/
if
(
region_obj
->
region
.
flags
&
AOPOBJ_SETUP_COMPLETE
)
{
region_setup
=
handler_obj
->
address_space
.
setup
;
status
=
region_setup
(
region_obj
,
ACPI_REGION_DEACTIVATE
,
handler_obj
->
address_space
.
context
,
region_context
);
region_setup
=
handler_obj
->
address_space
.
setup
;
status
=
region_setup
(
region_obj
,
ACPI_REGION_DEACTIVATE
,
handler_obj
->
address_space
.
context
,
region_context
);
/* Init routine may fail, Just ignore errors */
/* Init routine may fail, Just ignore errors */
if
(
ACPI_FAILURE
(
status
))
{
ACPI_EXCEPTION
((
AE_INFO
,
status
,
"from region handler - deactivate, [%s]"
,
acpi_ut_get_region_name
(
region_obj
->
region
.
space_id
)));
}
if
(
ACPI_FAILURE
(
status
))
{
ACPI_EXCEPTION
((
AE_INFO
,
status
,
"from region init, [%s]"
,
acpi_ut_get_region_name
(
region_obj
->
region
.
space_id
)));
region_obj
->
region
.
flags
&=
~
(
AOPOBJ_SETUP_COMPLETE
);
}
region_obj
->
region
.
flags
&=
~
(
AOPOBJ_SETUP_COMPLETE
);
/*
* Remove handler reference in the region
*
* NOTE: this doesn't mean that the region goes away
* The region is just inaccessible as indicated to
* the _REG method
* NOTE: this doesn't mean that the region goes away, the region
* is just inaccessible as indicated to the _REG method
*
* If the region is on the handler's list
*
this better be the
region's handler
* If the region is on the handler's list
, this must be the
* region's handler
*/
region_obj
->
region
.
handler
=
NULL
;
acpi_ut_remove_reference
(
handler_obj
);
...
...
drivers/acpi/events/evxface.c
View file @
0f12b15e
...
...
@@ -428,7 +428,7 @@ acpi_remove_notify_handler(acpi_handle device,
node
=
acpi_ns_map_handle_to_node
(
device
);
if
(
!
node
)
{
status
=
AE_BAD_PARAMETER
;
goto
unlock
;
goto
unlock
_and_exit
;
}
/* Root Object */
...
...
@@ -442,7 +442,7 @@ acpi_remove_notify_handler(acpi_handle device,
((
handler_type
&
ACPI_DEVICE_NOTIFY
)
&&
!
acpi_gbl_device_notify
.
handler
))
{
status
=
AE_NOT_EXIST
;
goto
unlock
;
goto
unlock
_and_exit
;
}
/* Make sure all deferred tasks are completed */
...
...
@@ -474,7 +474,7 @@ acpi_remove_notify_handler(acpi_handle device,
if
(
!
acpi_ev_is_notify_object
(
node
))
{
status
=
AE_TYPE
;
goto
unlock
;
goto
unlock
_and_exit
;
}
/* Check for an existing internal object */
...
...
@@ -482,17 +482,21 @@ acpi_remove_notify_handler(acpi_handle device,
obj_desc
=
acpi_ns_get_attached_object
(
node
);
if
(
!
obj_desc
)
{
status
=
AE_NOT_EXIST
;
goto
unlock
;
goto
unlock
_and_exit
;
}
/* Object exists - make sure there's an existing handler */
if
(
handler_type
&
ACPI_SYSTEM_NOTIFY
)
{
notify_obj
=
obj_desc
->
common_notify
.
system_notify
;
if
((
!
notify_obj
)
||
(
notify_obj
->
notify
.
handler
!=
handler
))
{
if
(
!
notify_obj
)
{
status
=
AE_NOT_EXIST
;
goto
unlock_and_exit
;
}
if
(
notify_obj
->
notify
.
handler
!=
handler
)
{
status
=
AE_BAD_PARAMETER
;
goto
unlock
;
goto
unlock
_and_exit
;
}
/* Make sure all deferred tasks are completed */
...
...
@@ -510,10 +514,14 @@ acpi_remove_notify_handler(acpi_handle device,
if
(
handler_type
&
ACPI_DEVICE_NOTIFY
)
{
notify_obj
=
obj_desc
->
common_notify
.
device_notify
;
if
((
!
notify_obj
)
||
(
notify_obj
->
notify
.
handler
!=
handler
))
{
if
(
!
notify_obj
)
{
status
=
AE_NOT_EXIST
;
goto
unlock_and_exit
;
}
if
(
notify_obj
->
notify
.
handler
!=
handler
)
{
status
=
AE_BAD_PARAMETER
;
goto
unlock
;
goto
unlock
_and_exit
;
}
/* Make sure all deferred tasks are completed */
...
...
@@ -530,9 +538,9 @@ acpi_remove_notify_handler(acpi_handle device,
}
}
unlock
:
unlock_and_exit
:
(
void
)
acpi_ut_release_mutex
(
ACPI_MTX_NAMESPACE
);
exit:
exit:
if
(
ACPI_FAILURE
(
status
))
ACPI_EXCEPTION
((
AE_INFO
,
status
,
"Removing notify handler"
));
return_ACPI_STATUS
(
status
);
...
...
@@ -586,7 +594,7 @@ acpi_install_gpe_handler(acpi_handle gpe_device,
gpe_event_info
=
acpi_ev_get_gpe_event_info
(
gpe_device
,
gpe_number
);
if
(
!
gpe_event_info
)
{
status
=
AE_BAD_PARAMETER
;
goto
unlock
;
goto
unlock
_and_exit
;
}
/* Make sure that there isn't a handler there already */
...
...
@@ -594,7 +602,7 @@ acpi_install_gpe_handler(acpi_handle gpe_device,
if
((
gpe_event_info
->
flags
&
ACPI_GPE_DISPATCH_MASK
)
==
ACPI_GPE_DISPATCH_HANDLER
)
{
status
=
AE_ALREADY_EXISTS
;
goto
unlock
;
goto
unlock
_and_exit
;
}
/* Allocate and init handler object */
...
...
@@ -602,7 +610,7 @@ acpi_install_gpe_handler(acpi_handle gpe_device,
handler
=
ACPI_ALLOCATE_ZEROED
(
sizeof
(
struct
acpi_handler_info
));
if
(
!
handler
)
{
status
=
AE_NO_MEMORY
;
goto
unlock
;
goto
unlock
_and_exit
;
}
handler
->
address
=
address
;
...
...
@@ -613,7 +621,7 @@ acpi_install_gpe_handler(acpi_handle gpe_device,
status
=
acpi_ev_disable_gpe
(
gpe_event_info
);
if
(
ACPI_FAILURE
(
status
))
{
goto
unlock
;
goto
unlock
_and_exit
;
}
/* Install the handler */
...
...
@@ -628,9 +636,9 @@ acpi_install_gpe_handler(acpi_handle gpe_device,
acpi_os_release_lock
(
acpi_gbl_gpe_lock
,
flags
);
unlock
:
unlock_and_exit
:
(
void
)
acpi_ut_release_mutex
(
ACPI_MTX_EVENTS
);
exit:
exit:
if
(
ACPI_FAILURE
(
status
))
ACPI_EXCEPTION
((
AE_INFO
,
status
,
"Installing notify handler failed"
));
...
...
drivers/acpi/events/evxfregn.c
View file @
0f12b15e
...
...
@@ -155,7 +155,11 @@ acpi_remove_address_space_handler(acpi_handle device,
/* Convert and validate the device handle */
node
=
acpi_ns_map_handle_to_node
(
device
);
if
(
!
node
)
{
if
(
!
node
||
((
node
->
type
!=
ACPI_TYPE_DEVICE
)
&&
(
node
->
type
!=
ACPI_TYPE_PROCESSOR
)
&&
(
node
->
type
!=
ACPI_TYPE_THERMAL
)
&&
(
node
!=
acpi_gbl_root_node
)))
{
status
=
AE_BAD_PARAMETER
;
goto
unlock_and_exit
;
}
...
...
@@ -178,6 +182,13 @@ acpi_remove_address_space_handler(acpi_handle device,
if
(
handler_obj
->
address_space
.
space_id
==
space_id
)
{
/* Handler must be the same as the installed handler */
if
(
handler_obj
->
address_space
.
handler
!=
handler
)
{
status
=
AE_BAD_PARAMETER
;
goto
unlock_and_exit
;
}
/* Matched space_id, first dereference this in the Regions */
ACPI_DEBUG_PRINT
((
ACPI_DB_OPREGION
,
...
...
drivers/acpi/executer/exconfig.c
View file @
0f12b15e
...
...
@@ -502,7 +502,6 @@ acpi_status acpi_ex_unload_table(union acpi_operand_object *ddb_handle)
* (Offset contains the table_id)
*/
acpi_ns_delete_namespace_by_owner
(
table_info
->
owner_id
);
acpi_ut_release_owner_id
(
&
table_info
->
owner_id
);
/* Delete the table itself */
...
...
drivers/acpi/executer/exconvrt.c
View file @
0f12b15e
...
...
@@ -170,6 +170,9 @@ acpi_ex_convert_to_integer(union acpi_operand_object *obj_desc,
return_ACPI_STATUS
(
AE_NO_MEMORY
);
}
ACPI_DEBUG_PRINT
((
ACPI_DB_EXEC
,
"Converted value: %8.8X%8.8X
\n
"
,
ACPI_FORMAT_UINT64
(
result
)));
/* Save the Result */
return_desc
->
integer
.
value
=
result
;
...
...
drivers/acpi/executer/exsystem.c
View file @
0f12b15e
...
...
@@ -60,7 +60,7 @@ ACPI_MODULE_NAME("exsystem")
*
* DESCRIPTION: Implements a semaphore wait with a check to see if the
* semaphore is available immediately. If it is not, the
* interpreter is released.
* interpreter is released
before waiting
.
*
******************************************************************************/
acpi_status
acpi_ex_system_wait_semaphore
(
acpi_semaphore
semaphore
,
u16
timeout
)
...
...
@@ -110,9 +110,9 @@ acpi_status acpi_ex_system_wait_semaphore(acpi_semaphore semaphore, u16 timeout)
*
* RETURN: Status
*
* DESCRIPTION: Implements a
semaphore
wait with a check to see if the
*
semaphore
is available immediately. If it is not, the
* interpreter is released.
* DESCRIPTION: Implements a
mutex
wait with a check to see if the
*
mutex
is available immediately. If it is not, the
* interpreter is released
before waiting
.
*
******************************************************************************/
...
...
drivers/acpi/namespace/nsalloc.c
View file @
0f12b15e
...
...
@@ -386,14 +386,17 @@ void acpi_ns_delete_namespace_subtree(struct acpi_namespace_node *parent_node)
* specific ID. Used to delete entire ACPI tables. All
* reference counts are updated.
*
* MUTEX: Locks namespace during deletion walk.
*
******************************************************************************/
void
acpi_ns_delete_namespace_by_owner
(
acpi_owner_id
owner_id
)
{
struct
acpi_namespace_node
*
child_node
;
struct
acpi_namespace_node
*
deletion_node
;
u32
level
;
struct
acpi_namespace_node
*
parent_node
;
u32
level
;
acpi_status
status
;
ACPI_FUNCTION_TRACE_U32
(
ns_delete_namespace_by_owner
,
owner_id
);
...
...
@@ -401,6 +404,13 @@ void acpi_ns_delete_namespace_by_owner(acpi_owner_id owner_id)
return_VOID
;
}
/* Lock namespace for possible update */
status
=
acpi_ut_acquire_mutex
(
ACPI_MTX_NAMESPACE
);
if
(
ACPI_FAILURE
(
status
))
{
return_VOID
;
}
deletion_node
=
NULL
;
parent_node
=
acpi_gbl_root_node
;
child_node
=
NULL
;
...
...
@@ -469,5 +479,6 @@ void acpi_ns_delete_namespace_by_owner(acpi_owner_id owner_id)
}
}
(
void
)
acpi_ut_release_mutex
(
ACPI_MTX_NAMESPACE
);
return_VOID
;
}
drivers/acpi/tables/tbget.c
View file @
0f12b15e
...
...
@@ -320,6 +320,16 @@ acpi_tb_get_this_table(struct acpi_pointer *address,
ACPI_FUNCTION_TRACE
(
tb_get_this_table
);
/* Validate minimum length */
if
(
header
->
length
<
sizeof
(
struct
acpi_table_header
))
{
ACPI_ERROR
((
AE_INFO
,
"Table length (%X) is smaller than minimum (%X)"
,
header
->
length
,
sizeof
(
struct
acpi_table_header
)));
return_ACPI_STATUS
(
AE_INVALID_TABLE_LENGTH
);
}
/*
* Flags contains the current processor mode (Virtual or Physical
* addressing) The pointer_type is either Logical or Physical
...
...
@@ -356,7 +366,7 @@ acpi_tb_get_this_table(struct acpi_pointer *address,
*/
status
=
acpi_os_map_memory
(
address
->
pointer
.
physical
,
(
acpi_size
)
header
->
length
,
(
void
*
)
&
full_table
);
ACPI_CAST_PTR
(
void
,
&
full_table
)
);
if
(
ACPI_FAILURE
(
status
))
{
ACPI_ERROR
((
AE_INFO
,
"Could not map memory for table [%4.4s] at %8.8X%8.8X for length %X"
,
...
...
drivers/acpi/tables/tbinstal.c
View file @
0f12b15e
...
...
@@ -256,7 +256,7 @@ acpi_tb_init_table_descriptor(acpi_table_type table_type,
status
=
acpi_ut_allocate_owner_id
(
&
table_desc
->
owner_id
);
if
(
ACPI_FAILURE
(
status
))
{
return_ACPI_STATUS
(
status
)
;
goto
error_exit1
;
}
/* Install the table into the global data structure */
...
...
@@ -274,8 +274,8 @@ acpi_tb_init_table_descriptor(acpi_table_type table_type,
* at this location, so return an error.
*/
if
(
list_head
->
next
)
{
ACPI_FREE
(
table_desc
)
;
return_ACPI_STATUS
(
AE_ALREADY_EXISTS
)
;
status
=
AE_ALREADY_EXISTS
;
goto
error_exit2
;
}
table_desc
->
next
=
list_head
->
next
;
...
...
@@ -335,6 +335,17 @@ acpi_tb_init_table_descriptor(acpi_table_type table_type,
table_info
->
owner_id
=
table_desc
->
owner_id
;
table_info
->
installed_desc
=
table_desc
;
return_ACPI_STATUS
(
AE_OK
);
/* Error exit with cleanup */
error_exit2:
acpi_ut_release_owner_id
(
&
table_desc
->
owner_id
);
error_exit1:
ACPI_FREE
(
table_desc
);
return_ACPI_STATUS
(
status
);
}
/*******************************************************************************
...
...
@@ -525,6 +536,10 @@ struct acpi_table_desc *acpi_tb_uninstall_table(struct acpi_table_desc
acpi_tb_delete_single_table
(
table_desc
);
/* Free the owner ID associated with this table */
acpi_ut_release_owner_id
(
&
table_desc
->
owner_id
);
/* Free the table descriptor */
next_desc
=
table_desc
->
next
;
...
...
drivers/acpi/tables/tbrsdt.c
View file @
0f12b15e
...
...
@@ -183,6 +183,17 @@ acpi_status acpi_tb_validate_rsdt(struct acpi_table_header *table_ptr)
ACPI_FUNCTION_ENTRY
();
/* Validate minimum length */
if
(
table_ptr
->
length
<
sizeof
(
struct
acpi_table_header
))
{
ACPI_ERROR
((
AE_INFO
,
"RSDT/XSDT length (%X) is smaller than minimum (%X)"
,
table_ptr
->
length
,
sizeof
(
struct
acpi_table_header
)));
return
(
AE_INVALID_TABLE_LENGTH
);
}
/* Search for appropriate signature, RSDT or XSDT */
if
(
acpi_gbl_root_table_type
==
ACPI_TABLE_TYPE_RSDT
)
{
...
...
@@ -210,7 +221,7 @@ acpi_status acpi_tb_validate_rsdt(struct acpi_table_header *table_ptr)
ACPI_ERROR
((
AE_INFO
,
"Looking for XSDT"
));
}
ACPI_DUMP_BUFFER
(
(
char
*
)
table_ptr
,
48
);
ACPI_DUMP_BUFFER
(
ACPI_CAST_PTR
(
char
,
table_ptr
)
,
48
);
return
(
AE_BAD_SIGNATURE
);
}
...
...
@@ -258,7 +269,7 @@ acpi_status acpi_tb_get_table_rsdt(void)
status
=
acpi_tb_validate_rsdt
(
table_info
.
pointer
);
if
(
ACPI_FAILURE
(
status
))
{
return_ACPI_STATUS
(
status
)
;
goto
error_cleanup
;
}
/* Get the number of tables defined in the RSDT or XSDT */
...
...
@@ -270,14 +281,14 @@ acpi_status acpi_tb_get_table_rsdt(void)
status
=
acpi_tb_convert_to_xsdt
(
&
table_info
);
if
(
ACPI_FAILURE
(
status
))
{
return_ACPI_STATUS
(
status
)
;
goto
error_cleanup
;
}
/* Save the table pointers and allocation info */
status
=
acpi_tb_init_table_descriptor
(
ACPI_TABLE_ID_XSDT
,
&
table_info
);
if
(
ACPI_FAILURE
(
status
))
{
return_ACPI_STATUS
(
status
)
;
goto
error_cleanup
;
}
acpi_gbl_XSDT
=
...
...
@@ -285,4 +296,12 @@ acpi_status acpi_tb_get_table_rsdt(void)
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"XSDT located at %p
\n
"
,
acpi_gbl_XSDT
));
return_ACPI_STATUS
(
status
);
error_cleanup:
/* Free table allocated by acpi_tb_get_table */
acpi_tb_delete_single_table
(
&
table_info
);
return_ACPI_STATUS
(
status
);
}
drivers/acpi/tables/tbxface.c
View file @
0f12b15e
...
...
@@ -134,8 +134,8 @@ ACPI_EXPORT_SYMBOL(acpi_load_tables)
* RETURN: Status
*
* DESCRIPTION: This function is called to load a table from the caller's
* buffer.
The buffer must contain an entire ACPI Table including
* a valid header.
The header fields will be verified, and if it
* buffer. The buffer must contain an entire ACPI Table including
* a valid header. The header fields will be verified, and if it
* is determined that the table is invalid, the call will fail.
*
******************************************************************************/
...
...
@@ -245,15 +245,18 @@ acpi_status acpi_unload_table(acpi_table_type table_type)
/* Find all tables of the requested type */
table_desc
=
acpi_gbl_table_lists
[
table_type
].
next
;
if
(
!
table_desc
)
{
return_ACPI_STATUS
(
AE_NOT_EXIST
);
}
while
(
table_desc
)
{
/*
* Delete all namespace
entries owned by this table.
Note that these
*
entrie
s can appear anywhere in the namespace by virtue of the AML
* "Scope" operator.
Thus, we need to track ownership by an ID, not
* Delete all namespace
objects owned by this table.
Note that these
*
object
s can appear anywhere in the namespace by virtue of the AML
* "Scope" operator. Thus, we need to track ownership by an ID, not
* simply a position within the hierarchy
*/
acpi_ns_delete_namespace_by_owner
(
table_desc
->
owner_id
);
acpi_ut_release_owner_id
(
&
table_desc
->
owner_id
);
table_desc
=
table_desc
->
next
;
}
...
...
@@ -275,12 +278,12 @@ ACPI_EXPORT_SYMBOL(acpi_unload_table)
* see acpi_gbl_acpi_table_flag
* out_table_header - pointer to the struct acpi_table_header if successful
*
* DESCRIPTION: This function is called to get an ACPI table header.
The caller
* DESCRIPTION: This function is called to get an ACPI table header. The caller
* supplies an pointer to a data area sufficient to contain an ACPI
* struct acpi_table_header structure.
*
* The header contains a length field that can be used to determine
* the size of the buffer needed to contain the entire table.
This
* the size of the buffer needed to contain the entire table. This
* function is not valid for the RSD PTR table since it does not
* have a standard header and is fixed length.
*
...
...
@@ -322,7 +325,8 @@ acpi_get_table_header(acpi_table_type table_type,
/* Copy the header to the caller's buffer */
ACPI_MEMCPY
((
void
*
)
out_table_header
,
(
void
*
)
tbl_ptr
,
ACPI_MEMCPY
(
ACPI_CAST_PTR
(
void
,
out_table_header
),
ACPI_CAST_PTR
(
void
,
tbl_ptr
),
sizeof
(
struct
acpi_table_header
));
return_ACPI_STATUS
(
status
);
...
...
@@ -344,10 +348,10 @@ ACPI_EXPORT_SYMBOL(acpi_get_table_header)
*
* RETURN: Status
*
* DESCRIPTION: This function is called to get an ACPI table.
The caller
* DESCRIPTION: This function is called to get an ACPI table. The caller
* supplies an out_buffer large enough to contain the entire ACPI
* table.
The caller should call the acpi_get_table_header function
* first to determine the buffer size needed.
Upon completion
* table. The caller should call the acpi_get_table_header function
* first to determine the buffer size needed. Upon completion
* the out_buffer->Length field will indicate the number of bytes
* copied into the out_buffer->buf_ptr buffer. This table will be
* a complete table including the header.
...
...
@@ -417,7 +421,9 @@ acpi_get_table(acpi_table_type table_type,
/* Copy the table to the buffer */
ACPI_MEMCPY
((
void
*
)
ret_buffer
->
pointer
,
(
void
*
)
tbl_ptr
,
table_length
);
ACPI_MEMCPY
(
ACPI_CAST_PTR
(
void
,
ret_buffer
->
pointer
),
ACPI_CAST_PTR
(
void
,
tbl_ptr
),
table_length
);
return_ACPI_STATUS
(
AE_OK
);
}
...
...
drivers/acpi/utilities/utdelete.c
View file @
0f12b15e
...
...
@@ -447,11 +447,16 @@ acpi_ut_update_object_reference(union acpi_operand_object *object, u16 action)
*/
switch
(
ACPI_GET_OBJECT_TYPE
(
object
))
{
case
ACPI_TYPE_DEVICE
:
case
ACPI_TYPE_PROCESSOR
:
case
ACPI_TYPE_POWER
:
case
ACPI_TYPE_THERMAL
:
acpi_ut_update_ref_count
(
object
->
device
.
system_notify
,
action
);
acpi_ut_update_ref_count
(
object
->
device
.
device_notify
,
action
);
/* Update the notify objects for these types (if present) */
acpi_ut_update_ref_count
(
object
->
common_notify
.
system_notify
,
action
);
acpi_ut_update_ref_count
(
object
->
common_notify
.
device_notify
,
action
);
break
;
case
ACPI_TYPE_PACKAGE
:
...
...
drivers/acpi/utilities/utmisc.c
View file @
0f12b15e
...
...
@@ -65,7 +65,7 @@ ACPI_MODULE_NAME("utmisc")
u8
acpi_ut_is_aml_table
(
struct
acpi_table_header
*
table
)
{
/*
Ignore tables that contain
AML */
/*
These are the only tables that contain executable
AML */
if
(
ACPI_COMPARE_NAME
(
table
->
signature
,
DSDT_SIG
)
||
ACPI_COMPARE_NAME
(
table
->
signature
,
PSDT_SIG
)
||
...
...
@@ -419,10 +419,15 @@ void acpi_ut_set_integer_width(u8 revision)
{
if
(
revision
<=
1
)
{
/* 32-bit case */
acpi_gbl_integer_bit_width
=
32
;
acpi_gbl_integer_nybble_width
=
8
;
acpi_gbl_integer_byte_width
=
4
;
}
else
{
/* 64-bit case (ACPI 2.0+) */
acpi_gbl_integer_bit_width
=
64
;
acpi_gbl_integer_nybble_width
=
16
;
acpi_gbl_integer_byte_width
=
8
;
...
...
@@ -502,6 +507,7 @@ acpi_ut_display_init_pathname(u8 type,
* FUNCTION: acpi_ut_valid_acpi_char
*
* PARAMETERS: Char - The character to be examined
* Position - Byte position (0-3)
*
* RETURN: TRUE if the character is valid, FALSE otherwise
*
...
...
@@ -609,7 +615,9 @@ acpi_name acpi_ut_repair_name(acpi_name name)
*
* RETURN: Status and Converted value
*
* DESCRIPTION: Convert a string into an unsigned value.
* DESCRIPTION: Convert a string into an unsigned value. Performs either a
* 32-bit or 64-bit conversion, depending on the current mode
* of the interpreter.
* NOTE: Does not support Octal strings, not needed.
*
******************************************************************************/
...
...
@@ -627,7 +635,7 @@ acpi_ut_strtoul64(char *string, u32 base, acpi_integer * ret_integer)
u8
sign_of0x
=
0
;
u8
term
=
0
;
ACPI_FUNCTION_TRACE
(
ut_stroul64
);
ACPI_FUNCTION_TRACE
_STR
(
ut_stroul64
,
string
);
switch
(
base
)
{
case
ACPI_ANY_BASE
:
...
...
@@ -675,11 +683,13 @@ acpi_ut_strtoul64(char *string, u32 base, acpi_integer * ret_integer)
}
}
/*
* Perform a 32-bit or 64-bit conversion, depending upon the current
* execution mode of the interpreter
*/
dividend
=
(
mode32
)
?
ACPI_UINT32_MAX
:
ACPI_UINT64_MAX
;
/* At least one character in the string here */
/* Main loop: convert the string to a 64-bit integer */
/* Main loop: convert the string to a 32- or 64-bit integer */
while
(
*
string
)
{
if
(
ACPI_IS_DIGIT
(
*
string
))
{
...
...
@@ -754,6 +764,9 @@ acpi_ut_strtoul64(char *string, u32 base, acpi_integer * ret_integer)
all_done:
ACPI_DEBUG_PRINT
((
ACPI_DB_EXEC
,
"Converted value: %8.8X%8.8X
\n
"
,
ACPI_FORMAT_UINT64
(
return_value
)));
*
ret_integer
=
return_value
;
return_ACPI_STATUS
(
AE_OK
);
...
...
drivers/acpi/utilities/utstate.c
View file @
0f12b15e
...
...
@@ -199,6 +199,13 @@ struct acpi_thread_state *acpi_ut_create_thread_state(void)
state
->
common
.
descriptor_type
=
ACPI_DESC_TYPE_STATE_THREAD
;
state
->
thread
.
thread_id
=
acpi_os_get_thread_id
();
/* Check for invalid thread ID - zero is very bad, it will break things */
if
(
!
state
->
thread
.
thread_id
)
{
ACPI_ERROR
((
AE_INFO
,
"Invalid zero ID from AcpiOsGetThreadId"
));
state
->
thread
.
thread_id
=
(
acpi_thread_id
)
1
;
}
return_PTR
((
struct
acpi_thread_state
*
)
state
);
}
...
...
include/acpi/acconfig.h
View file @
0f12b15e
...
...
@@ -63,7 +63,7 @@
/* Current ACPICA subsystem version in YYYYMMDD format */
#define ACPI_CA_VERSION 0x20060
623
#define ACPI_CA_VERSION 0x20060
707
/*
* OS name, used for the _OS object. The _OS object is essentially obsolete,
...
...
include/acpi/acinterp.h
View file @
0f12b15e
...
...
@@ -53,10 +53,14 @@
#define ACPI_EXD_TABLE_SIZE(name) (sizeof(name) / sizeof (struct acpi_exdump_info))
/*
* If possible, pack the following structure to byte alignment, since we
* don't care about performance for debug output
* If possible, pack the following structures to byte alignment, since we
* don't care about performance for debug output. Two cases where we cannot
* pack the structures:
*
* 1) Hardware does not support misaligned memory transfers
* 2) Compiler does not support pointers within packed structures
*/
#if
ndef ACPI_MISALIGNMENT_NOT_SUPPORTED
#if
(!defined(ACPI_MISALIGNMENT_NOT_SUPPORTED) && !defined(ACPI_PACKED_POINTERS_NOT_SUPPORTED))
#pragma pack(1)
#endif
...
...
include/acpi/aclocal.h
View file @
0f12b15e
...
...
@@ -204,7 +204,7 @@ struct acpi_namespace_node {
/* Namespace Node flags */
#define ANOBJ_END_OF_PEER_LIST 0x01
/* End-of-list, Peer field points to parent */
#define ANOBJ_
DATA_WIDTH_32 0x02
/* Parent table uses 32-bit math
*/
#define ANOBJ_
RESERVED 0x02
/* Available for future use
*/
#define ANOBJ_METHOD_ARG 0x04
/* Node is a method argument */
#define ANOBJ_METHOD_LOCAL 0x08
/* Node is a method local */
#define ANOBJ_SUBTREE_HAS_INI 0x10
/* Used to optimize device initialization */
...
...
include/acpi/acresrc.h
View file @
0f12b15e
...
...
@@ -50,9 +50,13 @@
/*
* If possible, pack the following structures to byte alignment, since we
* don't care about performance for debug output
* don't care about performance for debug output. Two cases where we cannot
* pack the structures:
*
* 1) Hardware does not support misaligned memory transfers
* 2) Compiler does not support pointers within packed structures
*/
#if
ndef ACPI_MISALIGNMENT_NOT_SUPPORTED
#if
(!defined(ACPI_MISALIGNMENT_NOT_SUPPORTED) && !defined(ACPI_PACKED_POINTERS_NOT_SUPPORTED))
#pragma pack(1)
#endif
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment