Commit 70ec75c5 authored by Len Brown's avatar Len Brown

Merge branches 'release', 'misc' and 'misc-2.6.25' into release

...@@ -147,8 +147,10 @@ and is between 256 and 4096 characters. It is defined in the file ...@@ -147,8 +147,10 @@ and is between 256 and 4096 characters. It is defined in the file
default: 0 default: 0
acpi_sleep= [HW,ACPI] Sleep options acpi_sleep= [HW,ACPI] Sleep options
Format: { s3_bios, s3_mode } Format: { s3_bios, s3_mode, s3_beep }
See Documentation/power/video.txt See Documentation/power/video.txt for s3_bios and s3_mode.
s3_beep is for debugging; it makes the PC's speaker beep
as soon as the kernel's real-mode entry point is called.
acpi_sci= [HW,ACPI] ACPI System Control Interrupt trigger mode acpi_sci= [HW,ACPI] ACPI System Control Interrupt trigger mode
Format: { level | edge | high | low } Format: { level | edge | high | low }
......
...@@ -386,6 +386,11 @@ before suspending; then remount them after resuming. ...@@ -386,6 +386,11 @@ before suspending; then remount them after resuming.
There is a work-around for this problem. For more information, see There is a work-around for this problem. For more information, see
Documentation/usb/persist.txt. Documentation/usb/persist.txt.
Q: Can I suspend-to-disk using a swap partition under LVM?
A: No. You can suspend successfully, but you'll not be able to
resume. uswsusp should be able to work with LVM. See suspend.sf.net.
Q: I upgraded the kernel from 2.6.15 to 2.6.16. Both kernels were Q: I upgraded the kernel from 2.6.15 to 2.6.16. Both kernels were
compiled with the similar configuration files. Anyway I found that compiled with the similar configuration files. Anyway I found that
suspend to disk (and resume) is much slower on 2.6.16 compared to suspend to disk (and resume) is much slower on 2.6.16 compared to
......
...@@ -166,7 +166,7 @@ int acpi_request_vector(u32 int_type) ...@@ -166,7 +166,7 @@ int acpi_request_vector(u32 int_type)
return vector; return vector;
} }
char *__acpi_map_table(unsigned long phys_addr, unsigned long size) char *__init __acpi_map_table(unsigned long phys_addr, unsigned long size)
{ {
return __va(phys_addr); return __va(phys_addr);
} }
......
...@@ -106,7 +106,7 @@ enum acpi_irq_model_id acpi_irq_model = ACPI_IRQ_MODEL_PIC; ...@@ -106,7 +106,7 @@ enum acpi_irq_model_id acpi_irq_model = ACPI_IRQ_MODEL_PIC;
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
/* rely on all ACPI tables being in the direct mapping */ /* rely on all ACPI tables being in the direct mapping */
char *__acpi_map_table(unsigned long phys_addr, unsigned long size) char *__init __acpi_map_table(unsigned long phys_addr, unsigned long size)
{ {
if (!phys_addr || !size) if (!phys_addr || !size)
return NULL; return NULL;
...@@ -131,7 +131,7 @@ char *__acpi_map_table(unsigned long phys_addr, unsigned long size) ...@@ -131,7 +131,7 @@ char *__acpi_map_table(unsigned long phys_addr, unsigned long size)
* from the fixed base. That's why we start at FIX_IO_APIC_BASE_END and * from the fixed base. That's why we start at FIX_IO_APIC_BASE_END and
* count idx down while incrementing the phys address. * count idx down while incrementing the phys address.
*/ */
char *__acpi_map_table(unsigned long phys, unsigned long size) char *__init __acpi_map_table(unsigned long phys, unsigned long size)
{ {
unsigned long base, offset, mapped_size; unsigned long base, offset, mapped_size;
int idx; int idx;
......
...@@ -286,13 +286,13 @@ acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state) ...@@ -286,13 +286,13 @@ acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state)
} }
/* /*
* 1) Disable/Clear all GPEs
* 2) Enable all wakeup GPEs * 2) Enable all wakeup GPEs
*/ */
status = acpi_hw_disable_all_gpes(); status = acpi_hw_disable_all_gpes();
if (ACPI_FAILURE(status)) { if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status); return_ACPI_STATUS(status);
} }
acpi_gbl_system_awake_and_running = FALSE; acpi_gbl_system_awake_and_running = FALSE;
status = acpi_hw_enable_all_wakeup_gpes(); status = acpi_hw_enable_all_wakeup_gpes();
......
...@@ -258,7 +258,8 @@ acpi_physical_address __init acpi_os_get_root_pointer(void) ...@@ -258,7 +258,8 @@ acpi_physical_address __init acpi_os_get_root_pointer(void)
} }
} }
void __iomem *acpi_os_map_memory(acpi_physical_address phys, acpi_size size) void __iomem *__init_refok
acpi_os_map_memory(acpi_physical_address phys, acpi_size size)
{ {
if (phys > ULONG_MAX) { if (phys > ULONG_MAX) {
printk(KERN_ERR PREFIX "Cannot map memory that high\n"); printk(KERN_ERR PREFIX "Cannot map memory that high\n");
......
...@@ -51,10 +51,8 @@ static struct acpi_prt_entry *acpi_pci_irq_find_prt_entry(int segment, ...@@ -51,10 +51,8 @@ static struct acpi_prt_entry *acpi_pci_irq_find_prt_entry(int segment,
int bus, int bus,
int device, int pin) int device, int pin)
{ {
struct list_head *node = NULL;
struct acpi_prt_entry *entry = NULL; struct acpi_prt_entry *entry = NULL;
if (!acpi_prt.count) if (!acpi_prt.count)
return NULL; return NULL;
...@@ -64,8 +62,7 @@ static struct acpi_prt_entry *acpi_pci_irq_find_prt_entry(int segment, ...@@ -64,8 +62,7 @@ static struct acpi_prt_entry *acpi_pci_irq_find_prt_entry(int segment,
* *
*/ */
spin_lock(&acpi_prt_lock); spin_lock(&acpi_prt_lock);
list_for_each(node, &acpi_prt.entries) { list_for_each_entry(entry, &acpi_prt.entries, node) {
entry = list_entry(node, struct acpi_prt_entry, node);
if ((segment == entry->id.segment) if ((segment == entry->id.segment)
&& (bus == entry->id.bus) && (bus == entry->id.bus)
&& (device == entry->id.device) && (device == entry->id.device)
......
...@@ -458,11 +458,9 @@ int acpi_power_transition(struct acpi_device *device, int state) ...@@ -458,11 +458,9 @@ int acpi_power_transition(struct acpi_device *device, int state)
} }
end: end:
if (result) { if (result)
device->power.state = ACPI_STATE_UNKNOWN; device->power.state = ACPI_STATE_UNKNOWN;
printk(KERN_WARNING PREFIX "Transitioning device [%s] to D%d\n", else {
device->pnp.bus_id, state);
} else {
/* We shouldn't change the state till all above operations succeed */ /* We shouldn't change the state till all above operations succeed */
device->power.state = state; device->power.state = state;
} }
......
...@@ -170,7 +170,7 @@ static int acpi_pm_enter(suspend_state_t pm_state) ...@@ -170,7 +170,7 @@ static int acpi_pm_enter(suspend_state_t pm_state)
/* Reprogram control registers and execute _BFS */ /* Reprogram control registers and execute _BFS */
acpi_leave_sleep_state_prep(acpi_state); acpi_leave_sleep_state_prep(acpi_state);
/* ACPI 3.0 specs (P62) says that it's the responsabilty /* ACPI 3.0 specs (P62) says that it's the responsibility
* of the OSPM to clear the status bit [ implying that the * of the OSPM to clear the status bit [ implying that the
* POWER_BUTTON event should not reach userspace ] * POWER_BUTTON event should not reach userspace ]
*/ */
......
...@@ -74,8 +74,8 @@ config PM_TRACE_RTC ...@@ -74,8 +74,8 @@ config PM_TRACE_RTC
RTC across reboots, so that you can debug a machine that just hangs RTC across reboots, so that you can debug a machine that just hangs
during suspend (or more commonly, during resume). during suspend (or more commonly, during resume).
To use this debugging feature you should attempt to suspend the machine, To use this debugging feature you should attempt to suspend the
then reboot it, then run machine, reboot it and then run
dmesg -s 1000000 | grep 'hash matches' dmesg -s 1000000 | grep 'hash matches'
...@@ -123,7 +123,10 @@ config HIBERNATION ...@@ -123,7 +123,10 @@ config HIBERNATION
called "hibernation" in user interfaces. STD checkpoints the called "hibernation" in user interfaces. STD checkpoints the
system and powers it off; and restores that checkpoint on reboot. system and powers it off; and restores that checkpoint on reboot.
You can suspend your machine with 'echo disk > /sys/power/state'. You can suspend your machine with 'echo disk > /sys/power/state'
after placing resume=/dev/swappartition on the kernel command line
in your bootloader's configuration file.
Alternatively, you can use the additional userland tools available Alternatively, you can use the additional userland tools available
from <http://suspend.sf.net>. from <http://suspend.sf.net>.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment