ug, so no F8 support than. (assuming it doesn't support i686 2.6.23)
Announcement
Collapse
No announcement yet.
Will 8.42 support kernel 2.6.23?
Collapse
X
-
Originally posted by yoshi314 View Post8.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; }
Comment
-
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 hope this helps..
Greetz NederWiet
Comment
-
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...
Comment
-
Originally posted by nederwiet View PostI 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 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
-
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
-
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
Comment