Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6

* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6:
ACPI: suspend: old debugging hacks sneaked back
Freezer: Fix JFFS2 garbage collector freezing issue (rev. 2)
HWMON: coretemp, suspend fix
Freezer: Fix APM emulation breakage
Freezer: Fix s2disk resume from initrd

+20 -18
-4
arch/x86/kernel/acpi/wakeup_32.S
··· 35 35 wakeup_code_start = . 36 36 .code16 37 37 38 - movw $0xb800, %ax 39 - movw %ax,%fs 40 - movw $0x0e00 + 'L', %fs:(0x10) 41 - 42 38 cli 43 39 cld 44 40
+8 -7
drivers/char/apm-emulation.c
··· 295 295 apm_ioctl(struct inode * inode, struct file *filp, u_int cmd, u_long arg) 296 296 { 297 297 struct apm_user *as = filp->private_data; 298 - unsigned long flags; 299 298 int err = -EINVAL; 300 299 301 300 if (!as->suser || !as->writer) ··· 330 331 * Wait for the suspend/resume to complete. If there 331 332 * are pending acknowledges, we wait here for them. 332 333 */ 333 - flags = current->flags; 334 + freezer_do_not_count(); 334 335 335 336 wait_event(apm_suspend_waitqueue, 336 337 as->suspend_state == SUSPEND_DONE); 338 + 339 + /* 340 + * Since we are waiting until the suspend is done, the 341 + * try_to_freeze() in freezer_count() will not trigger 342 + */ 343 + freezer_count(); 337 344 } else { 338 345 as->suspend_state = SUSPEND_WAIT; 339 346 mutex_unlock(&state_lock); ··· 367 362 * Wait for the suspend/resume to complete. If there 368 363 * are pending acknowledges, we wait here for them. 369 364 */ 370 - flags = current->flags; 371 - 372 - wait_event_interruptible(apm_suspend_waitqueue, 365 + wait_event_freezable(apm_suspend_waitqueue, 373 366 as->suspend_state == SUSPEND_DONE); 374 367 } 375 - 376 - current->flags = flags; 377 368 378 369 mutex_lock(&state_lock); 379 370 err = as->suspend_result;
+2 -3
drivers/hwmon/coretemp.c
··· 337 337 338 338 switch (action) { 339 339 case CPU_ONLINE: 340 - case CPU_ONLINE_FROZEN: 340 + case CPU_DOWN_FAILED: 341 341 coretemp_device_add(cpu); 342 342 break; 343 - case CPU_DEAD: 344 - case CPU_DEAD_FROZEN: 343 + case CPU_DOWN_PREPARE: 345 344 coretemp_device_remove(cpu); 346 345 break; 347 346 }
+1 -1
fs/jffs2/background.c
··· 105 105 106 106 /* Put_super will send a SIGKILL and then wait on the sem. 107 107 */ 108 - while (signal_pending(current)) { 108 + while (signal_pending(current) || freezing(current)) { 109 109 siginfo_t info; 110 110 unsigned long signr; 111 111
+9 -3
init/do_mounts_initrd.c
··· 55 55 sys_mount(".", "/", NULL, MS_MOVE, NULL); 56 56 sys_chroot("."); 57 57 58 + /* 59 + * In case that a resume from disk is carried out by linuxrc or one of 60 + * its children, we need to tell the freezer not to wait for us. 61 + */ 62 + current->flags |= PF_FREEZER_SKIP; 63 + 58 64 pid = kernel_thread(do_linuxrc, "/linuxrc", SIGCHLD); 59 65 if (pid > 0) 60 - while (pid != sys_wait4(-1, NULL, 0, NULL)) { 61 - try_to_freeze(); 66 + while (pid != sys_wait4(-1, NULL, 0, NULL)) 62 67 yield(); 63 - } 68 + 69 + current->flags &= ~PF_FREEZER_SKIP; 64 70 65 71 /* move initrd to rootfs' /old */ 66 72 sys_fchdir(old_fd);