XFree86 3.3.6 legacy issues, and the future (was: an S3 problem)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 5 Jun 2002, Thomas Dodd wrote:

Long email follows.  An attempt to help users of older hardware, 
ensure that it stands the highest chances of being supported in 
the future, rather than being dropped and unsupported.

>Date: Wed, 05 Jun 2002 18:16:46 -0500
>From: Thomas Dodd <ted@cypress.com>
>To: valhalla-list@redhat.com, xfree86-list@redhat.com
>Content-Type: text/plain; charset=us-ascii; format=flowed
>List-Id: Red Hat XFree86 list <xfree86-list.redhat.com>
>Subject: Re: Solved: post 7.2->7.3 upgrade X server problem
>
>David M. Wood wrote:
>
>>to the 4.2.0 server XFree86 rather than to the the 3.3.6 S3 server
>>XF86_S3 which the installer had properly installed (given my older video
>>card). Linking to
>>XF86_S3 instead fixed everything.
>>  
>File a bug in bugzilla.redhat.com on Anaconda or Xconfigurator
>for this. It's supposed to switch to XF4.0 if it's supported.
>
>It's misdetecting the card/chip, and thinks the XF4.0 server is correct.
>I thik the XF3.3.6 server was installed because you had it there before.
>
>I'll also mention it on the Red Hat XFree86 list ( xfree86-list@redhat.com)
>since Mike Harris, the Red Hat X maintainer isn't on the valhalla list.

I've had a few reports of this now for S3 hardware.  There are a 
few different issues here I believe.  One, is that XFree86 4.2.0 
contains a new S3 driver which supports hardware previously 
unsupported by 3.3.6.  After discussing it with the author of 
this new driver, I changed the default server to 4.2.0 for the 
hardware that he (Ani Joshi) claimed was supported, after 
confirming it by examining the driver source code.

However, the problem is that there are cards out there which 
identify as being the same piece of hardware via PCI ID, however 
they contain different a RAMDAC.  In the case of the new driver, 
it only supports certain RAMDACs, and not all of them.  So there 
is no really easy way to autodetect this sort of thing, and pick 
the server which is guaranteed to work in all cases.

The only way to guarantee it, is to default to 3.3.6 all the 
time, and not use the new driver.  However, the problem with 
that, is that most people with this hardware will just accept and 
use the old driver, like they always have in the past.  That 
however does not allow us to find out about bugs in the new 
stuff.

Here is a deeper problem to solve:

At the time that XFree86 4.0 originally came out, the new 
driver interface it used did not have support for all of 
the hardware that the XFree86 3.3.6 servers did.  So in order to 
maximize hardware support, 4.x was made the official X release to 
ship, and 3.3.6 was included merely for the X servers.  The 
inclusion of these 3.3.6 X servers was done ONLY for 
compatibility reasons, similarly to how we include backward 
compatible C libraries, and various other libraries for a few 
releases to ensure a smooth transition between major release 
cycles.

There was never any intention of shipping XFree86 3.3.6 
indefinitely.  It was only done, so that hopefully, as time moved 
on, XFree86 4.x would mature enough to support more hardware, and 
eventually 3.3.6 would become irrelevant because either:

1) All hardware supported in 3.3.6 would be supported by 4.x

or

2) Most hardware supported by 3.3.6 would be supported by 4.x, 
   and the remaining hardware would be considered old enough that 
   if nobody ported the stuff, it would be considered obsolete 
   and unmaintained.

In either case, 3.3.6 would be removed at some point in time, and 
hopefully all of the important drivers would be ported to the 4.x 
infrastructure.

Well, during the last couple of years since the release of 
XFree86 4.0, new 4.x releases have indeed added support for a lot 
of the older hardware previously only supported by 3.3.6.  Also, 
time has moved ahead by 2+ years now, and a lot of that hardware 
is either no longer used and/or the number of users out there has 
dwindled significantly.

In order to get people moved over to 4.x, we need people to test 
out the new drivers that come out supporting hardware previously 
that only worked on 3.3.6, and to not only report bugs to us here 
at Red Hat, but to report bugs in the drivers to the upstream 
people who wrote those drivers, and are thus much more likely to 
be able to fix them.  If people try 4.x, it doesn't work, then 
they switch to 3.3.6, then the 4.x drivers will likely never ever 
get fixed, and when 3.3.6 is dropped eventually, those users will 
find themselves needing to buy a new video card, or to hack in an 
old copy of 3.3.6.

So, the reason for 4.x being the default for a lot of hardware,
is that 4.x contains code now which allegedly supports stuff only
supported by 3.3.6.  We do not have all of this hardware, and we
rely on end-users testing the stuff during our beta cycles.  
Especially if it is ancient hardware like S3.  (For the record, I
have no S3 hardware at all for testing or debugging).  Since most 
people have moved on to more modern hardware however, I'm 
noticing a patern of ancient hardware not being adequately tested 
until after we make our final release, at which point users 
upgrade, and then find that our defaults do not work for them any 
longer.

Maintaining both XFree86 4.x, and 3.3.6 in the distro is a lot 
more extra work than would be maintaining just 4.x.  The 
configuration tools are much more complicated, as are many other 
aspects of the system.  Maintaining XFree86 3.3.6 indefinitely is 
just not a feasible thing to do, and each release, the number of 
users needing 3.3.6 decreases, which makes it even more 
infeasible to keep around.

Another problem that magnifies the amount of maintainership
overhead that needs to be done, is when a security hole is found
in X.  Twice as much work needs to be done to fix it generally 
including developer work, as well as QA testing before releasing 
erratum.  Does it make sense to spend all of these human 
resources maintaining a piece of legacy?  I believe that 
redirecting the resources spent on maintaining XFree86 3.3.6
are much much more usefully spent on finding/fixing bugs in 
XFree86 4.x.

In order to do so however, that means that some hardware just
falls into a black hole of "we no longer officially support
this, sorry".  So, rather than wasting a lot more time on 3.3.6, 
what I personally think is MUCH more important, is that users who 
use 3.3.6, should test out 4.x, and at least take a serious shot 
at getting it to work for them.  The following options are 
available:

1) The 4.x native driver for your card (if there is one), check 
   the XFree86 status doc to see if it is listed as supported.

   http://www.xfree86.org/4.2.0/Status.html

2) Try using the "vesa" driver instead.  Hunt through 
   Xconfigurator's Card list, it is in there.  ;o)  Or just 
   change the driver to "vesa" in the config file.

3) Try using the framebuffer driver.  You'll need to read the 
   Framebuffer-HOWTO on http://www.linuxdoc.org

4) Try using the "vga" driver (yes, this sucks bigtime).

Keep also in mind, the older the hardware is, the much lower on 
the priority list it will be for me to personally look at it, 
since more problems get reported than one person can ever look 
at, I must prioritize things to look at the bugs affecting the 
largest number of people, or bugs which cause the most serious 
problems.  ISA video hardware, VESA localbus hardware basically 
are unsupported, and first generations of PCI hardware are low on 
the list also.

The absolute best thing that any user experiencing problems can 
do, is to report the problem directly to XFree86.org both via 
their bug submission address, as well as to join their mailing 
list and post the problem there (driver issues, etc.).

Bug reports to:  xfree86@xfree86.org
Mailing list: xpert@free86.org

This maximizes the number of people aware of the issue, as well 
as maximizes the chances of finding someone else with the same 
problem, and potentially finding a workaround, or a real 
solution.  Someone reading, may have the same hardware, and may 
be able to look into the problem and even perhaps create a driver 
fix, etc.  If someone can submit to me a driver fix to a problem 
which is reported that would end up getting extremely low 
priority, it can end up usually making it into my next build, and 
the problem becoming resolved.

If users who experience problems in XFree86 could do those steps, 
and open reports with a greater level of detail, as well as 
reporting it to the community, and providing updates to the bug 
report they've filed in bugzilla, and hopefully an actual patch 
or other solution, it can go a long way to helping us to help 
others.

I'd like to keep as much hardware supported as possible, but a
lot of problems - without having the hardware and/or
documentation, and being able to see/reproduce problems, and
justify the time being spent on a given issue, I feel a lot of 
problems fall through the cracks that could be fixed much more 
easily or stand a higher chance of being fixed if the same issue 
is reported to the community and/or the original driver authors.  
So please, always report driver issues both to us, and to 
xpert@xfree86.org, and follow up on the reports.  Don't settle 
for 3.3.6 if you can avoid it, but rather try to get 4.x working 
with the suggestions from above.  Update bug reports with things 
you've tried and the results they've given.

Another thing I'm planning on doing is writing an XFree86 
troubleshooting and debugging HOWTO.  A lot of display corruption 
problems, mouse pointer corruption can be solved with Option 
"swcursor" and/or "noaccel" or one of the many "XaaNo" options 
from the config file.  If I can get people experiencing these 
kind of problems to troubleshoot things on their side (due to me 
not having all hardware out there), it can help greatly to get 
the default configurations _working_ and as optimal as possible.

What does this have to do with the original S3 problem reported 
above?  ;o)

Well, if 3.3.6 was not necessary at all, then this problem 
wouldn't exist.  I could spend time fixing issues in 4.x instead 
of wasting time tracking down problems with 3.3.6 and 
Xconfigurator, etc. especially hard to fix problems due to not 
having any of the hardware the bugs are generally reported 
against.  If the issues with 4.x were reported to more people, 
and troubleshooted a bit more beforehand (not this particular 
issue, but others), then someone somewhere could stand higher 
probability of fixing it.  I've been thinking these things for 
quite a while now, and just now decided to vocalize my random 
brainwaves (or lack thereof).  ;o)

So, now that I've put forth the above commentary, I'd appreciate 
hearing back all of your opinions and ideas as well.  Perhaps I 
can even stimulate people with old hardware and a bit of 
programming experience to port the 3.3.6 driver code for their 
hardware to a 4.x driver.  ;o)

Anyway, enough boring chatter from me.. I'm going to go start 
writing that troubleshooting guide now.

/me disappears back into the cave.

-- 
Mike A. Harris                  Shipping/mailing address:
OS Systems Engineer             190 Pittsburgh Ave., Sault Ste. Marie,
XFree86 maintainer              Ontario, Canada, P6C 5B3
Red Hat Inc.
http://www.redhat.com           ftp://people.redhat.com/mharris





[Red Hat General]     [Red Hat Watch]     [Red Hat Development]     [Kernel Development]     [Yosemite Camping]

  Powered by Linux