Dear list,

This is a small hobby project of mine so it's no big deal if it can't be 
resolved but I don't mind digging a little deeper into it myself if I can only 
get a few pointers.

I've been a Gentoo Linux user for 15+ years so I'm fairly confident in 
compiling things in various ways but I'm no C programmer and definitely don't 
have the deep technical knowledge needed to create device drivers.

With that said, I needed a challenge and went on to install Gentoo on the 
oldest machine still in my possession - a 22 year old laptop with a 32-bit 
Pentium III Celeron. It's quite restricted hardware wise (maxed out RAM is 
196MB) but I got it running. I even made Xorg run with the generic fbdev driver 
but was hoping to unlock at least some 2D acceleration.

The video card is an ATI Rage Mobility AGP 2x Series (1002:4c4d) and after some 
digging I understood that this was a mach64 card. Driver is included and 
activated in my kernel (atyfb, Linux 6.1.19) but I also needed 
xf86-video-mach64 for Xorg. Unfortunately that driver seems to have been ripped 
out of the main tree around 2010 or so but apparently it's still maintained and 
version 6.9.7 was released last year.

I downloaded it from 
https://gitlab.freedesktop.org/xorg/driver/xf86-video-mach64.git, compiled and 
installed it but X segfaults with a signal 11 when I try to use it. I've 
compiled it with debug symbols so I can get a proper backtrace but after that 
I'm stuck. I don't know what the driver is doing or what it's supposed to do at 
this point.

Here's some info from the debugger:

Program received signal SIGSEGV, Segmentation fault.
ATIMach64Detect (Chip=77, ChipType=19533, pATI=0x1c74110) at atiprobe.c:143
143         bus_cntl = inr(BUS_CNTL);
(gdb) bt
#0  ATIMach64Detect (Chip=77, ChipType=19533, pATI=0x1c74110) at atiprobe.c:143
#1  ATIMach64Probe (Chip=77, pVideo=0x1c7dbe0, pATI=0x1c74110) at atiprobe.c:278
#2  ATIMach64ProbeIO (pVideo=0x1c7dbe0, pATI=0x1c74110) at atiprobe.c:454
#3  0xb75639c7 in ATIPreInit (pScreenInfo=0x1c83940, flags=0) at 
atipreinit.c:644
#4  0x00607ab7 in InitOutput (pScreenInfo=pScreenInfo@entry=0x707300 
<screenInfo>, argc=argc@entry=1, argv=argv@entry=0xbfa90e44) at 
../xorg-server-21.1.8/hw/xfree86/common/xf86Init.c:478
#5  0x004fd765 in dix_main (argc=<optimized out>, argc@entry=1, argv=<optimized out>, 
argv@entry=0xbfa90e44, envp=<optimized out>, envp@entry=0xbfa90e4c) at 
../xorg-server-21.1.8/dix/main.c:190
#6  0x004ba84e in main (argc=1, argv=0xbfa90e44, envp=0xbfa90e4c) at 
../xorg-server-21.1.8/dix/stubmain.c:34
(gdb) list
138         }
139     
140     #endif /* AVOID_CPIO */
141     
142         /* Make sure any Mach64 is not in some weird state */
143         bus_cntl = inr(BUS_CNTL);
144         if (Chip < ATI_CHIP_264VTB)
145             outr(BUS_CNTL,
146                  (bus_cntl & ~(BUS_HOST_ERR_INT_EN | BUS_FIFO_ERR_INT_EN)) |
147                  (BUS_HOST_ERR_INT | BUS_FIFO_ERR_INT));

Can anything be deduced from this? What other information is of interest? Any 
suggestions are welcome.

Regards
Morgan Wesström

Reply via email to