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
14d41d31
Commit
14d41d31
authored
Jun 22, 2004
by
Len Brown
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[ACPI] fix return-from-sleep PM/ACPI state conversion bug (David Shaohua Li)
parent
41d0ff7d
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
16 additions
and
14 deletions
+16
-14
drivers/acpi/sleep/main.c
drivers/acpi/sleep/main.c
+16
-14
No files found.
drivers/acpi/sleep/main.c
View file @
14d41d31
...
@@ -32,16 +32,16 @@ static u32 acpi_suspend_states[] = {
...
@@ -32,16 +32,16 @@ static u32 acpi_suspend_states[] = {
/**
/**
* acpi_pm_prepare - Do preliminary suspend work.
* acpi_pm_prepare - Do preliminary suspend work.
* @state: suspend state we're entering.
* @
pm_
state: suspend state we're entering.
*
*
* Make sure we support the state. If we do, and we need it, set the
* Make sure we support the state. If we do, and we need it, set the
* firmware waking vector and do arch-specific nastiness to get the
* firmware waking vector and do arch-specific nastiness to get the
* wakeup code to the waking vector.
* wakeup code to the waking vector.
*/
*/
static
int
acpi_pm_prepare
(
u32
state
)
static
int
acpi_pm_prepare
(
u32
pm_
state
)
{
{
u32
acpi_state
=
acpi_suspend_states
[
state
];
u32
acpi_state
=
acpi_suspend_states
[
pm_
state
];
if
(
!
sleep_states
[
acpi_state
])
if
(
!
sleep_states
[
acpi_state
])
return
-
EPERM
;
return
-
EPERM
;
...
@@ -49,7 +49,7 @@ static int acpi_pm_prepare(u32 state)
...
@@ -49,7 +49,7 @@ static int acpi_pm_prepare(u32 state)
/* do we have a wakeup address for S2 and S3? */
/* do we have a wakeup address for S2 and S3? */
/* Here, we support only S4BIOS, those we set the wakeup address */
/* Here, we support only S4BIOS, those we set the wakeup address */
/* S4OS is only supported for now via swsusp.. */
/* S4OS is only supported for now via swsusp.. */
if
(
state
==
PM_SUSPEND_MEM
||
state
==
PM_SUSPEND_DISK
)
{
if
(
pm_state
==
PM_SUSPEND_MEM
||
pm_
state
==
PM_SUSPEND_DISK
)
{
if
(
!
acpi_wakeup_address
)
if
(
!
acpi_wakeup_address
)
return
-
EFAULT
;
return
-
EFAULT
;
acpi_set_firmware_waking_vector
(
acpi_set_firmware_waking_vector
(
...
@@ -63,23 +63,23 @@ static int acpi_pm_prepare(u32 state)
...
@@ -63,23 +63,23 @@ static int acpi_pm_prepare(u32 state)
/**
/**
* acpi_pm_enter - Actually enter a sleep state.
* acpi_pm_enter - Actually enter a sleep state.
* @state: State we're entering.
* @
pm_
state: State we're entering.
*
*
* Flush caches and go to sleep. For STR or STD, we have to call
* Flush caches and go to sleep. For STR or STD, we have to call
* arch-specific assembly, which in turn call acpi_enter_sleep_state().
* arch-specific assembly, which in turn call acpi_enter_sleep_state().
* It's unfortunate, but it works. Please fix if you're feeling frisky.
* It's unfortunate, but it works. Please fix if you're feeling frisky.
*/
*/
static
int
acpi_pm_enter
(
u32
state
)
static
int
acpi_pm_enter
(
u32
pm_
state
)
{
{
acpi_status
status
=
AE_OK
;
acpi_status
status
=
AE_OK
;
unsigned
long
flags
=
0
;
unsigned
long
flags
=
0
;
u32
acpi_state
=
acpi_suspend_states
[
state
];
u32
acpi_state
=
acpi_suspend_states
[
pm_
state
];
ACPI_FLUSH_CPU_CACHE
();
ACPI_FLUSH_CPU_CACHE
();
/* Do arch specific saving of state. */
/* Do arch specific saving of state. */
if
(
state
>
PM_SUSPEND_STANDBY
)
{
if
(
pm_
state
>
PM_SUSPEND_STANDBY
)
{
int
error
=
acpi_save_state_mem
();
int
error
=
acpi_save_state_mem
();
if
(
error
)
if
(
error
)
return
error
;
return
error
;
...
@@ -87,7 +87,7 @@ static int acpi_pm_enter(u32 state)
...
@@ -87,7 +87,7 @@ static int acpi_pm_enter(u32 state)
local_irq_save
(
flags
);
local_irq_save
(
flags
);
switch
(
state
)
switch
(
pm_
state
)
{
{
case
PM_SUSPEND_STANDBY
:
case
PM_SUSPEND_STANDBY
:
barrier
();
barrier
();
...
@@ -115,7 +115,7 @@ static int acpi_pm_enter(u32 state)
...
@@ -115,7 +115,7 @@ static int acpi_pm_enter(u32 state)
* And, in the case of the latter, the memory image should have already
* And, in the case of the latter, the memory image should have already
* been loaded from disk.
* been loaded from disk.
*/
*/
if
(
state
>
PM_SUSPEND_STANDBY
)
if
(
pm_
state
>
PM_SUSPEND_STANDBY
)
acpi_restore_state_mem
();
acpi_restore_state_mem
();
...
@@ -125,15 +125,17 @@ static int acpi_pm_enter(u32 state)
...
@@ -125,15 +125,17 @@ static int acpi_pm_enter(u32 state)
/**
/**
* acpi_pm_finish - Finish up suspend sequence.
* acpi_pm_finish - Finish up suspend sequence.
* @state: State we're coming out of.
* @
pm_
state: State we're coming out of.
*
*
* This is called after we wake back up (or if entering the sleep state
* This is called after we wake back up (or if entering the sleep state
* failed).
* failed).
*/
*/
static
int
acpi_pm_finish
(
u32
state
)
static
int
acpi_pm_finish
(
u32
pm_
state
)
{
{
acpi_leave_sleep_state
(
state
);
u32
acpi_state
=
acpi_suspend_states
[
pm_state
];
acpi_leave_sleep_state
(
acpi_state
);
/* reset firmware waking vector */
/* reset firmware waking vector */
acpi_set_firmware_waking_vector
((
acpi_physical_address
)
0
);
acpi_set_firmware_waking_vector
((
acpi_physical_address
)
0
);
...
@@ -174,7 +176,7 @@ static int __init acpi_sleep_init(void)
...
@@ -174,7 +176,7 @@ static int __init acpi_sleep_init(void)
return
0
;
return
0
;
printk
(
KERN_INFO
PREFIX
"(supports"
);
printk
(
KERN_INFO
PREFIX
"(supports"
);
for
(
i
=
0
;
i
<
ACPI_S_STATE_COUNT
;
i
++
)
{
for
(
i
=
0
;
i
<
ACPI_S_STATE_COUNT
;
i
++
)
{
acpi_status
status
;
acpi_status
status
;
u8
type_a
,
type_b
;
u8
type_a
,
type_b
;
status
=
acpi_get_sleep_type_data
(
i
,
&
type_a
,
&
type_b
);
status
=
acpi_get_sleep_type_data
(
i
,
&
type_a
,
&
type_b
);
...
...
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