Commit 4e6e6504 authored by William Morrrow's avatar William Morrrow Committed by Len Brown
Browse files

ACPI: Handle BIOS that resumes from S3 to suspend routine rather than resume vector



A BIOS has been found that resumes from S3 to the routine that invoked suspend,
ignoring the resume vector.  This appears to the OS as a failed S3 attempt.

This same system suspend/resume's properly with Windows.

It is possible to invoke the protected mode register restore routine (which
would normally restore the sysenter registers) when the BIOS returns from
S3.  This has no effect on a correctly running system and repairs the
damage from the deviant BIOS.

Signed-off-by: default avatarWilliam Morrow <william.morrow@amd.com>
Signed-off-by: default avatarJordan Crouse <jordan.crouse@amd.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent 9f737633
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -292,7 +292,10 @@ ENTRY(do_suspend_lowlevel)
	pushl	$3
	call	acpi_enter_sleep_state
	addl	$4, %esp
	ret

#	In case of S3 failure, we'll emerge here.  Jump
# 	to ret_point to recover
	jmp	ret_point
	.p2align 4,,7
ret_point:
	call	restore_registers