Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci-2.6.23
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci-2.6.23
Commits
f5ea908c
Commit
f5ea908c
authored
Mar 20, 2007
by
Len Brown
Browse files
Options
Browse Files
Download
Plain Diff
Pull bugzilla-8171 into release branch
parents
54b8c39f
a8f4af6d
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
90 additions
and
113 deletions
+90
-113
drivers/acpi/events/evmisc.c
drivers/acpi/events/evmisc.c
+6
-2
drivers/acpi/events/evregion.c
drivers/acpi/events/evregion.c
+11
-4
drivers/acpi/events/evxface.c
drivers/acpi/events/evxface.c
+4
-2
drivers/acpi/executer/excreate.c
drivers/acpi/executer/excreate.c
+4
-1
drivers/acpi/executer/exsystem.c
drivers/acpi/executer/exsystem.c
+23
-7
drivers/acpi/executer/exutils.c
drivers/acpi/executer/exutils.c
+20
-84
drivers/acpi/namespace/nseval.c
drivers/acpi/namespace/nseval.c
+9
-2
drivers/acpi/namespace/nsinit.c
drivers/acpi/namespace/nsinit.c
+5
-2
drivers/acpi/namespace/nsxfeval.c
drivers/acpi/namespace/nsxfeval.c
+7
-4
include/acpi/acinterp.h
include/acpi/acinterp.h
+1
-5
No files found.
drivers/acpi/events/evmisc.c
View file @
f5ea908c
...
...
@@ -196,11 +196,15 @@ acpi_ev_queue_notify_request(struct acpi_namespace_node * node,
notify_info
->
notify
.
value
=
(
u16
)
notify_value
;
notify_info
->
notify
.
handler_obj
=
handler_obj
;
acpi_ex_
relinquish
_interpreter
();
acpi_ex_
exit
_interpreter
();
acpi_ev_notify_dispatch
(
notify_info
);
acpi_ex_reacquire_interpreter
();
status
=
acpi_ex_enter_interpreter
();
if
(
ACPI_FAILURE
(
status
))
{
return_ACPI_STATUS
(
status
);
}
}
if
(
!
handler_obj
)
{
...
...
drivers/acpi/events/evregion.c
View file @
f5ea908c
...
...
@@ -291,6 +291,7 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
u32
bit_width
,
acpi_integer
*
value
)
{
acpi_status
status
;
acpi_status
status2
;
acpi_adr_space_handler
handler
;
acpi_adr_space_setup
region_setup
;
union
acpi_operand_object
*
handler_desc
;
...
...
@@ -344,7 +345,7 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
* setup will potentially execute control methods
* (e.g., _REG method for this region)
*/
acpi_ex_
relinquish
_interpreter
();
acpi_ex_
exit
_interpreter
();
status
=
region_setup
(
region_obj
,
ACPI_REGION_ACTIVATE
,
handler_desc
->
address_space
.
context
,
...
...
@@ -352,7 +353,10 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
/* Re-enter the interpreter */
acpi_ex_reacquire_interpreter
();
status2
=
acpi_ex_enter_interpreter
();
if
(
ACPI_FAILURE
(
status2
))
{
return_ACPI_STATUS
(
status2
);
}
/* Check for failure of the Region Setup */
...
...
@@ -405,7 +409,7 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
* exit the interpreter because the handler *might* block -- we don't
* know what it will do, so we can't hold the lock on the intepreter.
*/
acpi_ex_
relinquish
_interpreter
();
acpi_ex_
exit
_interpreter
();
}
/* Call the handler */
...
...
@@ -426,7 +430,10 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
* We just returned from a non-default handler, we must re-enter the
* interpreter
*/
acpi_ex_reacquire_interpreter
();
status2
=
acpi_ex_enter_interpreter
();
if
(
ACPI_FAILURE
(
status2
))
{
return_ACPI_STATUS
(
status2
);
}
}
return_ACPI_STATUS
(
status
);
...
...
drivers/acpi/events/evxface.c
View file @
f5ea908c
...
...
@@ -768,9 +768,11 @@ acpi_status acpi_acquire_global_lock(u16 timeout, u32 * handle)
return
(
AE_BAD_PARAMETER
);
}
/* Must lock interpreter to prevent race conditions */
status
=
acpi_ex_enter_interpreter
();
if
(
ACPI_FAILURE
(
status
))
{
return
(
status
);
}
acpi_ex_enter_interpreter
();
status
=
acpi_ev_acquire_global_lock
(
timeout
);
acpi_ex_exit_interpreter
();
...
...
drivers/acpi/executer/excreate.c
View file @
f5ea908c
...
...
@@ -583,7 +583,10 @@ acpi_ex_create_method(u8 * aml_start,
* Get the sync_level. If method is serialized, a mutex will be
* created for this method when it is parsed.
*/
if
(
method_flags
&
AML_METHOD_SERIALIZED
)
{
if
(
acpi_gbl_all_methods_serialized
)
{
obj_desc
->
method
.
sync_level
=
0
;
obj_desc
->
method
.
method_flags
|=
AML_METHOD_SERIALIZED
;
}
else
if
(
method_flags
&
AML_METHOD_SERIALIZED
)
{
/*
* ACPI 1.0: sync_level = 0
* ACPI 2.0: sync_level = sync_level in method declaration
...
...
drivers/acpi/executer/exsystem.c
View file @
f5ea908c
...
...
@@ -66,6 +66,7 @@ ACPI_MODULE_NAME("exsystem")
acpi_status
acpi_ex_system_wait_semaphore
(
acpi_semaphore
semaphore
,
u16
timeout
)
{
acpi_status
status
;
acpi_status
status2
;
ACPI_FUNCTION_TRACE
(
ex_system_wait_semaphore
);
...
...
@@ -78,7 +79,7 @@ acpi_status acpi_ex_system_wait_semaphore(acpi_semaphore semaphore, u16 timeout)
/* We must wait, so unlock the interpreter */
acpi_ex_
relinquish
_interpreter
();
acpi_ex_
exit
_interpreter
();
status
=
acpi_os_wait_semaphore
(
semaphore
,
1
,
timeout
);
...
...
@@ -88,7 +89,13 @@ acpi_status acpi_ex_system_wait_semaphore(acpi_semaphore semaphore, u16 timeout)
/* Reacquire the interpreter */
acpi_ex_reacquire_interpreter
();
status2
=
acpi_ex_enter_interpreter
();
if
(
ACPI_FAILURE
(
status2
))
{
/* Report fatal error, could not acquire interpreter */
return_ACPI_STATUS
(
status2
);
}
}
return_ACPI_STATUS
(
status
);
...
...
@@ -112,6 +119,7 @@ acpi_status acpi_ex_system_wait_semaphore(acpi_semaphore semaphore, u16 timeout)
acpi_status
acpi_ex_system_wait_mutex
(
acpi_mutex
mutex
,
u16
timeout
)
{
acpi_status
status
;
acpi_status
status2
;
ACPI_FUNCTION_TRACE
(
ex_system_wait_mutex
);
...
...
@@ -124,7 +132,7 @@ acpi_status acpi_ex_system_wait_mutex(acpi_mutex mutex, u16 timeout)
/* We must wait, so unlock the interpreter */
acpi_ex_
relinquish
_interpreter
();
acpi_ex_
exit
_interpreter
();
status
=
acpi_os_acquire_mutex
(
mutex
,
timeout
);
...
...
@@ -134,7 +142,13 @@ acpi_status acpi_ex_system_wait_mutex(acpi_mutex mutex, u16 timeout)
/* Reacquire the interpreter */
acpi_ex_reacquire_interpreter
();
status2
=
acpi_ex_enter_interpreter
();
if
(
ACPI_FAILURE
(
status2
))
{
/* Report fatal error, could not acquire interpreter */
return_ACPI_STATUS
(
status2
);
}
}
return_ACPI_STATUS
(
status
);
...
...
@@ -195,18 +209,20 @@ acpi_status acpi_ex_system_do_stall(u32 how_long)
acpi_status
acpi_ex_system_do_suspend
(
acpi_integer
how_long
)
{
acpi_status
status
;
ACPI_FUNCTION_ENTRY
();
/* Since this thread will sleep, we must release the interpreter */
acpi_ex_
relinquish
_interpreter
();
acpi_ex_
exit
_interpreter
();
acpi_os_sleep
(
how_long
);
/* And now we must get the interpreter again */
acpi_ex_reacquire
_interpreter
();
return
(
AE_OK
);
status
=
acpi_ex_enter
_interpreter
();
return
(
status
);
}
/*******************************************************************************
...
...
drivers/acpi/executer/exutils.c
View file @
f5ea908c
...
...
@@ -76,15 +76,14 @@ static u32 acpi_ex_digits_needed(acpi_integer value, u32 base);
*
* PARAMETERS: None
*
* RETURN:
None
* RETURN:
Status
*
* DESCRIPTION: Enter the interpreter execution region. Failure to enter
* the interpreter region is a fatal system error. Used in
* conjunction with exit_interpreter.
* DESCRIPTION: Enter the interpreter execution region. Failure to enter
* the interpreter region is a fatal system error
*
******************************************************************************/
void
acpi_ex_enter_interpreter
(
void
)
acpi_status
acpi_ex_enter_interpreter
(
void
)
{
acpi_status
status
;
...
...
@@ -92,42 +91,10 @@ void acpi_ex_enter_interpreter(void)
status
=
acpi_ut_acquire_mutex
(
ACPI_MTX_INTERPRETER
);
if
(
ACPI_FAILURE
(
status
))
{
ACPI_ERROR
((
AE_INFO
,
"Could not acquire AML Interpreter mutex"
));
ACPI_ERROR
((
AE_INFO
,
"Could not acquire interpreter mutex"
));
}
return_VOID
;
}
/*******************************************************************************
*
* FUNCTION: acpi_ex_reacquire_interpreter
*
* PARAMETERS: None
*
* RETURN: None
*
* DESCRIPTION: Reacquire the interpreter execution region from within the
* interpreter code. Failure to enter the interpreter region is a
* fatal system error. Used in conjuction with
* relinquish_interpreter
*
******************************************************************************/
void
acpi_ex_reacquire_interpreter
(
void
)
{
ACPI_FUNCTION_TRACE
(
ex_reacquire_interpreter
);
/*
* If the global serialized flag is set, do not release the interpreter,
* since it was not actually released by acpi_ex_relinquish_interpreter.
* This forces the interpreter to be single threaded.
*/
if
(
!
acpi_gbl_all_methods_serialized
)
{
acpi_ex_enter_interpreter
();
}
return_VOID
;
return_ACPI_STATUS
(
status
);
}
/*******************************************************************************
...
...
@@ -138,9 +105,17 @@ void acpi_ex_reacquire_interpreter(void)
*
* RETURN: None
*
* DESCRIPTION: Exit the interpreter execution region. This is the top level
* routine used to exit the interpreter when all processing has
* been completed.
* DESCRIPTION: Exit the interpreter execution region
*
* Cases where the interpreter is unlocked:
* 1) Completion of the execution of a control method
* 2) Method blocked on a Sleep() AML opcode
* 3) Method blocked on an Acquire() AML opcode
* 4) Method blocked on a Wait() AML opcode
* 5) Method blocked to acquire the global lock
* 6) Method blocked to execute a serialized control method that is
* already executing
* 7) About to invoke a user-installed opregion handler
*
******************************************************************************/
...
...
@@ -152,46 +127,7 @@ void acpi_ex_exit_interpreter(void)
status
=
acpi_ut_release_mutex
(
ACPI_MTX_INTERPRETER
);
if
(
ACPI_FAILURE
(
status
))
{
ACPI_ERROR
((
AE_INFO
,
"Could not release AML Interpreter mutex"
));
}
return_VOID
;
}
/*******************************************************************************
*
* FUNCTION: acpi_ex_relinquish_interpreter
*
* PARAMETERS: None
*
* RETURN: None
*
* DESCRIPTION: Exit the interpreter execution region, from within the
* interpreter - before attempting an operation that will possibly
* block the running thread.
*
* Cases where the interpreter is unlocked internally
* 1) Method to be blocked on a Sleep() AML opcode
* 2) Method to be blocked on an Acquire() AML opcode
* 3) Method to be blocked on a Wait() AML opcode
* 4) Method to be blocked to acquire the global lock
* 5) Method to be blocked waiting to execute a serialized control method
* that is currently executing
* 6) About to invoke a user-installed opregion handler
*
******************************************************************************/
void
acpi_ex_relinquish_interpreter
(
void
)
{
ACPI_FUNCTION_TRACE
(
ex_relinquish_interpreter
);
/*
* If the global serialized flag is set, do not release the interpreter.
* This forces the interpreter to be single threaded.
*/
if
(
!
acpi_gbl_all_methods_serialized
)
{
acpi_ex_exit_interpreter
();
ACPI_ERROR
((
AE_INFO
,
"Could not release interpreter mutex"
));
}
return_VOID
;
...
...
@@ -205,8 +141,8 @@ void acpi_ex_relinquish_interpreter(void)
*
* RETURN: none
*
* DESCRIPTION: Truncate a
n ACPI Integer to 32 bits if the execution mode is
*
32-bit, as determined by the revision of the DSDT
.
* DESCRIPTION: Truncate a
number to 32-bits if the currently executing method
*
belongs to a 32-bit ACPI table
.
*
******************************************************************************/
...
...
drivers/acpi/namespace/nseval.c
View file @
f5ea908c
...
...
@@ -154,7 +154,11 @@ acpi_status acpi_ns_evaluate(struct acpi_evaluate_info *info)
* Execute the method via the interpreter. The interpreter is locked
* here before calling into the AML parser
*/
acpi_ex_enter_interpreter
();
status
=
acpi_ex_enter_interpreter
();
if
(
ACPI_FAILURE
(
status
))
{
return_ACPI_STATUS
(
status
);
}
status
=
acpi_ps_execute_method
(
info
);
acpi_ex_exit_interpreter
();
}
else
{
...
...
@@ -178,7 +182,10 @@ acpi_status acpi_ns_evaluate(struct acpi_evaluate_info *info)
* resolution, we must lock it because we could access an opregion.
* The opregion access code assumes that the interpreter is locked.
*/
acpi_ex_enter_interpreter
();
status
=
acpi_ex_enter_interpreter
();
if
(
ACPI_FAILURE
(
status
))
{
return_ACPI_STATUS
(
status
);
}
/* Function has a strange interface */
...
...
drivers/acpi/namespace/nsinit.c
View file @
f5ea908c
...
...
@@ -214,7 +214,7 @@ acpi_ns_init_one_object(acpi_handle obj_handle,
u32
level
,
void
*
context
,
void
**
return_value
)
{
acpi_object_type
type
;
acpi_status
status
=
AE_OK
;
acpi_status
status
;
struct
acpi_init_walk_info
*
info
=
(
struct
acpi_init_walk_info
*
)
context
;
struct
acpi_namespace_node
*
node
=
...
...
@@ -268,7 +268,10 @@ acpi_ns_init_one_object(acpi_handle obj_handle,
/*
* Must lock the interpreter before executing AML code
*/
acpi_ex_enter_interpreter
();
status
=
acpi_ex_enter_interpreter
();
if
(
ACPI_FAILURE
(
status
))
{
return
(
status
);
}
/*
* Each of these types can contain executable AML code within the
...
...
drivers/acpi/namespace/nsxfeval.c
View file @
f5ea908c
...
...
@@ -170,6 +170,7 @@ acpi_evaluate_object(acpi_handle handle,
struct
acpi_buffer
*
return_buffer
)
{
acpi_status
status
;
acpi_status
status2
;
struct
acpi_evaluate_info
*
info
;
acpi_size
buffer_space_needed
;
u32
i
;
...
...
@@ -328,12 +329,14 @@ acpi_evaluate_object(acpi_handle handle,
* Delete the internal return object. NOTE: Interpreter must be
* locked to avoid race condition.
*/
acpi_ex_enter_interpreter
();
status2
=
acpi_ex_enter_interpreter
();
if
(
ACPI_SUCCESS
(
status2
))
{
/* Remove one reference on the return object (should delete it) */
/* Remove one reference on the return object (should delete it) */
acpi_ut_remove_reference
(
info
->
return_object
);
acpi_ex_exit_interpreter
();
acpi_ut_remove_reference
(
info
->
return_object
);
acpi_ex_exit_interpreter
();
}
}
cleanup:
...
...
include/acpi/acinterp.h
View file @
f5ea908c
...
...
@@ -446,14 +446,10 @@ acpi_ex_copy_integer_to_buffer_field(union acpi_operand_object *source_desc,
/*
* exutils - interpreter/scanner utilities
*/
void
acpi_ex_enter_interpreter
(
void
);
acpi_status
acpi_ex_enter_interpreter
(
void
);
void
acpi_ex_exit_interpreter
(
void
);
void
acpi_ex_reacquire_interpreter
(
void
);
void
acpi_ex_relinquish_interpreter
(
void
);
void
acpi_ex_truncate_for32bit_table
(
union
acpi_operand_object
*
obj_desc
);
u8
acpi_ex_acquire_global_lock
(
u32
rule
);
...
...
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