aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/kernel-parameters.txt6
-rw-r--r--Documentation/power/swsusp.txt5
-rw-r--r--arch/ia64/kernel/acpi.c2
-rw-r--r--arch/x86/kernel/acpi/boot.c4
-rw-r--r--drivers/acpi/hardware/hwsleep.c2
-rw-r--r--drivers/acpi/osl.c3
-rw-r--r--drivers/acpi/pci_irq.c5
-rw-r--r--drivers/acpi/power.c6
-rw-r--r--drivers/acpi/sleep/main.c2
-rw-r--r--kernel/power/Kconfig9
10 files changed, 25 insertions, 19 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 8fd5aa40585f..8ea41b6e6a85 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -147,8 +147,10 @@ and is between 256 and 4096 characters. It is defined in the file
147 default: 0 147 default: 0
148 148
149 acpi_sleep= [HW,ACPI] Sleep options 149 acpi_sleep= [HW,ACPI] Sleep options
150 Format: { s3_bios, s3_mode } 150 Format: { s3_bios, s3_mode, s3_beep }
151 See Documentation/power/video.txt 151 See Documentation/power/video.txt for s3_bios and s3_mode.
152 s3_beep is for debugging; it makes the PC's speaker beep
153 as soon as the kernel's real-mode entry point is called.
152 154
153 acpi_sci= [HW,ACPI] ACPI System Control Interrupt trigger mode 155 acpi_sci= [HW,ACPI] ACPI System Control Interrupt trigger mode
154 Format: { level | edge | high | low } 156 Format: { level | edge | high | low }
diff --git a/Documentation/power/swsusp.txt b/Documentation/power/swsusp.txt
index aea7e9209667..9d60ab717a7b 100644
--- a/Documentation/power/swsusp.txt
+++ b/Documentation/power/swsusp.txt
@@ -386,6 +386,11 @@ before suspending; then remount them after resuming.
386There is a work-around for this problem. For more information, see 386There is a work-around for this problem. For more information, see
387Documentation/usb/persist.txt. 387Documentation/usb/persist.txt.
388 388
389Q: Can I suspend-to-disk using a swap partition under LVM?
390
391A: No. You can suspend successfully, but you'll not be able to
392resume. uswsusp should be able to work with LVM. See suspend.sf.net.
393
389Q: I upgraded the kernel from 2.6.15 to 2.6.16. Both kernels were 394Q: I upgraded the kernel from 2.6.15 to 2.6.16. Both kernels were
390compiled with the similar configuration files. Anyway I found that 395compiled with the similar configuration files. Anyway I found that
391suspend to disk (and resume) is much slower on 2.6.16 compared to 396suspend to disk (and resume) is much slower on 2.6.16 compared to
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
index d20a3cc8b424..90680255032e 100644
--- a/arch/ia64/kernel/acpi.c
+++ b/arch/ia64/kernel/acpi.c
@@ -166,7 +166,7 @@ int acpi_request_vector(u32 int_type)
166 return vector; 166 return vector;
167} 167}
168 168
169char *__acpi_map_table(unsigned long phys_addr, unsigned long size) 169char *__init __acpi_map_table(unsigned long phys_addr, unsigned long size)
170{ 170{
171 return __va(phys_addr); 171 return __va(phys_addr);
172} 172}
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index fc8825d4b996..f3e049ea86eb 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -106,7 +106,7 @@ enum acpi_irq_model_id acpi_irq_model = ACPI_IRQ_MODEL_PIC;
106#ifdef CONFIG_X86_64 106#ifdef CONFIG_X86_64
107 107
108/* rely on all ACPI tables being in the direct mapping */ 108/* rely on all ACPI tables being in the direct mapping */
109char *__acpi_map_table(unsigned long phys_addr, unsigned long size) 109char *__init __acpi_map_table(unsigned long phys_addr, unsigned long size)
110{ 110{
111 if (!phys_addr || !size) 111 if (!phys_addr || !size)
112 return NULL; 112 return NULL;
@@ -131,7 +131,7 @@ char *__acpi_map_table(unsigned long phys_addr, unsigned long size)
131 * from the fixed base. That's why we start at FIX_IO_APIC_BASE_END and 131 * from the fixed base. That's why we start at FIX_IO_APIC_BASE_END and
132 * count idx down while incrementing the phys address. 132 * count idx down while incrementing the phys address.
133 */ 133 */
134char *__acpi_map_table(unsigned long phys, unsigned long size) 134char *__init __acpi_map_table(unsigned long phys, unsigned long size)
135{ 135{
136 unsigned long base, offset, mapped_size; 136 unsigned long base, offset, mapped_size;
137 int idx; 137 int idx;
diff --git a/drivers/acpi/hardware/hwsleep.c b/drivers/acpi/hardware/hwsleep.c
index fd1c4ba63367..058d0be5cbe2 100644
--- a/drivers/acpi/hardware/hwsleep.c
+++ b/drivers/acpi/hardware/hwsleep.c
@@ -286,13 +286,13 @@ acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state)
286 } 286 }
287 287
288 /* 288 /*
289 * 1) Disable/Clear all GPEs
289 * 2) Enable all wakeup GPEs 290 * 2) Enable all wakeup GPEs
290 */ 291 */
291 status = acpi_hw_disable_all_gpes(); 292 status = acpi_hw_disable_all_gpes();
292 if (ACPI_FAILURE(status)) { 293 if (ACPI_FAILURE(status)) {
293 return_ACPI_STATUS(status); 294 return_ACPI_STATUS(status);
294 } 295 }
295
296 acpi_gbl_system_awake_and_running = FALSE; 296 acpi_gbl_system_awake_and_running = FALSE;
297 297
298 status = acpi_hw_enable_all_wakeup_gpes(); 298 status = acpi_hw_enable_all_wakeup_gpes();
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
index 07c18dbde698..0c41db3075a5 100644
--- a/drivers/acpi/osl.c
+++ b/drivers/acpi/osl.c
@@ -258,7 +258,8 @@ acpi_physical_address __init acpi_os_get_root_pointer(void)
258 } 258 }
259} 259}
260 260
261void __iomem *acpi_os_map_memory(acpi_physical_address phys, acpi_size size) 261void __iomem *__init_refok
262acpi_os_map_memory(acpi_physical_address phys, acpi_size size)
262{ 263{
263 if (phys > ULONG_MAX) { 264 if (phys > ULONG_MAX) {
264 printk(KERN_ERR PREFIX "Cannot map memory that high\n"); 265 printk(KERN_ERR PREFIX "Cannot map memory that high\n");
diff --git a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c
index 62010c2481b3..76d9c669d2d8 100644
--- a/drivers/acpi/pci_irq.c
+++ b/drivers/acpi/pci_irq.c
@@ -51,10 +51,8 @@ static struct acpi_prt_entry *acpi_pci_irq_find_prt_entry(int segment,
51 int bus, 51 int bus,
52 int device, int pin) 52 int device, int pin)
53{ 53{
54 struct list_head *node = NULL;
55 struct acpi_prt_entry *entry = NULL; 54 struct acpi_prt_entry *entry = NULL;
56 55
57
58 if (!acpi_prt.count) 56 if (!acpi_prt.count)
59 return NULL; 57 return NULL;
60 58
@@ -64,8 +62,7 @@ static struct acpi_prt_entry *acpi_pci_irq_find_prt_entry(int segment,
64 * 62 *
65 */ 63 */
66 spin_lock(&acpi_prt_lock); 64 spin_lock(&acpi_prt_lock);
67 list_for_each(node, &acpi_prt.entries) { 65 list_for_each_entry(entry, &acpi_prt.entries, node) {
68 entry = list_entry(node, struct acpi_prt_entry, node);
69 if ((segment == entry->id.segment) 66 if ((segment == entry->id.segment)
70 && (bus == entry->id.bus) 67 && (bus == entry->id.bus)
71 && (device == entry->id.device) 68 && (device == entry->id.device)
diff --git a/drivers/acpi/power.c b/drivers/acpi/power.c
index af1769a20c7a..76bf6d90c700 100644
--- a/drivers/acpi/power.c
+++ b/drivers/acpi/power.c
@@ -458,11 +458,9 @@ int acpi_power_transition(struct acpi_device *device, int state)
458 } 458 }
459 459
460 end: 460 end:
461 if (result) { 461 if (result)
462 device->power.state = ACPI_STATE_UNKNOWN; 462 device->power.state = ACPI_STATE_UNKNOWN;
463 printk(KERN_WARNING PREFIX "Transitioning device [%s] to D%d\n", 463 else {
464 device->pnp.bus_id, state);
465 } else {
466 /* We shouldn't change the state till all above operations succeed */ 464 /* We shouldn't change the state till all above operations succeed */
467 device->power.state = state; 465 device->power.state = state;
468 } 466 }
diff --git a/drivers/acpi/sleep/main.c b/drivers/acpi/sleep/main.c
index 7f97e32fc33f..293a1cbb47c0 100644
--- a/drivers/acpi/sleep/main.c
+++ b/drivers/acpi/sleep/main.c
@@ -170,7 +170,7 @@ static int acpi_pm_enter(suspend_state_t pm_state)
170 /* Reprogram control registers and execute _BFS */ 170 /* Reprogram control registers and execute _BFS */
171 acpi_leave_sleep_state_prep(acpi_state); 171 acpi_leave_sleep_state_prep(acpi_state);
172 172
173 /* ACPI 3.0 specs (P62) says that it's the responsabilty 173 /* ACPI 3.0 specs (P62) says that it's the responsibility
174 * of the OSPM to clear the status bit [ implying that the 174 * of the OSPM to clear the status bit [ implying that the
175 * POWER_BUTTON event should not reach userspace ] 175 * POWER_BUTTON event should not reach userspace ]
176 */ 176 */
diff --git a/kernel/power/Kconfig b/kernel/power/Kconfig
index ef9b802738a5..79833170bb9c 100644
--- a/kernel/power/Kconfig
+++ b/kernel/power/Kconfig
@@ -74,8 +74,8 @@ config PM_TRACE_RTC
74 RTC across reboots, so that you can debug a machine that just hangs 74 RTC across reboots, so that you can debug a machine that just hangs
75 during suspend (or more commonly, during resume). 75 during suspend (or more commonly, during resume).
76 76
77 To use this debugging feature you should attempt to suspend the machine, 77 To use this debugging feature you should attempt to suspend the
78 then reboot it, then run 78 machine, reboot it and then run
79 79
80 dmesg -s 1000000 | grep 'hash matches' 80 dmesg -s 1000000 | grep 'hash matches'
81 81
@@ -123,7 +123,10 @@ config HIBERNATION
123 called "hibernation" in user interfaces. STD checkpoints the 123 called "hibernation" in user interfaces. STD checkpoints the
124 system and powers it off; and restores that checkpoint on reboot. 124 system and powers it off; and restores that checkpoint on reboot.
125 125
126 You can suspend your machine with 'echo disk > /sys/power/state'. 126 You can suspend your machine with 'echo disk > /sys/power/state'
127 after placing resume=/dev/swappartition on the kernel command line
128 in your bootloader's configuration file.
129
127 Alternatively, you can use the additional userland tools available 130 Alternatively, you can use the additional userland tools available
128 from <http://suspend.sf.net>. 131 from <http://suspend.sf.net>.
129 132