Problem with framebuffer in 2.6.0-test3
If I compile with framebuffer I get weird results during boot.
When I use "vga=normal", I get this weird screen during boot. It doesn't show any text. It just lots of coloured pixels.
When I use "vga=0x301" I just get a blank screen during boot.
In the init scripts I call fbset to set the proper resolution, which work in both cases.
Here is part of my .config:CONFIG_FB=y
# CONFIG_FB_CIRRUS is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_IMSTT is not setCONFIG_FB_VGA16=yCONFIG_FB_VESA=yCONFIG_VIDEO_SELECT=y
# CONFIG_FB_HGA is not set
# CONFIG_FB_RIVA is not set
# CONFIG_FB_MATROX is not set
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
# CONFIG_FB_ATY is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_NEOMAGIC is not setCONFIG_FB_3DFX=y
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_PM3 is not set
# CONFIG_FB_VIRTUAL is not set
Quoted 1 line
From dmesg (with vga=0x301)
Linux version 2.6.0-test3 (root@Q) (gcc version 2.95.3 20010315 (release)) #6 Mon Aug 11 19:47:08 CEST 2003
Video mode to be used for restore is 301
...
Console: colour dummy device 80x25
...
fb: 3Dfx Banshee memory = 16384K
vesafb: abort, cannot reserve video memory at 0xe6000000
vesafb: framebuffer at 0xe6000000, mapped to 0xcf802000, size 16384k
vesafb: mode is 640x480x8, linelength=640, pages=53
vesafb: protected mode interface info at c000:7e95
vesafb: scrolling: redraw
fb1: VESA VGA frame buffer device
vga16fb: initializing
vga16fb: mapped to 0xc00a0000
fb2: VGA16 VGA frame buffer device
Console: switching to colour frame buffer device 80x30
With vga=normal
Linux version 2.6.0-test3 (root@Q) (gcc version 2.95.3 20010315 (release)) #6 Mon Aug 11 19:47:08 CEST 2003
Aug 11 20:13:45 Q kernel: Video mode to be used for restore is f00
...
Console: colour VGA+ 80x25
...
fb: 3Dfx Banshee memory = 16384K
vga16fb: mapped to 0xc00a0000
fb1: VGA16 VGA frame buffer device
Console: switching to colour frame buffer device 80x30
Kurt
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 9 lines · Andrew Morton
Quoted 2 lines · Kurt Roeckx
If I compile with framebuffer I get weird results during boot.
Please test
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.0-test3/2.6.0-test3-mm2/broken-out/fbdev.patch
and send a report to linux-kernel and James Simmons <[email protected]>
It behaves just the same as plain 2.6.0-test3.
Kurt
Quoted 6 lines · Andrew Morton
Quoted 4 lines
Quoted 2 lines · Kurt Roeckx
If I compile with framebuffer I get weird results during boot.
Quoted 7 lines
Quoted 5 lines
Please test
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.0-test3/2.6.0-test3-mm2/broken-out/fbdev.patch
and send a report to linux-kernel and James Simmons <[email protected]>
It behaves just the same as plain 2.6.0-test3.
Bad settings.
Quoted 3 lines
When I use "vga=normal", I get this weird screen during boot. It doesn't show any text. It just lots of coloured pixels.
This tells the the BIOS to set the video mode to a VGA text hardware mode. This will never work with any of the framebuffer drivers. That is meant only for vgacon.
Quoted 1 line
When I use "vga=0x301" I just get a blank screen during boot.
This will only work with VESA fbdev.
Quoted 2 lines
In the init scripts I call fbset to set the proper resolution, which work in both cases.
fbset doesn't work with VESA fbdev because VESA doesn't support mode changes.
Quoted 14 lines
Here is part of my .config:
CONFIG_FB=y
#CONFIG_FB_CIRRUSis not set
#CONFIG_FB_PM2is not set
#CONFIG_FB_CYBER2000is not set
#CONFIG_FB_IMSTTis not setCONFIG_FB_VGA16=yCONFIG_FB_VESA=yCONFIG_VIDEO_SELECT=y
#CONFIG_FB_HGAis not set
#CONFIG_FB_RIVAis not set
#CONFIG_FB_MATROXis not set
#CONFIG_FB_RADEONis not set
#CONFIG_FB_ATY128is not set
Quoted 8 lines
#
CONFIG_FB_ATYis not set
#CONFIG_FB_SISis not set
#CONFIG_FB_NEOMAGICis not setCONFIG_FB_3DFX=y
#CONFIG_FB_VOODOO1is not set
#CONFIG_FB_TRIDENTis not set
#CONFIG_FB_PM3is not set
#CONFIG_FB_VIRTUALis not set
Ah. You have a Voodoo 3 card. Please only us that driver. Also make sure you have CONFIG_FRAMEBUFFER_CONSOLE set.
Quoted 3 lines · James Simmons
Ah. You have a Voodoo 3 card. Please only us that driver. Also make sure you have
CONFIG_FRAMEBUFFER_CONSOLEset.
This used to work perfectly in 2.4.
I disabled CONFIG_FB_VGA16 and CONFIG_FB_VESA now I get:
LD .tmp_vmlinux1
drivers/built-in.o(.text+0x742cb): In function `tdfxfb_imageblit':
: undefined reference to `cfb_imageblit'
make: *** [.tmp_vmlinux1] Error 1
Kurt
Quoted 2 lines
I disabled
CONFIG_FB_VGA16andCONFIG_FB_VESAnow I get:
I think the issue is that only one framebuffer is mapped to the console. VESA sets the graphics state before any fbdev drivers are registered. I believe that vga16fb is registered to the console. Because vga16fb expects a different hardware state than what VESA has done you get the problems you experience.
Quoted 4 lines
LD .tmp_vmlinux1
drivers/built-in.o(.text+0x742cb): In function `tdfxfb_imageblit':
: undefined reference to `cfb_imageblit'
make: *** [.tmp_vmlinux1] Error 1
??? That shouldn't happen.
Quoted 7 lines · James Simmons
Quoted 5 lines
LD .tmp_vmlinux1
drivers/built-in.o(.text+0x742cb): In function `tdfxfb_imageblit':
: undefined reference to `cfb_imageblit'
make: *** [.tmp_vmlinux1] Error 1??? That shouldn't happen.
I changed drivers/video/Makefile like this:
-obj-$(CONFIG_FB_3DFX) += tdfxfb.o
+obj-$(CONFIG_FB_3DFX) += tdfxfb.o cfbimgblt.o
And now it works.
Kurt