VectorLinux
October 23, 2014, 10:40:21 pm *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: Visit our home page for VL info. To search the old message board go to http://vectorlinux.com/forum1. The first VL forum is temporarily offline until we can find a host for it. Thanks for your patience.
 
Now powered by KnowledgeDex.
   Home   Help Search Login Register  
Please support VectorLinux!
Pages: [1] 2
  Print  
Author Topic: Proprietary driver for Radeon 9200 in VL 5.9  (Read 5566 times)
GrannyGeek
Packager
Vectorian
****
Posts: 2567


« on: January 20, 2008, 02:46:13 pm »

I want to try the ATI proprietary driver for a Radeon 9200 in VL 5.9. I downloaded the 8.28.8 Driver Installer that the Web site offers for the Radeon 9200. When I tried to run it as root following the directions on the Web site, I got this message:
X server: Unable to detect
and it complains about not finding XFree86 and aborts the installation. I tried this with and without X running.

The Web site says "Automated installer and Display Drivers for XFree86 4.3 and X.Org 6.7, 6.8, 6.9, 7.0, 7.1." I think VL 5.9 is using Xorg 7.3; anyway, it's beyond 7.1.

Is there a way to get this installed? Should I just give up? I'm not a gamer and PPRacer runs pretty fast with the open source radeon driver that I've been using since I installed 5.9. I don't know what I'd gain, if anything, with the proprietary driver.

I didn't install the ATI package on the ISO because when I tried it in several betas and RCs, it didn't work with my card. I think it's for newer ATI cards.
--GrannyGeek
Logged

Registered Linux User #397786

Happily running VL 7 Gold on  a Sempron LE-1300 desktop (2.3 GHz), 4 G RAM,  GeForce 6150 SE onboard graphics and on an HP Pavilion dv7 i7, 6 gigs, Intel 2nd Generation Integrated Graphics Controller
uelsk8s
Administrator
Vectorian
*****
Posts: 2504



« Reply #1 on: January 20, 2008, 06:52:56 pm »

As you have figured out, there is no Proprietary driver that will work for your card with VL 5.9
There is a driver in the works for your card from the code released by AMD, but I wouldnt advise holding your breath waiting for it to be usable.

Uelsk8s
Logged
GrannyGeek
Packager
Vectorian
****
Posts: 2567


« Reply #2 on: January 20, 2008, 11:01:39 pm »

As you have figured out, there is no Proprietary driver that will work for your card with VL 5.9
There is a driver in the works for your card from the code released by AMD, but I wouldnt advise holding your breath waiting for it to be usable.

Well, now I know not to bother.

I was surprised at how fast PPRacer was running with the open source radeon driver. When I've tried it on earlier Vectors, it was slow and jerky. This time it makes me dizzy as my poor penguin slips off curves and bangs into trees. Smiley
--GrannyGeek
Logged

Registered Linux User #397786

Happily running VL 7 Gold on  a Sempron LE-1300 desktop (2.3 GHz), 4 G RAM,  GeForce 6150 SE onboard graphics and on an HP Pavilion dv7 i7, 6 gigs, Intel 2nd Generation Integrated Graphics Controller
Mihail121-tera
Member
*
Posts: 27


« Reply #3 on: January 24, 2008, 05:09:16 am »

Granny & All:

I'm currently preparing a detail Guide/FAQ on how to install the legacy ATI driver 8.28.8 (R9200, R9250, etc..) to work with the new kernel line specifically on VectorLinux. So far it compiles and installs perfectly and the only problem is that uppon startup, XOrg can't find the module. This is however not that complicated to solve I believe. So here are the basic steps to install it with VectorLinux:

1. Get the "fglrx_6_8_0-8.28.8-1.i386.rpm" packages from the ATI page. It's the last driver to support legacy cards, so you should find it under "Radeon 9250/9200/..."

2. Execute "rpm2tgz" on it.

3. Login as root and extract it using:

