Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 6 May 2001 09:36:34 -0500
From:      Andrew Hesford <ajh3@chmod.ath.cx>
To:        Igor Karpov <jc@minjust.gov.ua>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: XFree86-4.0.3 and i815e.
Message-ID:  <20010506093634.A57398@cec.wustl.edu>
In-Reply-To: <20010506112233.A88011@minjust.gov.ua>; from jc@minjust.gov.ua on Sun, May 06, 2001 at 11:22:33AM %2B0300
References:  <20010506112233.A88011@minjust.gov.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, May 06, 2001 at 11:22:33AM +0300, Igor Karpov wrote:
> Hi!
> 
> Got a problem with X.
> 
> I'm have a desktop computer (ASUS CUSL2) running FreeBSD-4.3-STABLE.
> For some time I had no problems with X Window (4.0.1), but after
> upgrade to 4.0.3 X Window demonstrate strange behaivour. (And yes, I
> tried clean X install).
> 
> First of all, XFree86 -configure immediately dumps core with the
> following strings:
> 
> [skipped]
> 
> (II) LoadModule: "vgahw"
> (II) Loading /usr/X11R6/lib/modules/libvgahw.a
> (II) Module vgahw: vendor="The XFree86 Project"
>         compiled for 4.0.3, module version = 0.1.0
>         ABI class: XFree86 Video Driver, version 0.3
> Symbol xf86SetDDCproperties from module
> /usr/X11R6/lib/modules/drivers/cirrus_laguna.o is unresolved!
> Symbol xf86Int10AllocPages from module
> /usr/X11R6/lib/modules/drivers/vesa_drv.o is unresolved!
> Symbol xf86int10Addr from module
> /usr/X11R6/lib/modules/drivers/vesa_drv.o is un resolved!
> Symbol xf86int10Addr from module
> /usr/X11R6/lib/modules/drivers/vesa_drv.o is un resolved!
> 
> [following few screens of errors like that are skipped too]
> 
> I can run xdm and therefore, X Window using an old XF86Config-4. It
> works. But, when I'm switching to one of text mode screens and back to
> X Window, it crashes in the moment of switching from text vty to
> ttyvb, which is allocated for xdm.
> 
> Now error occures later:
> 
> [skipped]
> 
> (WW) I810(0): xf86BindGARTMemory: binding of gart memory with key 3
>         at offset 0x0 failed (No such file or directory)
> 
> What's going on? Am I missing something?

Welcome to the world of the unsupported. The i810 and i815 are only
supported under Linux, because it doesn't work quite right with FreeBSD.
The real kicker is that it works just fine for some people. This makes
it doubly frustrating. I have an i810 that does the same thing you speak
of.

I never bothered to check my logs like you did, but I knew the cause of
the problem. Your paste of the xf86BindGARTMemory error confirms what I
expected. If you look through the souce for the i810 X server (or driver
or whatever it is called), you will find that somebody decided to
completely overhaul it between 4.0.1 and 4.0.2. In 4.0.2 and above,
there is a provision to allocate GART memory, but no provision to
release it. The maintainer of the port has not bothered to fix this. In
4.0.1, there were provisions to free GART memory, and the port
maintainer created a patch to make this work in FreeBSD.

The problem is simple. When you switch to a text console and switch
back, the server tries to reallocate GART memory to display your root
window. It expects the memory to be free, and tries to grab it. But
since the memory is already tied up by the X server, the server fails
with an error.

This part seems pretty universal. The problem is what happens next. Some
people, the lucky ones, can restart XFree86 with no trouble. The unlucky
ones, like me, have to reboot before we can use the X server again. It
won't only crash, but it will take down video for the whole session.

Who is to blame for this problem? Certainly not XFree86, they warn that
the i810 is unsupported. Neither is FreeBSD responsible, it has nothing
to do with the high-level shenanigans of a video card. The culprit is
Intel. If they didn't give you a cheap-ass onboard video, with no memory
of its own, you wouldn't need the AGP features of the card. But you do,
and this is why we have problems.

I believe that Linus and his cronies have set up the AGP driver in Linux
to automatically free GART memory. This is why the X server does not try
to free it. This is rather stupid, since this is not the optimal way to
handle rendering when performance is an issue, but hey, it's Linux. If
the XFree86 project would open their eyes and see that FreeBSD has AGP
support too, they ought to be able to port the driver with ease. Maybe
they have in 4.1.0. It's coming out this month, if I'm not mistaken.

I tried to patch the problem myself, but five minutes on the job I
realized I have no clue how XFree86 handles AGP, and I don't care to
learn. If 4.1.0 doesn't support it, I think I will bother to learn...
summer is coming up, after all.

-- 
Andrew Hesford
ajh3@chmod.ath.cx

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010506093634.A57398>