Jan Beulich wrote:
The code to retrieve this information was (a) inside a CONFIG_VIDEO_SELECT
section and (b) protected by a check of a variable (vbe_version) that
would get initialized only when a VESA mode was selected on the command
line.

This patch solves a 2.6.20.11 (and 2.6.21) regression added by the patch titled "x86: Don't probe for DDC on VBE1.2"

The regression caused the screen resolution to be incorrectly adjusted by 6 pixels. This patch makes it go back to normal again.

https://bugs.gentoo.org/show_bug.cgi?id=181067

Please apply this patch or discuss further :)

Signed-off-by: Jan Beulich <[EMAIL PROTECTED]>

 arch/i386/boot/video.S |   28 ++++++++++++++++++----------
 1 files changed, 18 insertions(+), 10 deletions(-)

--- linux-2.6.22-rc5/arch/i386/boot/video.S     2007-04-26 05:08:32.000000000 
+0200
+++ 2.6.22-rc5-edid-no-vesa-mode/arch/i386/boot/video.S 2007-06-19 
14:34:50.000000000 +0200
@@ -96,6 +96,7 @@
 #define PARAM_LFB_PAGES                0x32
 #define PARAM_VESA_ATTRIB      0x34
 #define PARAM_CAPABILITIES     0x36
+#define PARAM_EDID_INFO                0x140
/* Define DO_STORE according to CONFIG_VIDEO_RETAIN */
 #ifdef CONFIG_VIDEO_RETAIN
@@ -132,8 +133,8 @@ vid1:
 #ifdef CONFIG_VIDEO_RETAIN
        call    restore_screen                  # Restore screen contents
 #endif /* CONFIG_VIDEO_RETAIN */
-       call    store_edid
 #endif /* CONFIG_VIDEO_SELECT */
+       call    store_edid
        call    mode_params                     # Store mode parameters
        popw    %ds                             # Restore original DS
        ret
@@ -571,16 +572,12 @@ setr1:    lodsw
        jmp     _m_s
check_vesa:
-#ifdef CONFIG_FIRMWARE_EDID
        leaw    modelist+1024, %di
        movw    $0x4f00, %ax
        int     $0x10
        cmpw    $0x004f, %ax
        jnz     setbad
- movw 4(%di), %ax
-       movw    %ax, vbe_version
-#endif
        leaw    modelist+1024, %di
        subb    $VIDEO_FIRST_VESA>>8, %bh
        movw    %bx, %cx                        # Get mode information structure
@@ -1935,6 +1932,7 @@ skip10:   movb    %ah, %al
        popw    %cx
        popw    %ax
        ret
+#endif /* CONFIG_VIDEO_SELECT */
store_edid:
 #ifdef CONFIG_FIRMWARE_EDID
@@ -1945,18 +1943,28 @@ store_edid:
        pushw   %dx
        pushw   %di
+ pushw %ds
+       popw    %es
+       leaw    modelist, %di
+       movw    $0x4f00, %ax
+       int     $0x10
+       cmpw    $0x004f, %ax
+       setne   %dl
+       cmpw    $0x0200, 4(%di)                 # only do EDID on >= VBE2.0
+       adc     %dl, %dl
+
        pushw   %fs
        popw    %es
movl $0x13131313, %eax # memset block with 0x13
        movw    $32, %cx
-       movw    $0x140, %di
+       movw    $PARAM_EDID_INFO, %di
        cld
        rep
        stosl
- cmpw $0x0200, vbe_version # only do EDID on >= VBE2.0
-       jl      no_edid
+       testb   %dl, %dl
+       jnz     no_edid
pushw %es # save ES
        xorw    %di, %di                        # Report Capability
@@ -1978,7 +1986,7 @@ store_edid:
        movw    $0x01, %bx
        movw    $0x00, %cx
        movw    $0x00, %dx
-       movw    $0x140, %di
+       movw    $PARAM_EDID_INFO, %di
        int     $0x10
no_edid:
@@ -1991,6 +1999,7 @@ no_edid:
 #endif
        ret
+#ifdef CONFIG_VIDEO_SELECT
 # VIDEO_SELECT-only variables
 mt_end:                .word   0       # End of video mode table if built
 edit_buf:      .space  6       # Line editor buffer
@@ -2000,7 +2009,6 @@ do_restore:       .byte   0       # Screen contents al
 svga_prefix:   .byte   VIDEO_FIRST_BIOS>>8       # Default prefix for BIOS 
modes
 graphic_mode:  .byte   0       # Graphic mode with a linear frame buffer
 dac_size:      .byte   6       # DAC bit depth
-vbe_version:   .word   0       # VBE bios version
# Status messages
 keymsg:                .ascii  "Press <RETURN> to see video modes available, "



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to