Re: Regression in 2.6.25-rc3: s2ram segfaults before suspending

H. Peter Anvin
2008-02-28T17:54:21Z

Klaus S. Madsen wrote:
>
> Hope this helps.
>

What this seems to indicate is a segfault inside VM mode that causes it
to exit to deliver the SIGSEGV, so without more information, such as
signal context, there isn't much to know about it.

It looks like the fault happens inside the VESA BIOS, specifically VBE
function 3:

--------V-104F03-----------------------------
INT 10 - VESA SuperVGA BIOS - GET CURRENT VIDEO MODE
AX = 4F03h
Return: AL = 4Fh if function supported
AH = status
00h successful
BX = video mode (see #00083,#00084)
bit 13: VBE/AF v1.0P accelerated video mode
bit 14: linear frame buffer enabled (VBE v2.0+)
bit 15: don't clear video memory
01h failed
SeeAlso: AH=0Fh,AX=4E04h,AX=4F02h

... which normally would be a trivial function which only reads a couple
of status words out of internal state and returns.

****

Typically, when the kernel reflects an error in VM86 mode it will update
the structure in memory (in your case, the vm86plus_struct) to reflect
the context. Would it be possible for you to read it out?

[FWIW, that code looks like it's using assembly for no good current
reason. Not sure if it'd help to clean it up.]

-hpa