"gunzip fglrx_6_8_0-8.28.8-1.i386.tgz"
"tar -xvvf fglrx_6_8_0-8.28.8-1.i386.tar -C / "

4. So far so good, now you need to patch the module to compile with new kernels. Not an easy task, took me a week to write the patch. Here is it (Granny, provide with a mail address and I'll send you the file):

Code:
diff -uN ./build_mod.back/agp3.c ./build_mod/agp3.c
--- ./build_mod.back/agp3.c 2006-08-17 16:10:12.000000000 +0000
+++ ./build_mod/agp3.c 2007-10-18 23:19:38.000000000 +0000
@@ -55,13 +55,13 @@
 *
 */

+#include <linux/utsrelease.h>
 #include <linux/version.h>
 #ifdef MODVERSIONS
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,71)
 #include <linux/modversions.h>
 #endif
 #endif
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/pci.h>
 #include <linux/init.h>
diff -uN ./build_mod.back/agpgart_be.c ./build_mod/agpgart_be.c
--- ./build_mod.back/agpgart_be.c 2006-08-17 16:10:12.000000000 +0000
+++ ./build_mod/agpgart_be.c 2007-10-18 23:20:23.000000000 +0000
@@ -92,6 +92,7 @@
 #define EXPORT_SYMTAB
 #endif /* Original AGPGART module */

+#include <linux/utsrelease.h>
 #include <linux/version.h>
 #ifdef MODVERSIONS
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,71)
@@ -99,7 +100,6 @@
 #endif
 #endif

-#include <linux/config.h>


 #include <linux/module.h>
diff -uN ./build_mod.back/drm.h ./build_mod/drm.h
--- ./build_mod.back/drm.h 2006-08-17 16:10:12.000000000 +0000
+++ ./build_mod/drm.h 2007-10-18 23:18:17.000000000 +0000
@@ -38,7 +38,6 @@
 #define _DRM_H_

 #if defined(__linux__)
-#include <linux/config.h>
 #include <asm/ioctl.h> /* For _IO* macros */
 #define DRM_IOCTL_NR(n) _IOC_NR(n)
 #define DRM_IOC_VOID _IOC_NONE
diff -uN ./build_mod.back/drmP.h ./build_mod/drmP.h
--- ./build_mod.back/drmP.h 2006-08-17 16:10:13.000000000 +0000
+++ ./build_mod/drmP.h 2007-10-18 23:20:50.000000000 +0000
@@ -42,7 +42,6 @@
 * can build the DRM (part of PI DRI). 4/21/2000 S + B */
 #include <asm/current.h>
 #endif /* __alpha__ */
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/miscdevice.h>
@@ -51,6 +50,7 @@
 #include <linux/init.h>
 #include <linux/file.h>
 #include <linux/pci.h>
+#include <linux/utsrelease.h>
 #include <linux/version.h>
 #include <linux/sched.h>
 #include <linux/smp_lock.h> /* For (un)lock_kernel */
diff -uN ./build_mod.back/firegl_public.c ./build_mod/firegl_public.c
--- ./build_mod.back/firegl_public.c 2006-08-17 16:10:13.000000000 +0000
+++ ./build_mod/firegl_public.c 2007-10-18 23:21:18.000000000 +0000
@@ -22,6 +22,7 @@
 #endif /* !MODULE */

 // ============================================================
+#include <linux/utsrelease.h>
 #include <linux/version.h>
 #ifdef MODVERSIONS
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,71)
@@ -69,7 +70,6 @@
 #ifdef CONFIG_MEM_MIRROR
 /* Prevent linux/config.h from being included again in subsequent
  * kernel headers as that would redefine CONFIG_MEM_MIRROR. */
-#include <linux/config.h>
 #warning "Disabling CONFIG_MEM_MIRROR because it does not work with non-GPL modules."
 #warning "This will break page tracking when the fglrx kernel module is used."
 #undef CONFIG_MEM_MIRROR
@@ -86,7 +86,6 @@
 #include <asm/unistd.h> /* for installing the patch wrapper */
 #include <linux/module.h>

-#include <linux/config.h>
 #include <linux/kernel.h>
 #include <linux/fs.h>
 #include <linux/proc_fs.h>
@@ -176,6 +175,70 @@
 int errno;
 #endif // __ia64__

+#if defined(__i386__)
+#define __syscall_return(type, res) \
+do { \
+ if ((unsigned long)(res) >= (unsigned long)(-(128 + 1))) { \
+ errno = -(res); \
+ res = -1; \
+ } \
+ return (type) (res); \
+} while (0)
+#define _syscall2(type,name,type1,arg1,type2,arg2) \
+type name(type1 arg1,type2 arg2) \
+{ \
+long __res; \
+__asm__ volatile ("push %%ebx ; movl %2,%%ebx ; int $0x80 ; pop %%ebx" \
+ : "=a" (__res) \
+ : "0" (__NR_##name),"ri" ((long)(arg1)),"c" ((long)(arg2)) \
+ : "memory"); \
+__syscall_return(type,__res); \
+}
+
+#define _syscall3(type,name,type1,arg1,type2,arg2,type3,ar g3) \
+type name(type1 arg1,type2 arg2,type3 arg3) \
+{ \
+long __res; \
+__asm__ volatile ("push %%ebx ; movl %2,%%ebx ; int $0x80 ; pop %%ebx" \
+ : "=a" (__res) \
+ : "0" (__NR_##name),"ri" ((long)(arg1)),"c" ((long)(arg2)), \
+ "d" ((long)(arg3)) : "memory"); \
+__syscall_return(type,__res); \
+}
+#elif defined(__x86_64__)
+#define __syscall_clobber "r11","rcx","memory"
+#define __syscall "syscall"
+
+#define __syscall_return(type, res) \
+do { \
+ if ((unsigned long)(res) >= (unsigned long)(-127)) { \
+ errno = -(res); \
+ res = -1; \
+ } \
+ return (type) (res); \
+} while (0)
+#define _syscall2(type,name,type1,arg1,type2,arg2) \
+type name(type1 arg1,type2 arg2) \
+{ \
+long __res; \
+__asm__ volatile (__syscall \
+ : "=a" (__res) \
+ : "0" (__NR_##name),"D" ((long)(arg1)),"S" ((long)(arg2)) : __syscall_clobber ); \
+__syscall_return(type,__res); \
+}
+
+#define _syscall3(type,name,type1,arg1,type2,arg2,type3,ar g3) \
+type name(type1 arg1,type2 arg2,type3 arg3) \
+{ \
+long __res; \
+__asm__ volatile (__syscall \
+ : "=a" (__res) \
+ : "0" (__NR_##name),"D" ((long)(arg1)),"S" ((long)(arg2)), \
+ "d" ((long)(arg3)) : __syscall_clobber); \
+__syscall_return(type,__res); \
+}
+#endif
+
 // int mlock(const void *addr, size_t len);
 _syscall2(int, mlock, const void *, addr, size_t, len )
 // int munlock(const void *addr, size_t len);
@@ -1585,7 +1648,7 @@
 // To enable serial port debug message dumping,just define _KE_SERIAL_DEBUG in firegl_public.h file.
 // Connect two PC with a null modern serial cable. run Hyper ternimal on the remote machine.
 // It's useful to debug resume if network not works properly and serial port is not recovered
-// properly when fglrx resume hook is called...
+// properly when fglrx resume hook is called...


 #define SER_DATA_PORT 0x3f8
diff -uN ./build_mod.back/i7505-agp.c ./build_mod/i7505-agp.c
--- ./build_mod.back/i7505-agp.c 2006-08-17 16:10:12.000000000 +0000
+++ ./build_mod/i7505-agp.c 2007-10-18 23:21:35.000000000 +0000
@@ -28,6 +28,7 @@
 * - Allocate more than order 0 pages to avoid too much linear map splitting.
 */

+#include <linux/utsrelease.h>
 #include <linux/version.h>
 #ifdef MODVERSIONS
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,71)
diff -uN ./build_mod.back/make.sh ./build_mod/make.sh
--- ./build_mod.back/make.sh 2006-08-17 16:10:12.000000000 +0000
+++ ./build_mod/make.sh 2007-10-18 23:18:17.000000000 +0000
@@ -203,9 +203,9 @@
 # ================================================== ============
 # locate and verify contents of kernel include file path

-# verify match with respective line in linux/version.h
+# verify match with respective line in linux/utsrelease.h
 # sample: #define UTS_RELEASE "2.4.0-test7"
-src_file=$linuxincludes/linux/version.h
+src_file=$linuxincludes/linux/utsrelease.h
 if [ ! -e $src_file ];
 then
 echo "kernel includes at $linuxincludes not found or incomplete" | tee -a $logfile
diff -uN ./build_mod.back/nvidia-agp.c ./build_mod/nvidia-agp.c
--- ./build_mod.back/nvidia-agp.c 2006-08-17 16:10:12.000000000 +0000
+++ ./build_mod/nvidia-agp.c 2007-10-18 23:21:54.000000000 +0000
@@ -5,6 +5,7 @@
 * generci back port to 2.4 and module embedding by Alexander Stohr.
 */

+#include <linux/utsrelease.h>
 #include <linux/version.h>
 #ifdef MODVERSIONS
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,71)

Save this file as "fglrx.patch" in the "/lib/modules/build_mod/"

Change to that directory as root and apply the patch with:

"patch -p2 -l -b -i fglrx.patch"

5. Modify the file "mm.h" in "/usr/src/linux-`uname -r`/include/linux" by adding the following line:

#define VM_SHM 0x00000000

Do not be worried, as this means nothing.

6. Execute

"chmod 744 make.sh"
"chmod 744 ../install.sh"

to make the scripts executable.

7. Execute

"./make.sh" to compile module
"../install.sh" to install module

8. We are done. Execute "aticonfig --initial" and reboot. Say Hello to your ATI drivers!!!! Try "modprobe fglrx" to convince yourself Wink

One issue remains unresolved. startx reports "Failed to load module 'fglrx' (module does not exist, 0)". That error is pretty illogical since modprobe loads the driver propertly. 'depmod -a' also didn't help. I'm however certain that it's just a minor issue and will be solved quickly with the help of you, Vectorians!!!
« Last Edit: January 24, 2008, 06:23:16 am by Mihail121 » Logged
uelsk8s
Administrator
Vectorian
*****
Posts: 2504



« Reply #4 on: January 24, 2008, 06:41:24 am »

Mihail121,
there is the kernel module, and the xorg module.
either you didnt build the xorg module or it is not being placed in the right dir.
you need a fglrx_drv.so and fglrx_drv.la and they need to go into /usr/lib/xorg/modules/drivers/

HTH, and thanks for the work your putting into this

Uelsk8s
Logged
Mihail121-tera
Member
*
Posts: 27


« Reply #5 on: January 24, 2008, 06:58:07 am »

I know Smiley I found an fglrx_drv.o file in that directory and I have to generate a library from it. Any hints will be usefull!

Edit:

Ok, any help or advice on how to get the XOrg module running will be rewarded with beer!!!!
« Last Edit: January 24, 2008, 07:53:22 am by Mihail121 » Logged
Mihail121-tera
Member
*
Posts: 27


« Reply #6 on: January 24, 2008, 06:27:54 pm »

Ok, nobody gets rewarded, as I found what's missing, but I'll have to recompile the Xorg CVS tomorrow to get some specific object files that need to be linked in the driver. Stay tuned!
Logged
Mihail121-tera
Member
*
Posts: 27


« Reply #7 on: January 25, 2008, 10:45:43 am »

Ok it did it!!! ... almost. After tweaking and relinking and compiling Xorg modules I found a very easy way to do it, startx -- -ignoreABI catches a signal in xf86ProcessOptions, which is beyond my reach. I'm happy though cause it means I've did everything correctly and the problem is not on my side anymore. The changes in Xorg 7.2 and 7.3 are apparently huge. However I'm more than certain that the driver will work with VL 5.8 or even with VL 5.9 if older xorg is installed. Will test it on VL 5.8 sometimes soon. If anyone wants to support me in this, I'll be glad. Getting the drivers to work is a real challenge!!!
Logged
nightflier
Administrator
Vectorian
*****
Posts: 4026



« Reply #8 on: January 25, 2008, 11:31:42 am »

Good work. Sounds to me like you are the one who deserves a beer!  Grin
Logged
Mihail121-tera
Member
*
Posts: 27


« Reply #9 on: January 26, 2008, 04:28:51 am »

Reporting that the driver works just fine with the installer from ATI on VL 5.8. You'll have to manually compile and install the kernel module as shown above though. Perhaps installing an older version of X11 on VL5.9 would get it going too. Any chances of releasing a package X11.tlz with Xorg 7.1 ?
Logged
uelsk8s
Administrator
Vectorian
*****
Posts: 2504



« Reply #10 on: January 26, 2008, 07:33:40 am »

try downloading and upgrading these packages and let us know if it will work then

http://slackware.osuosl.org/slackware-12.0/slackware/x/xorg-server-1.3.0.0-i486-2.tgz http://slackware.osuosl.org/slackware-12.0/slackware/x/xf86-input-keyboard-1.2.0-i486-1.tgz http://slackware.osuosl.org/slackware-12.0/slackware/x/xf86-input-mouse-1.2.1-i486-1.tgz
Logged
Mihail121-tera
Member
*
Posts: 27


« Reply #11 on: January 26, 2008, 08:49:15 am »

uelsk8s:

After starx -- -ignoreABI I get a version mismatch telling:

Xorg 1.3.0.0 found, 7.1.0.0 required. Advice?
Logged
uelsk8s
Administrator
Vectorian
*****
Posts: 2504



« Reply #12 on: January 26, 2008, 09:11:21 am »

I have no idea Mihail121
Sorry, I wish i could help more
Logged
GrannyGeek
Packager
Vectorian
****
Posts: 2567


« Reply #13 on: January 26, 2008, 07:20:32 pm »

This sounds pretty scary to me.<g> When everything is working for 5.9, I'll consider giving it a try.

Within a couple of weeks I'm going to switch the 80-gig hard drive on which I have three versions of VL installed with a 200-gig drive that's currently in a USB case. I'm going to redo the other Linuxes and will replace one of them with a second installation of 5.9 Standard. I can then use it as a test bed for things like this without the fear of messing up my working 5.9 Standard Deluxe partition.

My question is what would the proprietary ATI driver gain me over the open-source radeon driver I'm using now? I get about 1500 fps in glxgears. I'm not a gamer, but I did try out PPRacer and it ran smoothly and fast. Unless the proprietary driver would offer me advantages I'd like, I may just stay with the open-source radeon driver.
--GrannyGeek
Logged

Registered Linux User #397786

Happily running VL 7 Gold on  a Sempron LE-1300 desktop (2.3 GHz), 4 G RAM,  GeForce 6150 SE onboard graphics and on an HP Pavilion dv7 i7, 6 gigs, Intel 2nd Generation Integrated Graphics Controller
Mihail121-tera
Member
*
Posts: 27


« Reply #14 on: January 27, 2008, 06:26:52 am »

I'm compiling and installing Xorg 7.0 sometime soon, I'm sure the driver will work on this version. There's something fishy about the Xorg's shipping with Slackware, like the strange versioning.

Grannygeek:

You'll get the basic idea if you run it on a slower computer. ATI driver is pretty much faster than the open source, since it makes full use of the hardware interfaces and features, which only ATI fully knows. If you're getting 1500 frames with Xorg's driver, you should get the double or tripple with ATI. There is also the psychological state of having won the battle against the ATI driver, which bundled with 'startx' are the two worst programs in computer history Cheesy
Logged
Pages: [1] 2
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!