-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 80202 b: refs/heads/master c: 4fc2fba h: refs/heads/master v: v3
- Loading branch information
Pavel Machek
authored and
Ingo Molnar
committed
Jan 30, 2008
1 parent
8ac65fb
commit cc53915
Showing
5 changed files
with
89 additions
and
189 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 8a19da7b7f16d8360e39035f6ab96686e835522b | ||
refs/heads/master: 4fc2fba804cae404d2665e23b8cbd46d5f63a07e |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
/* | ||
* sleep.c - x86-specific ACPI sleep support. | ||
* | ||
* Copyright (C) 2001-2003 Patrick Mochel | ||
* Copyright (C) 2001-2003 Pavel Machek <pavel@suse.cz> | ||
*/ | ||
|
||
#include <linux/acpi.h> | ||
#include <linux/bootmem.h> | ||
#include <linux/dmi.h> | ||
#include <linux/cpumask.h> | ||
|
||
#include <asm/smp.h> | ||
|
||
/* address in low memory of the wakeup routine. */ | ||
unsigned long acpi_wakeup_address = 0; | ||
unsigned long acpi_realmode_flags; | ||
extern char wakeup_start, wakeup_end; | ||
|
||
extern unsigned long acpi_copy_wakeup_routine(unsigned long); | ||
|
||
/** | ||
* acpi_save_state_mem - save kernel state | ||
* | ||
* Create an identity mapped page table and copy the wakeup routine to | ||
* low memory. | ||
*/ | ||
int acpi_save_state_mem(void) | ||
{ | ||
if (!acpi_wakeup_address) { | ||
printk(KERN_ERR "Could not allocate memory during boot, S3 disabled\n"); | ||
return -ENOMEM; | ||
} | ||
memcpy((void *)acpi_wakeup_address, &wakeup_start, | ||
&wakeup_end - &wakeup_start); | ||
acpi_copy_wakeup_routine(acpi_wakeup_address); | ||
|
||
return 0; | ||
} | ||
|
||
/* | ||
* acpi_restore_state - undo effects of acpi_save_state_mem | ||
*/ | ||
void acpi_restore_state_mem(void) | ||
{ | ||
} | ||
|
||
|
||
/** | ||
* acpi_reserve_bootmem - do _very_ early ACPI initialisation | ||
* | ||
* We allocate a page from the first 1MB of memory for the wakeup | ||
* routine for when we come back from a sleep state. The | ||
* runtime allocator allows specification of <16MB pages, but not | ||
* <1MB pages. | ||
*/ | ||
void __init acpi_reserve_bootmem(void) | ||
{ | ||
if ((&wakeup_end - &wakeup_start) > PAGE_SIZE*2) { | ||
printk(KERN_ERR | ||
"ACPI: Wakeup code way too big, S3 disabled.\n"); | ||
return; | ||
} | ||
|
||
acpi_wakeup_address = (unsigned long)alloc_bootmem_low(PAGE_SIZE*2); | ||
if (!acpi_wakeup_address) | ||
printk(KERN_ERR "ACPI: Cannot allocate lowmem, S3 disabled.\n"); | ||
} | ||
|
||
|
||
static int __init acpi_sleep_setup(char *str) | ||
{ | ||
while ((str != NULL) && (*str != '\0')) { | ||
if (strncmp(str, "s3_bios", 7) == 0) | ||
acpi_realmode_flags |= 1; | ||
if (strncmp(str, "s3_mode", 7) == 0) | ||
acpi_realmode_flags |= 2; | ||
if (strncmp(str, "s3_beep", 7) == 0) | ||
acpi_realmode_flags |= 4; | ||
str = strchr(str, ','); | ||
if (str != NULL) | ||
str += strspn(str, ", \t"); | ||
} | ||
return 1; | ||
} | ||
|
||
__setup("acpi_sleep=", acpi_sleep_setup); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.