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

Re: 2.6.11 and fglrx 8.10.19 (patch included)



Hi @all,

out of curiosity I prepared a patch for fglrx-8.10.19 to compile against kernel 2.6.11:

$ uname -a
Linux camelot 2.6.11 #4 Fri Mar 4 19:33:03 CET 2005 i686 GNU/Linux
$ grep -i fglrx /var/log/messages
Mar  6 17:32:32 camelot kernel: [fglrx] module loaded - fglrx 8.10.19 [Feb  9 2005] on minor 0
Mar  6 17:45:47 camelot kernel: [fglrx] AGP detected, AgpState   = 0x1f000217 (hardware caps of chipset)
Mar  6 17:45:47 camelot kernel: [fglrx] AGP enabled,  AgpCommand = 0x1f000314 (selected caps)
Mar  6 17:45:47 camelot kernel: [fglrx] free  AGP = 121909248
Mar  6 17:45:47 camelot kernel: [fglrx] max   AGP = 121909248
Mar  6 17:45:47 camelot kernel: [fglrx] free  LFB = 111144960
Mar  6 17:45:47 camelot kernel: [fglrx] max   LFB = 111144960
Mar  6 17:45:47 camelot kernel: [fglrx] free  Inv = 0
Mar  6 17:45:47 camelot kernel: [fglrx] max   Inv = 0
Mar  6 17:45:47 camelot kernel: [fglrx] total Inv = 0
Mar  6 17:45:47 camelot kernel: [fglrx] total TIM = 0
Mar  6 17:45:47 camelot kernel: [fglrx] total FB  = 0
Mar  6 17:45:47 camelot kernel: [fglrx] total AGP = 32768

I used hints and older patches from this link:
http://web38.austria182.server4free.de/forum2/viewforum.php?f=5

It compiles with some warnings and runs at least on ia32. Cannot test on AMD64 since
my MSI K8T Neo2 does not like my Sapphire Radeon 9600 TX (does not POST).

good luck,
Mike

Does anybody try to install the ati drivers fglrx 8.10.19 with the latest stable 2.6.11 Kernel.

I'm currently using the a 2.6.10 kernel with the fglrx-installer 8.10.19-1 from flavio's pages. And it work great. Thanks flavio.

But the fglrx modules refuse to compile with a 2.6.11 kernel !

Ludovic

Don't worry , be happy.



--- firegl_public.c.orig	2005-03-06 17:50:52.000000000 +0100
+++ firegl_public.c	2005-03-04 23:45:37.000000000 +0100
@@ -217,7 +217,11 @@
 /* global module vars and constants - defined trough macros */
 MODULE_AUTHOR("Fire GL - ATI Research GmbH, Germany");
 MODULE_DESCRIPTION("ATI Fire GL");
+#if LINUX_VERSION_CODE <= 0x020600
 MODULE_PARM(firegl, "s");
+#else
+module_param(firegl, charp, 0);
+#endif
 #ifdef MODULE_LICENSE
 MODULE_LICENSE("Proprietary. (C) 2002 - ATI Technologies, Starnberg, GERMANY");
 #endif
@@ -2424,7 +2428,7 @@
 
 static vm_nopage_ret_t vm_pcie_nopage(struct vm_area_struct* vma,
                                      unsigned long address,
-                                     int write_access)
+                                     int *type)
 {  
        return do_vm_pcie_nopage(vma, address);
 }
@@ -2703,8 +2707,12 @@
 			struct page 	*page = virt_to_page((unsigned long)__va(VM_OFFSET(vma)));
 			if (!VALID_PAGE(page) || PageReserved(page))
 #else
+#if LINUX_VERSION_CODE >= 0x02060b
+            if (vma->vm_pgoff >= __pa(high_memory))
+#else
             if (__ke_vm_offset(vma) >= __pa(high_memory))
 #endif
+#endif
             {
 #ifdef __i386__
                 if (boot_cpu_data.x86 > 3)
@@ -2719,13 +2727,23 @@
 #endif /* __ia64__ */
                 vma->vm_flags |= VM_IO; /* not in core dump */
             }
+#if LINUX_VERSION_CODE >= 0x02060b
+            if (remap_pfn_range(FGL_VMA_API_PASS
+                                 vma->vm_start,
+                                 vma->vm_pgoff,
+#else
             if (remap_page_range(FGL_VMA_API_PASS
                                  vma->vm_start,
                                  __ke_vm_offset(vma),
+#endif
                                  vma->vm_end - vma->vm_start,
                                  vma->vm_page_prot))
             {
+#if LINUX_VERSION_CODE >= 0x02060b
+                __KE_DEBUG("remap_pfn_range failed\n");
+#else
                 __KE_DEBUG("remap_page_range failed\n");
+#endif
                 return -EAGAIN;
             }
             vma->vm_flags |= VM_SHM | VM_RESERVED; /* Don't swap */
@@ -2786,9 +2804,15 @@
 			{
 				if (__ke_vm_offset(vma) >= __pa(high_memory))
 					vma->vm_flags |= VM_IO; /* not in core dump */
+#if LINUX_VERSION_CODE >= 0x02060b
+                                if (remap_pfn_range(FGL_VMA_API_PASS
+                                        vma->vm_start,
+                                        vma->vm_pgoff,
+#else
 				if (remap_page_range(FGL_VMA_API_PASS
 									 vma->vm_start,
 									 __ke_vm_offset(vma),
+#endif
 									 vma->vm_end - vma->vm_start,
 									 vma->vm_page_prot))
 				{
@@ -2823,9 +2847,15 @@
 			{
 				if (__ke_vm_offset(vma) >= __pa(high_memory))
 					vma->vm_flags |= VM_IO; /* not in core dump */
+#if LINUX_VERSION_CODE >= 0x02060b
+                                if (remap_pfn_range(FGL_VMA_API_PASS
+                                         vma->vm_start,
+                                         vma->vm_pgoff,
+#else
 				if (remap_page_range(FGL_VMA_API_PASS
 									 vma->vm_start,
 									 __ke_vm_offset(vma),
+#endif
 									 vma->vm_end - vma->vm_start,
 									 vma->vm_page_prot))
 				{
@@ -2873,6 +2903,37 @@
 
 #if LINUX_VERSION_CODE >= 0x020400
 
+#if LINUX_VERSION_CODE >= 0x02060b
+
+typedef struct {
+   void         (*free_memory)(struct agp_memory *);
+   struct agp_memory *   (*allocate_memory)(size_t, u32);
+   int         (*bind_memory)(struct agp_memory *, off_t);
+   int         (*unbind_memory)(struct agp_memory *);
+   void         (*enable)(u32);
+   int         (*acquire)(void);
+   void         (*release)(void);
+   int         (*copy_info)(struct agp_kern_info *);
+} drm_agp_t;
+
+static const drm_agp_t drm_agp = {
+   &agp_free_memory,
+   &agp_allocate_memory,
+   &agp_bind_memory,
+   &agp_unbind_memory,
+   &agp_enable,
+   &agp_backend_acquire,
+   &agp_backend_release,
+   &agp_copy_info
+};
+#undef DRM_AGP_MODULE_GET
+#undef DRM_AGP_MODULE_PUT
+
+#define DRM_AGP_MODULE_GET      &drm_agp
+#define DRM_AGP_MODULE_PUT
+
+#endif
+
 static const drm_agp_t  *drm_agp_module_stub = NULL;
 
 #define AGP_FUNCTIONS		8

Reply to: