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

From: H. Peter Anvin
Date: Thu Feb 28 2008 - 12:54:21 EST


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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/