Any information if fglrx/catalyst 8.9 works with Linux 2.6.27?
"Works" can be defined; works without changes or works with patching.
"Works" can be defined; works without changes or works with patching.
--- firegl_public.c.orig 2008-09-19 10:57:09.000000000 +0200 +++ firegl_public.c 2008-09-19 10:55:57.000000000 +0200 @@ -199,6 +199,12 @@ #define preempt_enable() #endif +/* Since 2.6.27 smp_call_function doesn't have a nonatomic/retry argument */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27) +#define SMP_CALL_FUNCTION(func, info, retry, wait) smp_call_function(func, info, wait) +#else +#define SMP_CALL_FUNCTION(func, info, retry, wait) smp_call_function(func, info, retry, wait) +#endif // ============================================================ /* globals */ @@ -250,7 +256,7 @@ const char BUILD_KERNEL_HAS_MODVERSIONS_CLEARED; #endif -#ifdef __SMP__ +#ifdef CONFIG_SMP const unsigned long __ke_SMP_State = 1; const char BUILD_KERNEL_HAS_SMP_SET; #else @@ -2516,8 +2522,8 @@ { /*Some kernel developer removed the export of symbol "flush_tlb_page" on 2.6.25 x86_64 SMP kernel. Define a simple version here.*/ -#if defined(__x86_64__) && defined(__SMP__) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25)) - on_each_cpu(KCL_flush_tlb_one, &va, 1, 1); +#if defined(__x86_64__) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25)) + on_each_cpu(KCL_flush_tlb_one, &va, 1); #else flush_tlb_page(vma, va); #endif @@ -2902,7 +2908,7 @@ /*****************************************************************************/ -#ifdef __SMP__ +#ifdef CONFIG_SMP static atomic_t cpus_waiting; static void deferred_flush(void* contextp) @@ -2918,13 +2924,13 @@ while (atomic_read(&cpus_waiting) > 0) barrier(); } -#endif /* __SMP__ */ +#endif /* CONFIG_SMP */ int ATI_API_CALL __ke_flush_cache(void) { -#ifdef __SMP__ +#ifdef CONFIG_SMP /* write back invalidate all other CPUs (exported by kernel) */ - if (smp_call_function(deferred_flush, NULL, 1, 0) != 0) + if (SMP_CALL_FUNCTION(deferred_flush, NULL, 1, 0) != 0) panic("timed out waiting for the other CPUs!\n"); /* invalidate this CPU */ @@ -2938,7 +2944,7 @@ while (atomic_read(&cpus_waiting) > 0) barrier(); -#else /* !__SMP__ */ +#else /* !CONFIG_SMP */ #if defined(__i386__) || defined(__x86_64__) asm volatile ("wbinvd":::"memory"); #elif defined(__alpha__) || defined(__sparc__) @@ -2946,7 +2952,7 @@ #else #error "Please define flush_cache for your architecture." #endif -#endif /* !__SMP__ */ +#endif /* !CONFIG_SMP */ //for kernel 2.6.25, tlb_flush has been included when calling set_pages_*. #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25) @@ -4654,7 +4660,7 @@ } #ifdef CONFIG_SMP - if (smp_call_function(KCL_setup_pat, NULL, 0, 1) != 0) + if (SMP_CALL_FUNCTION(KCL_setup_pat, NULL, 0, 1) != 0) return 0; #endif KCL_setup_pat(NULL); @@ -4673,7 +4679,7 @@ } #ifdef CONFIG_SMP - if (smp_call_function(KCL_restore_pat, NULL, 0, 1) != 0) + if (SMP_CALL_FUNCTION(KCL_restore_pat, NULL, 0, 1) != 0) return; #endif KCL_restore_pat(NULL);
drmOpenDevice: node name is /dev/dri/card0 drmOpenDevice: open result is -1, (No such device or address) drmOpenDevice: open result is -1, (No such device or address) drmOpenDevice: Open failed [...] (WW) fglrx(0): Failed to open DRM connection [...] (WW) fglrx(0): No DRM connection for driver fglrx. (II) fglrx(0): [drm] DRM buffer queue setup: nbufs = 100 bufsize = 65536 [...] (EE) fglrx(0): atiddxDriScreenInit failed, GPS not been initialized. (WW) fglrx(0): *********************************************** (WW) fglrx(0): * DRI initialization failed! * (WW) fglrx(0): * (maybe driver kernel module missing or bad) * (WW) fglrx(0): * 2D acceleraton available (MMIO) * (WW) fglrx(0): * no 3D acceleration available * (WW) fglrx(0): ********************************************* *
/var/tmp/portage/x11-drivers/ati-drivers-8.532/work/common/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c: In function ‘__ke_vm_phys_addr_str’: /var/tmp/portage/x11-drivers/ati-drivers-8.532/work/common/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:3755: warning: return makes pointer from integer without a cast /var/tmp/portage/x11-drivers/ati-drivers-8.532/work/common/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:3756: warning: return makes pointer from integer without a cast /var/tmp/portage/x11-drivers/ati-drivers-8.532/work/common/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:3757: warning: return makes pointer from integer without a cast /var/tmp/portage/x11-drivers/ati-drivers-8.532/work/common/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:3759: warning: return makes pointer from integer without a cast /var/tmp/portage/x11-drivers/ati-drivers-8.532/work/common/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c: At top level: /var/tmp/portage/x11-drivers/ati-drivers-8.532/work/common/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:6374: warning: initialization from incompatible pointer type /var/tmp/portage/x11-drivers/ati-drivers-8.532/work/common/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:6400: warning: initialization from incompatible pointer type /var/tmp/portage/x11-drivers/ati-drivers-8.532/work/common/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:6372: warning: ‘sysrq_fgldbg_op’ defined but not used /var/tmp/portage/x11-drivers/ati-drivers-8.532/work/common/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:6398: warning: ‘sysrq_fgldump_op’ defined but not used
# patch firegl_public.c ati-drivers-2.6.27.patch patching file firegl_public.c Hunk #2 FAILED at 256. Hunk #3 FAILED at 2522. Hunk #4 FAILED at 2908. Hunk #5 FAILED at 2924. Hunk #6 FAILED at 2944. Hunk #7 FAILED at 2952. 6 out of 9 hunks FAILED -- saving rejects to file firegl_public.c.rej
# patch firegl_public.c ati-drivers-2.6.27.patch patching file firegl_public.c Hunk #2 FAILED at 256. Hunk #3 FAILED at 2522. Hunk #4 FAILED at 2908. Hunk #5 FAILED at 2924. Hunk #6 FAILED at 2944. Hunk #7 FAILED at 2952. 6 out of 9 hunks FAILED -- saving rejects to file firegl_public.c.rej
cd /usr/src/kernel-modules/fglrx cp firegl_public.c firegl_public.c.orig vi firegl_public.c diff -u firegl_public.c.orig firegl_public.c
--- firegl_public.c.orig 2008-10-13 10:50:51.000000000 -0400 +++ firegl_public.c 2008-10-13 14:25:26.000000000 -0400 @@ -199,6 +199,14 @@ #define preempt_enable() #endif +/* Since 2.6.27 smp_call_function doesn't have a nonatomic/retry argument */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27) +#define SMP_CALL_FUNCTION(func, info, retry, wait) smp_call_function(func, info, wait) +#else +#define SMP_CALL_FUNCTION(func, info, retry, wait) smp_call_function(func, info, retry, wait) +#endif + + // ============================================================ /* globals */ @@ -2516,8 +2524,8 @@ { /*Some kernel developer removed the export of symbol "flush_tlb_page" on 2.6.25 x86_64 SMP kernel. Define a simple version here.*/ -#if defined(__x86_64__) && CONFIG_SMP && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25)) - on_each_cpu(KCL_flush_tlb_one, &va, 1, 1); +#if defined(__x86_64__) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25)) + on_each_cpu(KCL_flush_tlb_one, &va, 1); #else flush_tlb_page(vma, va); #endif @@ -2924,7 +2932,7 @@ { #if CONFIG_SMP /* write back invalidate all other CPUs (exported by kernel) */ - if (smp_call_function(deferred_flush, NULL, 1, 0) != 0) + if (SMP_CALL_FUNCTION(deferred_flush, NULL, 1, 0) != 0) panic("timed out waiting for the other CPUs!\n"); /* invalidate this CPU */ @@ -4654,7 +4662,7 @@ } #ifdef CONFIG_SMP - if (smp_call_function(KCL_setup_pat, NULL, 0, 1) != 0) + if (SMP_CALL_FUNCTION(KCL_setup_pat, NULL, 0, 1) != 0) return 0; #endif KCL_setup_pat(NULL); @@ -4673,7 +4681,7 @@ } #ifdef CONFIG_SMP - if (smp_call_function(KCL_restore_pat, NULL, 0, 1) != 0) + if (SMP_CALL_FUNCTION(KCL_restore_pat, NULL, 0, 1) != 0) return; #endif KCL_restore_pat(NULL);
Comment