Re: [RFT] x86 acpi: normalize segment descriptor register on resume

Andi Kleen
2008-07-13T20:21:50Z

H. Peter Anvin wrote:
> Andi Kleen wrote:
>>
>> Hmm, but the change was not supposed to break the s3 bios. Something
>> fishy is going on. It sounds like the s3 bios relies on some earlier
>> segment register setup.
>>
>> If true this means the segment register reset would need to be moved
>> later after S3 bios ran. Saving/restoring is unfortunately not possible
>> because we cannot save/restore the hidden state loaded from the GDT
>> earlier.
>>
>
> That really doesn't make sense, though. The VESA BIOS has to be entered
> in clean real mode; it's designed to be entered from reset, after all.
> There is definitely something fishy going on, but I don't think this
> particular aspect is it.

It probably switches to protected mode. I noticed this on my old
Fujitsu laptop when I tried to make the S3 wakeup run in the s2ram x86 emulator
and found it entered protected mode at some point, which x86emu
didn't support.

I guess Lenovo is doing the same.

And that protected mode code relies on some GDT values that have been
loaded earlier when the BIOS also went into protected mode.

It seems the BIOS programmers really don't like real mode anymore.
Somehow understandable.

-Andi