On Thu, Jun 07, 2001 at 06:59:15AM -0500, Will Andrews wrote:
> On Thu, Jun 07, 2001 at 12:32:50AM -0500, Andrew Hesford ([EMAIL PROTECTED]) wrote:
> > The XFree86 4.0.1 sources *did* offer a helpful hint. I have posted
> > another email which includes a patch to fix the buggy i810 driver.
>
> Are you people talking about XFree86 4.1.0 or 4.0.1? Because
> 4.0.1 is >WAY< outdated. :-)
>
> --
> wca
I'm talking about both. The last version of XFree86 that worked properly
with the i810 was 4.0.1. Driver restructuring in later versions broke
VT-switching code in subsequent versions. Unfortunately, 4.1.0 did not
fix this problem (although they claim to support the i810 under
FreeBSD), and I managed to trace the problem to an AGPIOC_BIND ioctl.
Since XFree86 4.0.1 did not have this problem, I downloaded its sources
and was looking to see how the i810 driver handled VT switching. As far
as I can tell, the *only* problem with 4.0.2, 4.0.3, and 4.1.0 is that
they calle I810UnbindGARTMemory() when leaving the X VT, and call
I810BindGARTMemory() when entering the X VT. This call to
I810BindGARTMemory() is the one that makes the bad ioctl call.
The solution is to comment out the calls to I810BindGARTMemory() and
I810UnbindGARTMemory() in the VT-switching functions. The end result is
that I810EnterVT() and I810LeaveVT() are now identical in 4.1.0 to the
ones in 4.0.1, and the server no longer crashes when one switches
terminals. I have attached a patch, and hope that the XFree86 port
maintainer will consider adding this to the files/ directory to achieve
maximum distribution. I will contact him shortly.
I imagine it would be possible to apply the same changes to the drivers
in 4.0.2 or 4.0.3, although now I don't see why anybody would care.
--
Andrew Hesford
[EMAIL PROTECTED]
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message