# ati-drivers 8.8.25 + love-sources 2.6.10-rc3-love1 borked

## H3g3m0n

When I try to insert the module I get the following errors:

```
ender hd # modprobe fglrx        

FATAL: Error inserting fglrx (/lib/modules/2.6.10-rc3-love1/video/fglrx.ko): Unknown symbol in module, or unknown parameter (see dmesg)

ender hd #
```

dmesg:

```
fglrx: Unknown symbol pgd_offset_is_obsolete

fglrx: Unknown symbol remap_page_range
```

```
ender hd # insmod /lib/modules/2.6.10-rc3-love1/video/fglrx.ko 

insmod: error inserting '/lib/modules/2.6.10-rc3-love1/video/fglrx.ko': -1 Unknown symbol in module
```

Anyone know whats wrong?

----------

## H3g3m0n

I found the following patch for the remap_page_range, but im still getting pgd_offset_is_obsolete.

Heres the patch for anyone that needs it.

```
--- firegl_public.orig   2005-01-18 22:13:16.000000000 +0000

+++ firegl_public.c   2005-01-18 22:06:54.000000000 +0000

@@ -2591,13 +2591,13 @@

 #endif /* __ia64__ */

                 vma->vm_flags |= VM_IO; /* not in core dump */

             }

-            if (remap_page_range(FGL_VMA_API_PASS

+            if (remap_pfn_range(FGL_VMA_API_PASS

                                  vma->vm_start,

-                                 __ke_vm_offset(vma),

+                                 __ke_vm_offset(vma) >> PAGE_SHIFT,

                                  vma->vm_end - vma->vm_start,

                                  vma->vm_page_prot))

             {

-                __KE_DEBUG("remap_page_range failed\n");

+                __KE_DEBUG("remap_pfn_range failed\n");

                 return -EAGAIN;

             }

             vma->vm_flags |= VM_SHM | VM_RESERVED; /* Don't swap */

@@ -2658,13 +2658,13 @@

          {

             if (__ke_vm_offset(vma) >= __pa(high_memory))

                vma->vm_flags |= VM_IO; /* not in core dump */

-            if (remap_page_range(FGL_VMA_API_PASS

+            if (remap_pfn_range(FGL_VMA_API_PASS

                             vma->vm_start,

-                            __ke_vm_offset(vma),

+                            __ke_vm_offset(vma) >> PAGE_SHIFT,

                             vma->vm_end - vma->vm_start,

                             vma->vm_page_prot))

             {

-               __KE_DEBUG("remap_page_range failed\n");

+               __KE_DEBUG("remap_pfn_range failed\n");

                return -EAGAIN;

             }

 #ifdef __x86_64__

@@ -2695,13 +2695,13 @@

          {

             if (__ke_vm_offset(vma) >= __pa(high_memory))

                vma->vm_flags |= VM_IO; /* not in core dump */

-            if (remap_page_range(FGL_VMA_API_PASS

+            if (remap_pfn_range(FGL_VMA_API_PASS

                             vma->vm_start,

-                            __ke_vm_offset(vma),

+                            __ke_vm_offset(vma) >> PAGE_SHIFT,

                             vma->vm_end - vma->vm_start,

                             vma->vm_page_prot))

             {

-               __KE_DEBUG("remap_page_range failed\n");

+               __KE_DEBUG("remap_pfn_range failed\n");

                return -EAGAIN;

             }

 #ifdef __x86_64__
```

Anyone got one for the pgd_offset_is_obsolete error?

----------

## MrApples

im not certain it addresses the same issues, but there is a patch for ati users in the love thread

----------

## H3g3m0n

I managed to get it working by making my own patch after I saw a similar problem with vmware here: http://00f.net/blogs/index.php/2004/11/30/warning_pgd_offset_is_obsolete_tmp_vmwar

```
--- firegl_public.c.back   2005-01-19 14:37:50.000000000 +0000

+++ firegl_public.c   2005-01-19 14:42:03.000000000 +0000

@@ -1575,7 +1575,7 @@

     pte_t  pte;

 

     pte_linear = VMALLOC_VMADDR(virtual_addr);  // convert to pte linear address (x86 => nop)

-    pgd_p = pgd_offset(mm, pte_linear);

+    pgd_p = pml4_pgd_offset(pml4_offset(mm, pte_linear), pte_linear);

     pmd_p = pmd_offset(pgd_p, pte_linear);

 #ifndef FGL_ATOMIC_PTE

 #if LINUX_VERSION_CODE > 0x020500

@@ -2062,7 +2062,7 @@

    */

    pgd_p = pgd_offset_k(pte_linear);

 #else

-    pgd_p = pgd_offset(&init_mm, pte_linear); /* locate page directory entry */

+    pgd_p = pml4_pgd_offset(pml4_offset(&init_mm, pte_linear), pte_linear); /* locate page directory entry */

 #endif

     if (!pgd_present(*pgd_p))

     {

@@ -2441,7 +2441,7 @@

     pte_t  pte;

 

     pte_linear = VMALLOC_VMADDR(virtual_addr);  // convert to pte linear address (x86 => nop)

-    pgd_p = pgd_offset(vma->vm_mm, pte_linear);

+    pgd_p = pml4_pgd_offset(pml4_offset(vma->vm_mm, pte_linear), pte_linear);

     pmd_p = pmd_offset(pgd_p, pte_linear);

 #ifndef FGL_ATOMIC_PTE

 #if LINUX_VERSION_CODE > 0x020500
```

I'll check out the love thread and see what they had.

----------

## Tony420

how do you install these patchs???????????

----------

## Tony420

 *H3g3m0n wrote:*   

> I found the following patch for the remap_page_range, but im still getting pgd_offset_is_obsolete.
> 
> Heres the patch for anyone that needs it.
> 
> ```
> ...

 

dont work for me  :Sad: 

----------

