Announcement

Collapse
No announcement yet.

Will 8.42 support kernel 2.6.23?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #11
    ug, so no F8 support than. (assuming it doesn't support i686 2.6.23)

    Comment


    • #12
      Originally posted by yoshi314 View Post
      8.40 - 2.6.23 patch. didn't test it (i dn't use fglrx anymore)

      Code:
      diff -Naur common/lib/modules/fglrx/build_mod/firegl_public.c common/lib/modules/fglrx/build_mod/firegl_public.c
      --- common/lib/modules/fglrx/build_mod/firegl_public.c  2007-07-29 13:36:37.000000000 +0200
      +++ common/lib/modules/fglrx/build_mod/firegl_public.c  2007-07-29 14:24:11.000000000 +0200
      @@ -2409,7 +2409,11 @@
       #ifdef pte_offset_map
           pte_p = pte_offset_map(pmd_p, virtual_addr);
           if (pte_present(*pte_p))
      +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22)
               ret = (ptep_clear_flush_dirty(vma, virtual_addr, pte_p) ? 1 : 0);
      +#else
      +    return 0;
      +#endif
           else
               __KE_DEBUG("page not exists!\n");
           pte_unmap(pte_p); 
      @@ -3399,9 +3403,11 @@
               sprintf(buf, "0x%Lx %c%c%c%c%c%c\n",
                  *phys_address,
                  pte_present (pte) ? 'p' : '-',
      +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
                  pte_read    (pte) ? 'r' : '-',
      -           pte_write   (pte) ? 'w' : '-',
                  pte_exec    (pte) ? 'x' : '-',
      +#endif
      +           pte_write   (pte) ? 'w' : '-',
                  pte_dirty   (pte) ? 'd' : '-',
                  pte_young   (pte) ? 'a' : '-');
           }
      @@ -5348,7 +5354,11 @@
           DBG_TRACE("creating slab object '%s'", slabcache_obj->name);
       
           if ((slabcache_obj->cache =
      +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
                   kmem_cache_create(slabcache_obj->name, iEntrySize, 0, 0, NULL, NULL)))
      +#else
      +            kmem_cache_create(slabcache_obj->name, iEntrySize, 0, 0, NULL)))
      +#endif
           {
               ret = 1;
           }
      found it in sabayon linux gentoo overlay ( link )
      Did not work.

      Comment


      • #13
        Got it Working

        I have the ATI 8.41.7 driver running with the 2.6.23 kernel.

        I used the folowing patches:
        Code:
        --- firegl_public.c  2007-07-29 13:36:37.000000000 +0200
        +++ firegl_public.c  2007-07-29 14:24:11.000000000 +0200
        @@ -2409,7 +2409,11 @@
         #ifdef pte_offset_map
             pte_p = pte_offset_map(pmd_p, virtual_addr);
             if (pte_present(*pte_p))
        +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22)
                 ret = (ptep_clear_flush_dirty(vma, virtual_addr, pte_p) ? 1 : 0);
        +#else
        +    return 0;
        +#endif
             else
                 __KE_DEBUG("page not exists!\n");
             pte_unmap(pte_p); 
        @@ -3399,9 +3403,11 @@
                 sprintf(buf, "0x%Lx %c%c%c%c%c%c\n",
                    *phys_address,
                    pte_present (pte) ? 'p' : '-',
        +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
                    pte_read    (pte) ? 'r' : '-',
        -           pte_write   (pte) ? 'w' : '-',
                    pte_exec    (pte) ? 'x' : '-',
        +#endif
        +           pte_write   (pte) ? 'w' : '-',
                    pte_dirty   (pte) ? 'd' : '-',
                    pte_young   (pte) ? 'a' : '-');
             }
        @@ -5348,7 +5354,11 @@
             DBG_TRACE("creating slab object '%s'", slabcache_obj->name);
         
             if ((slabcache_obj->cache =
        +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
                     kmem_cache_create(slabcache_obj->name, iEntrySize, 0, 0, NULL, NULL)))
        +#else
        +            kmem_cache_create(slabcache_obj->name, iEntrySize, 0, 0, NULL)))
        +#endif
             {
                 ret = 1;
             }
        Code:
        --- firegl_public.c  2007-07-29 13:36:37.000000000 +0200
        +++ firegl_public.c  2007-07-29 14:24:11.000000000 +0200
        @@ -452,7 +452,7 @@
         }
         
         static unsigned int 
        -firegl_interrupt_poll_wrap(struct file *user_file, poll_table *pt) 
        +firegl_interrupt_poll_wrap(struct file *user_file, struct poll_table_struct *pt)
         {
             if(firegl_interrupt_poll(user_file, (__ke_poll_table*)pt))
             {
        @@ -1491,7 +1491,8 @@
         int ATI_API_CALL firegl_put_user_ptr(void *src, u32 *dst)
         {
           void *temp = src;
        -  return put_user(temp, dst);
        +  void *dst_temp = dst;
        +  return put_user(temp, dst_temp);
         }
         
         int ATI_API_CALL firegl_put_user_u16(u16 src, u16 *dst)
        @@ -1883,7 +1884,7 @@
         
         __ke_pci_dev_t* ATI_API_CALL __ke_pci_find_device (unsigned int vendor, unsigned int dev, __ke_pci_dev_t* from)
         {
        -       return (__ke_pci_dev_t*)pci_find_device( vendor, dev, (struct pci_dev *)(void *)from );
        +       return (__ke_pci_dev_t*) pci_get_device(vendor, dev, (struct pci_dev *)(void *) from); 
         }
         
         void* ATI_API_CALL __ke_malloc(__ke_size_t size)
        @@ -2813,9 +2814,9 @@
         #else
         static void ATI_API_CALL (*irq_handler_func)(int, void*, void*); /* function pointer variable */
         
        -static irqreturn_t ke_irq_handler_wrap(int irq, void *arg1, struct pt_regs *regs)
        +static irqreturn_t ke_irq_handler_wrap(int irq, void *arg1)
         {
        -    irq_handler_func(irq, arg1, regs);
        +    irq_handler_func(irq, arg1, NULL);
             return IRQ_HANDLED;
         }
         
        @@ -2826,7 +2827,7 @@
             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)
        @@ -2848,9 +2849,7 @@
         
         void ATI_API_CALL __ke_unregister_ioctl32_conversion(unsigned int cmd)
         {
        -#ifdef FIREGL_IOCTL_COMPAT
        -    return 0;
        -#else
        +#ifndef FIREGL_IOCTL_COMPAT
             unregister_ioctl32_conversion(cmd);
         #endif
         }
        @@ -4353,7 +4352,7 @@
         void ATI_API_CALL KCL_CallFuncOnOtherCpus(firegl_void_routine_t func_to_call) 
         {
         #ifdef CONFIG_SMP
        -       smp_call_function( firegl_smp_func_parameter_wrap, (void*)func_to_call, 0, 1 );
        +       smp_call_function( (void (*)(void *info)) func_to_call, NULL, 0, 1 );
         #endif
         }
         
        @@ -5303,7 +5302,7 @@
         /** \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) */
        @@ -5344,7 +5343,7 @@
         
             slabcache_obj->routine_type = access_type;
             spin_lock_init(&(slabcache_obj->lock));
        -    sprintf(slabcache_obj->name, "kas(%08X)", (unsigned int)slabcache_obj);
        +    sprintf(slabcache_obj->name, "kas(%08X)", (unsigned int)(long unsigned int)slabcache_obj);
         
             DBG_TRACE("creating slab object '%s'", slabcache_obj->name);
        I got it from the same link as stated above.

        I hope this helps..

        Greetz NederWiet

        Comment


        • #14
          I guess 8.40.1 does not work. I can't use 8.41.7.

          Comment


          • #15
            The patch failed at some chunks btw. i just ignored that.. I wil compile, i am currently using it.

            Regards, NederWiet

            Comment


            • #16
              The problem is not compiling, it does not run direct render, not on this hardware.

              Comment


              • #17
                Actually I just found out that they may be rethinking their decision to support 2.6.23 with 8.43 due to 64-bit issues...
                Cool, let me confirm my order for a new graphics card in the meantime that actually has a driver released when its needed (nvidia).

                Comment


                • #18
                  Originally posted by nederwiet View Post
                  I have the ATI 8.41.7 driver running with the 2.6.23 kernel.

                  I used the folowing patches:
                  Code:
                  --- firegl_public.c  2007-07-29 13:36:37.000000000 +0200
                  +++ firegl_public.c  2007-07-29 14:24:11.000000000 +0200
                  @@ -2409,7 +2409,11 @@
                   #ifdef pte_offset_map
                       pte_p = pte_offset_map(pmd_p, virtual_addr);
                       if (pte_present(*pte_p))
                  +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22)
                           ret = (ptep_clear_flush_dirty(vma, virtual_addr, pte_p) ? 1 : 0);
                  +#else
                  +    return 0;
                  +#endif
                       else
                           __KE_DEBUG("page not exists!\n");
                       pte_unmap(pte_p); 
                  @@ -3399,9 +3403,11 @@
                           sprintf(buf, "0x%Lx %c%c%c%c%c%c\n",
                              *phys_address,
                              pte_present (pte) ? 'p' : '-',
                  +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
                              pte_read    (pte) ? 'r' : '-',
                  -           pte_write   (pte) ? 'w' : '-',
                              pte_exec    (pte) ? 'x' : '-',
                  +#endif
                  +           pte_write   (pte) ? 'w' : '-',
                              pte_dirty   (pte) ? 'd' : '-',
                              pte_young   (pte) ? 'a' : '-');
                       }
                  @@ -5348,7 +5354,11 @@
                       DBG_TRACE("creating slab object '%s'", slabcache_obj->name);
                   
                       if ((slabcache_obj->cache =
                  +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
                               kmem_cache_create(slabcache_obj->name, iEntrySize, 0, 0, NULL, NULL)))
                  +#else
                  +            kmem_cache_create(slabcache_obj->name, iEntrySize, 0, 0, NULL)))
                  +#endif
                       {
                           ret = 1;
                       }
                  Code:
                  --- firegl_public.c  2007-07-29 13:36:37.000000000 +0200
                  +++ firegl_public.c  2007-07-29 14:24:11.000000000 +0200
                  @@ -452,7 +452,7 @@
                   }
                   
                   static unsigned int 
                  -firegl_interrupt_poll_wrap(struct file *user_file, poll_table *pt) 
                  +firegl_interrupt_poll_wrap(struct file *user_file, struct poll_table_struct *pt)
                   {
                       if(firegl_interrupt_poll(user_file, (__ke_poll_table*)pt))
                       {
                  @@ -1491,7 +1491,8 @@
                   int ATI_API_CALL firegl_put_user_ptr(void *src, u32 *dst)
                   {
                     void *temp = src;
                  -  return put_user(temp, dst);
                  +  void *dst_temp = dst;
                  +  return put_user(temp, dst_temp);
                   }
                   
                   int ATI_API_CALL firegl_put_user_u16(u16 src, u16 *dst)
                  @@ -1883,7 +1884,7 @@
                   
                   __ke_pci_dev_t* ATI_API_CALL __ke_pci_find_device (unsigned int vendor, unsigned int dev, __ke_pci_dev_t* from)
                   {
                  -       return (__ke_pci_dev_t*)pci_find_device( vendor, dev, (struct pci_dev *)(void *)from );
                  +       return (__ke_pci_dev_t*) pci_get_device(vendor, dev, (struct pci_dev *)(void *) from); 
                   }
                   
                   void* ATI_API_CALL __ke_malloc(__ke_size_t size)
                  @@ -2813,9 +2814,9 @@
                   #else
                   static void ATI_API_CALL (*irq_handler_func)(int, void*, void*); /* function pointer variable */
                   
                  -static irqreturn_t ke_irq_handler_wrap(int irq, void *arg1, struct pt_regs *regs)
                  +static irqreturn_t ke_irq_handler_wrap(int irq, void *arg1)
                   {
                  -    irq_handler_func(irq, arg1, regs);
                  +    irq_handler_func(irq, arg1, NULL);
                       return IRQ_HANDLED;
                   }
                   
                  @@ -2826,7 +2827,7 @@
                       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)
                  @@ -2848,9 +2849,7 @@
                   
                   void ATI_API_CALL __ke_unregister_ioctl32_conversion(unsigned int cmd)
                   {
                  -#ifdef FIREGL_IOCTL_COMPAT
                  -    return 0;
                  -#else
                  +#ifndef FIREGL_IOCTL_COMPAT
                       unregister_ioctl32_conversion(cmd);
                   #endif
                   }
                  @@ -4353,7 +4352,7 @@
                   void ATI_API_CALL KCL_CallFuncOnOtherCpus(firegl_void_routine_t func_to_call) 
                   {
                   #ifdef CONFIG_SMP
                  -       smp_call_function( firegl_smp_func_parameter_wrap, (void*)func_to_call, 0, 1 );
                  +       smp_call_function( (void (*)(void *info)) func_to_call, NULL, 0, 1 );
                   #endif
                   }
                   
                  @@ -5303,7 +5302,7 @@
                   /** \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) */
                  @@ -5344,7 +5343,7 @@
                   
                       slabcache_obj->routine_type = access_type;
                       spin_lock_init(&(slabcache_obj->lock));
                  -    sprintf(slabcache_obj->name, "kas(%08X)", (unsigned int)slabcache_obj);
                  
                  +    sprintf(slabcache_obj->name, "kas(%08X)", (unsigned int)(long unsigned int)slabcache_obj);
                   
                       DBG_TRACE("creating slab object '%s'", slabcache_obj->name);
                  I got it from the same link as stated above.

                  I hope this helps..

                  Greetz NederWiet

                  This patches worked for me (Ubuntu Fesity with kernel 2.6.23)


                  I did this:


                  $ chmod +x ati-driver-installer-8.41.7-x86.run

                  with root:

                  # sh ./ati-driver-installer-8.41.7.x86.run

                  (choose install and NOT build packages)

                  cd /lib/module/fglrx/build_mod

                  applied the two pathces mentioned above with:
                  patch -i "patch_file"

                  then

                  ./make.sh

                  cd ..

                  ./make_install.sh

                  and the module was ready...

                  modprobe fglrx

                  done.

                  I had several problems due to the presence of "direct rendering" in my kernel, i recompiled it as a module and unloaded it: all worked. Same for the radeon support in the kernel.

                  I hope this wuold be useful for someone.

                  Thanks to NederWiet for the patches.

                  Comment


                  • #19
                    ATI drives Compaq 6920p

                    I am cross posting this from another thread. For documentation purpose for my laptop. Anyway I was able to get mine running by only applying one of the patches, As I document below.

                    I am running OpenSuse 10.2 on a Compaq 6910p. I had to install the 2.6.23.1 kernel in order to get my wireless adapter working.

                    I was able to get the ATI fglx 8.40.4 latest drivers working. I initially did install both patches that you have listed here or on the link you showed. Which gave me the same results as you.

                    What I did was only install the "ati-drivers-8.40.4-warnings.patch"

                    And performed the custom build of the drive from the /lbi/modules/fglrx dir. It did give some warnings but everything worked fine. My fglrxinfo command prints the following now:

                    display: :0.0 screen: 0
                    OpenGL vendor string: ATI Technologies Inc.
                    OpenGL renderer string: ATI Mobility Radeon X2300
                    OpenGL version string: 2.0.6747 (8.40.4)

                    I did try the other patch ati-drivers-2.6.23.patch but it did not resolve anything. And combining both the patches was fruitless, as I stated above.

                    Comment


                    • #20
                      I just verified that 2.6.23 i686 works with both patches applied. Just don't use copy/paste, download em directly.




                      They apply correctly with 8.40.4 and newer. That means you can use 8.41.7 too. Also updated my script to include both of em.

                      Comment

                      Working...
                      X