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

Rafael J. Wysocki
2008-07-13T20:30:08Z

On Sunday, 13 of July 2008, Andi Kleen wrote:
> 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.

So should we check if we are in real mode at the entry point?

That would compilcate things a lot.

Thanks,
Rafael