Hi!

> We have a poorly behaving BIOS that simply returns from its suspend
> procedure, rather then jumping to the restart routine indicated by
> the FACS.  This appears to Linux as a failed S3 attempt.
> 
> This would normally succeed, but the sysenter msrs are not
> restored and the restart fails.  It is not clear if this is the only
> omission, but if the sysenter msrs are manually entered in the debugger, 
> the OS resumes.
> 
> The attached patch would invoke the register restore function on failure.
> This has absolutely no effect on correct systems, and, "does the right thing"
> for failed or stupid BIOSes, at least as far as I am concerned.

Can we get fixed bios, too?

What machines are affected?

> --- a/arch/i386/kernel/acpi/wakeup.S
> +++ b/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

%esp manipulation is now unneccessary?

Can we somehow propagate the error condition?

Why jmp when ret_point is next instruction?

>  ret_point:
>       call    restore_registers


-- 
Thanks for all the (sleeping) penguins.
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to