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