Package: fglrx-driver
Version: 1:8-7-2
Severity: normal
Tags: patch

        Hi,

 Please find attached a patch to help the build of fglrx-driver against
 2.6.27-rc3-686:
  CC [M]  /usr/src/modules/fglrx/firegl_public.o
/usr/src/modules/fglrx/firegl_public.c: In function ‘__ke_flush_cache’:
/usr/src/modules/fglrx/firegl_public.c:3240: error: too many arguments to 
function ‘smp_call_function’

 However after the patch, linking fails with:
FATAL: modpost: GPL-incompatible module fglrx.ko uses GPL-only symbol 
'pv_lock_ops'

 This is fixed upstream in:
commit 7946612de2087e163308e26034286fc2dc9dacf1
Author: Jeremy Fitzhardinge <[EMAIL PROTECTED]>
Date:   Wed Aug 20 11:31:07 2008 -0700

    x86: export pv_lock_ops non-GPL
    
    None of the spinlock API is exported GPL, so there's no reason for
    pv_lock_ops to be.
    
    Signed-off-by: Jeremy Fitzhardinge <[EMAIL PROTECTED]>
    Signed-off-by: Ingo Molnar <[EMAIL PROTECTED]>
    Cc: drago01 <[EMAIL PROTECTED]>

   Bye

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)

Kernel: Linux 2.6.26-1-686 (SMP w/2 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages fglrx-driver depends on:
ii  fglrx-glx                     1:8-7-2    proprietary libGL for the non-free
ii  libc6                         2.7-13     GNU C Library: Shared libraries
ii  libgl1-mesa-glx [libgl1]      7.0.3-5    A free implementation of the OpenG
ii  libx11-6                      2:1.1.4-2  X11 client-side library
ii  libxext6                      2:1.0.4-1  X11 miscellaneous extension librar
ii  libxrandr2                    2:1.2.3-1  X11 RandR extension library
ii  libxrender1                   1:0.9.4-2  X Rendering Extension client libra
ii  xserver-xorg                  1:7.3+15   the X.Org X server

Versions of packages fglrx-driver recommends:
ii  fglrx-atieventsd        1:8-7-2          external events daemon for the non
ii  fglrx-glx               1:8-7-2          proprietary libGL for the non-free
ii  fglrx-kernel-2.6.26-1-6 1:8-7-2+2.6.26-2 ATI binary kernel module for Linux
ii  fglrx-source            1:8-7-2          kernel module source for the non-f

Versions of packages fglrx-driver suggests:
ii  fglrx-control                 1:8-7-2    control panel for the non-free AMD

-- no debconf information

-- 
Loïc Minier
--- firegl_public.c
+++ firegl_public.c
@@ -207,6 +207,13 @@
 #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 */
 
@@ -3237,7 +3244,7 @@ int ATI_API_CALL __ke_flush_cache(void)
 {
 #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 */
@@ -4832,7 +4839,7 @@ struct _agp_memory* ATI_API_CALL __ke_agp_allocate_memory_phys_list(
 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( firegl_smp_func_parameter_wrap, (void*)func_to_call, 0, 1 );
 #endif
 }
 
@@ -4943,7 +4950,7 @@ static int ATI_API_CALL KCL_enable_pat(void)
     }
 
 #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);
@@ -4961,7 +4968,7 @@ static void ATI_API_CALL KCL_disable_pat(void)
     }
 
 #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);

Reply via email to