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: