OK. Here is how I got my ATI Radeon X1950 to work under Fedora 8 on an AMD x86_64 system.
It's not trivial, but not super difficult either. This worked with kernel 2.6.23.1-42.fc8
There are really two problems - This should fix both of them.
1. Download the driver from
http://ati.amd.com/support/drivers/l...64-radeon.html
2. It will most likely put this in your /home/username/Desktop directory. (where username is the name you used to login). So cd /home/username/Desktop
3. chmod 744 ati-driver-installer-8.42.3-x86.x86_64.run
4. Go ahead and try to install it. ./ati-driver-installer-8.42.3-x86.x86_64.run
If you are running Gnome or KDE it will look like it worked, you won't see any errors. But it really didn't work.
It will fail and you will get all kinds of errors. But thats OK - it made a directory for us that we will need later.
If you really want to see the errors - try this.. ./ati-driver-installer-8.42.3-x86.x86_64.run --buildpkg Fedora/F8
6. ./ati-driver-installer-8.42.3-x86.x86_64.run --extract fglrx_8_42
This will create a directory called fglrx_8_42
7. download this as a text file and name it ati-fix-tmp.
http://docs.google.com/View?docid=ddbph2tz_16hfmq4q
8. mv fglrx_8_42/packages/Fedora/ati-packager.sh fglrx_8_42/packages/Fedora/ati-packager.sh.orig
This backs up the original file to a new name.
9. cp ati-fix-tmp fglrx_8_42/packages/Fedora/ati-packager.sh
This replaces the original file, with the file you just made.
10. chmod 755 fglrx_8_42/packages/Fedora/ati-packager.sh
This makes the file executable so the script will run.
11. cd fglrx_8_42
12. ./ati-installer.sh
8.42.3 --buildpkg Fedora/F8
# NOTE: you must put in the "8.42.3" above.
13. This will still fail, but we fixed the first problem, which was creating the /tmp directory with the wrong name.
For the second problem - this is from
http://wiki.cchtml.com/index.php/Fed...allation_Guide
14. cd /lib/modules/fglrx/build_mod/
15, cp firegl_public.c firegl_public.c.orig
16. with your favorite text editor create this file. Name it firegl.patch (I know it says 2.6.22, but it
works with 2.6.23 also)
## ========= Copy and paste =============
8.43.3 for 2.6.23 compatibility
--- firegl_public.c.orig 2007-10-23 19:31:26.000000000 +0200
+++ firegl_public.c 2007-10-23 19:32:07.000000000 +0200
@@ -217,6 +217,56 @@
#define preempt_enable()
#endif
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,22)
+#if defined(__i386__)
+#define ptep_test_and_clear_dirty(vma, addr, ptep) ({ \
+ int __ret = 0; \
+ if (pte_dirty(*(ptep))) \
+ __ret = test_and_clear_bit(_PAGE_BIT_DIRTY, \
+ &(ptep)->pte_low); \
+ if (__ret) \
+ pte_update((vma)->vm_mm, addr, ptep); \
+ __ret; \
+})
+
+static inline int pte_read(pte_t pte) { return (pte).pte_low & _PAGE_USER; }
+static inline int pte_user(pte_t pte) { return (pte).pte_low & _PAGE_USER; }
+#ifdef CONFIG_X86_PAE
+/*
+ * Is the pte executable?
+ */
+static inline int pte_x(pte_t pte)
+{
+ return !(pte_val(pte) & _PAGE_NX);
+}
+
+/*
+ * All present user-pages with !NX bit are user-executable:
+ */
+static inline int pte_exec(pte_t pte)
+{
+ return pte_user(pte) && pte_x(pte);
+}
+#else
+static inline int pte_exec(pte_t pte)
+{
+ return pte_user(pte);
+}
+#endif /* PAE */
+
+#elif defined(__x86_64__)
+static inline int ptep_test_and_clear_dirty(struct vm_area_struct *vma,
+ unsigned long addr, pte_t *ptep)
+{
+ if (!pte_dirty(*ptep))
+ return 0;
+ return test_and_clear_bit(_PAGE_BIT_DIRTY, &ptep->pte);
+}
+static inline int pte_read(pte_t pte) { return pte_val(pte) & _PAGE_USER; }
+static inline int pte_exec(pte_t pte) { return !(pte_val(pte) & _PAGE_NX); }
+#endif
+#endif
+
// ================================================== ==========
/* globals */
@@ -2489,7 +2539,7 @@ void ATI_API_CALL __ke_put_vm_page_table
#ifndef ptep_clear_flush_dirty
#define ptep_clear_flush_dirty(__vma, __address, __ptep) \
({ \
- int __dirty = ptep_test_and_clear_dirty(__ptep); \
+ int __dirty = ptep_test_and_clear_dirty(__vma, __address, __ptep); \
if (__dirty) \
flush_tlb_page(__vma, __address); \
__dirty; \
@@ -2936,7 +2986,7 @@ int ATI_API_CALL __ke_request_irq(unsign
{
return request_irq(irq,
(void(*)(int, void *, struct pt_regs *))handler,
- SA_SHIRQ, dev_name, dev_id);
+ IRQF_SHARED, dev_name, dev_id);
}
void ATI_API_CALL __ke_free_irq(unsigned int irq, void *dev_id)
@@ -2959,7 +3009,7 @@ int ATI_API_CALL __ke_request_irq(unsign
irq_handler_func = handler;
return request_irq(irq,
ke_irq_handler_wrap,
- SA_SHIRQ, dev_name, dev_id);
+ IRQF_SHARED, dev_name, dev_id);
}
void ATI_API_CALL __ke_free_irq(unsigned int irq, void *dev_id)
@@ -5436,7 +5486,7 @@ unsigned int ATI_API_CALL KAS_Spinlock_R
/** \brief Type definition of the structure describing Slab Cache object */
typedef struct tag_kasSlabCache_t
{
- kmem_cache_t* cache; /* OS slab cache object */
+ struct kmem_cache *cache; /* OS slab cache object */
spinlock_t lock; /* OS spinlock object protecting the cache */
unsigned int routine_type; /* Type of routine the cache might be accessed from */
char name[14]; /* Cache object name (kernel 2.4 restricts its length to 19 chars) */
@@ -5482,7 +5532,7 @@ unsigned int ATI_API_CALL KAS_SlabCache_
DBG_TRACE("creating slab object '%s'", slabcache_obj->name);
if ((slabcache_obj->cache =
- kmem_cache_create(slabcache_obj->name, iEntrySize, 0, 0, NULL, NULL)))
+ kmem_cache_create(slabcache_obj->name, iEntrySize, 0, 0, NULL)))
{
ret = 1;
}
## =========== End - copy and paste ============
17. patch -p0 < firegl.patch
18. ./make.sh
You may see some warnings - but it will compile.
19 . cd ..
20. ./make_install.sh
You may see some warnings - but it will compile.
21. aticonfig --initial -f
22. modprobe fglrx
23. ldconfig
24. Use cntrl-alt-backspace (hold down all 3 at the same time) to restart your Xwindows server.
25. Log back in. Open a command line terminal.
26. su - (it will ask for the root password)
27. glxinfo | grep direct
you should see... direct rendering: Yes
* This is optional - but perhaps helpful.
28. cd /etc/X11
29. Use your favorite text editor to edit xorg.conf
at the very bottom add this...
Section "DRI"
Mode 0666
EndSection
Section "Extensions"
Option "Composite" "Enable"
EndSection
30. You may also want to edit the "device" section like this.
Section "Device"
Identifier "aticonfig-Device[0]" # this line is already there
Driver "fglrx" # this line is already there
Option "UseFastTLS" "0" #add this line
Option "BlockSignalsOnLock" "on" #add this line
Option "ForceGenericCPU" "off" #add this line
Option "KernelModuleParm" "locked-userpages=0" #add this line
BusID "PCI:7:0:0" # This line is useful for PCIe (PCI Express) cards ONLY!!
EndSection
31. from the command line as root try the following commands.
glxgears - after a few minutes you can close the window
fgl_glxgears - after a few minutes you can close the window
32. At this point if everything works, I would reboot the computer. Congradulations!!!