2003-08-15 16:25:46

by Kurt Roeckx

[permalink] [raw]
Subject: 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 set
CONFIG_FB_VGA16=y
CONFIG_FB_VESA=y
CONFIG_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 set
CONFIG_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

>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


2003-08-15 22:04:12

by James Simmons

[permalink] [raw]
Subject: Re: Problem with framebuffer in 2.6.0-test3


> On Fri, Aug 15, 2003 at 02:18:46PM -0700, Andrew Morton wrote:
> > Kurt Roeckx <[email protected]> wrote:
> > >
> > > 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.

Bad settings.


2003-08-15 21:59:05

by Kurt Roeckx

[permalink] [raw]
Subject: Re: Problem with framebuffer in 2.6.0-test3

On Fri, Aug 15, 2003 at 02:18:46PM -0700, Andrew Morton wrote:
> Kurt Roeckx <[email protected]> wrote:
> >
> > 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

2003-08-15 22:03:55

by James Simmons

[permalink] [raw]
Subject: Re: Problem with framebuffer in 2.6.0-test3


> 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.

> When I use "vga=0x301" I just get a blank screen during boot.

This will only work with VESA fbdev.

> 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.

> 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 set
> CONFIG_FB_VGA16=y
> CONFIG_FB_VESA=y
> CONFIG_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 set
> CONFIG_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

Ah. You have a Voodoo 3 card. Please only us that driver. Also make sure
you have CONFIG_FRAMEBUFFER_CONSOLE set.


2003-08-15 22:46:54

by Kurt Roeckx

[permalink] [raw]
Subject: Re: Problem with framebuffer in 2.6.0-test3

On Fri, Aug 15, 2003 at 11:03:51PM +0100, James Simmons wrote:
>
> Ah. You have a Voodoo 3 card. Please only us that driver. Also make sure
> you have CONFIG_FRAMEBUFFER_CONSOLE set.

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

2003-08-15 22:59:13

by James Simmons

[permalink] [raw]
Subject: Re: Problem with framebuffer in 2.6.0-test3


> I disabled CONFIG_FB_VGA16 and CONFIG_FB_VESA now 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.

> 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.


2003-08-16 15:10:05

by Kurt Roeckx

[permalink] [raw]
Subject: Re: Problem with framebuffer in 2.6.0-test3

On Fri, Aug 15, 2003 at 11:59:11PM +0100, James Simmons wrote:
>
> > 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