From: William Morrrow <william.morrow@xxxxxxx> This was discovered on a broken BIOS that simply returned from its suspend procedure, appearing to the OS as a failed S3 attempt. 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 broken BIOS. Signed-off-by: William Morrow <william.morrow@xxxxxxx> Signed-off-by: Jordan Crouse <jordan.crouse@xxxxxxx> Cc: "Yu, Luming" <luming.yu@xxxxxxxxx> Cc: "Brown, Len" <len.brown@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- arch/i386/kernel/acpi/wakeup.S | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff -puN arch/i386/kernel/acpi/wakeup.S~acpi-correctly-recover-from-a-failed-s3-attempt arch/i386/kernel/acpi/wakeup.S --- a/arch/i386/kernel/acpi/wakeup.S~acpi-correctly-recover-from-a-failed-s3-attempt +++ a/arch/i386/kernel/acpi/wakeup.S @@ -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 _ - To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html