Hey Vlad,
You are correct, I did not have a 32bit version of those functions.
The attached patch should fix the issue.

Thanks,
Jon

On Wed, Mar 04, 2009 at 04:08:17PM +0200, Vladimir Sokolovsky wrote:
> Hi Jon,
>
> nfsrdma backport headers (atomic.h) break OFED's kernel compilation on  
> RHEL5.2 32-bit:
> See kernel_addons/backport/2.6.9_U7/include/asm/atomic.h as an example.
>
>
>  gcc -m32  
> -Wp,-MD,/var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/drivers/infiniband/core/.addr.o.d
>  
>  -nostdinc -isystem /usr/lib/gcc/i386-redhat-linux/4.1.2/include  
> -D__KERNEL__ \
> -include include/linux/autoconf.h \
> -include  
> /var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/include/linux/autoconf.h \
 
> -I/var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/kernel_addons/backport/2.6.18-EL5.2/include/
>  
> \
> \
> \
> -I/var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/include \
> -I/var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/drivers/infiniband/debug \
> -I/usr/local/include/scst \
> -I/var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/drivers/infiniband/ulp/srpt \
> -I/var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/drivers/net/cxgb3 \
> -Iinclude \
> \
> -I/usr/src/kernels/2.6.18-92.el5-i686/arch/i386/include \
>  -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing  
> -fno-common -Wstrict-prototypes -Wundef  
> -Werror-implicit-function-declaration -Os -pipe -msoft-float  
> -fno-builtin-sprintf -fno-builtin-log2 -fno-builtin-puts   
> -mpreferred-stack-boundary=2  -march=i686 -mtune=generic -mtune=generic  
> -mregparm=3 -ffreestanding -Iinclude/asm-i386/mach-generic  
> -Iinclude/asm-i386/mach-default -fomit-frame-pointer -g   
> -fno-stack-protector -Wdeclaration-after-statement -Wno-pointer-sign    
> -DMODULE -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(addr)"   
> -D"KBUILD_MODNAME=KBUILD_STR(ib_addr)" -c -o  
> /var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/drivers/infiniband/core/.tmp_addr.o 
> /var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/drivers/infiniband/core/addr.c
> In file included from include/asm/atomic.h:256,
>                 from include/linux/mutex.h:18,
>                 from  
> /var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/drivers/infiniband/core/addr.c:36:
 
> /var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/kernel_addons/backport/2.6.18-EL5.2/include/asm-generic/atomic.h:
>  
> In function 'atomic_long_inc_return':
 
> /var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/kernel_addons/backport/2.6.18-EL5.2/include/asm-generic/atomic.h:8:
>  
> error: 'atomic64_t' undeclared (first use in this function)
 
> /var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/kernel_addons/backport/2.6.18-EL5.2/include/asm-generic/atomic.h:8:
>  
> error: (Each undeclared identifier is reported only once
 
> /var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/kernel_addons/backport/2.6.18-EL5.2/include/asm-generic/atomic.h:8:
>  
> error: for each function it appears in.)
 
> /var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/kernel_addons/backport/2.6.18-EL5.2/include/asm-generic/atomic.h:8:
>  
> error: 'v' undeclared (first use in this function)
 
> /var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/kernel_addons/backport/2.6.18-EL5.2/include/asm-generic/atomic.h:8:
>  
> error: expected expression before ')' token
 
> /var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/kernel_addons/backport/2.6.18-EL5.2/include/asm-generic/atomic.h:10:
>  
> error: implicit declaration of function 'atomic64_inc_return'
 
> /var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/kernel_addons/backport/2.6.18-EL5.2/include/asm-generic/atomic.h:
>  
> In function 'atomic_long_dec_return':
 
> /var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/kernel_addons/backport/2.6.18-EL5.2/include/asm-generic/atomic.h:15:
>  
> error: 'atomic64_t' undeclared (first use in this function)
 
> /var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/kernel_addons/backport/2.6.18-EL5.2/include/asm-generic/atomic.h:15:
>  
> error: 'v' undeclared (first use in this function)
 
> /var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/kernel_addons/backport/2.6.18-EL5.2/include/asm-generic/atomic.h:15:
>  
> error: expected expression before ')' token
 
> /var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/kernel_addons/backport/2.6.18-EL5.2/include/asm-generic/atomic.h:17:
>  
> error: implicit declaration of function 'atomic64_dec_return'
> make[4]: ***  
> [/var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/drivers/infiniband/core/addr.o] 
> Error 1
> make[3]: ***  
> [/var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/drivers/infiniband/core] Error 
> 2
> make[2]: ***  
> [/var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4/drivers/infiniband] Error 2
> make[1]: *** [_module_/var/tmp/OFED_topdir/BUILD/ofa_kernel-1.4] Error 2
> make[1]: Leaving directory `/usr/src/kernels/2.6.18-92.el5-i686'
> make: *** [kernel] Error 2
>
> Regards,
> Vladimir
diff --git a/kernel_addons/backport/2.6.18-EL5.2/include/asm-generic/atomic.h b/kernel_addons/backport/2.6.18-EL5.2/include/asm-generic/atomic.h
index 066adb4..035b721 100644
--- a/kernel_addons/backport/2.6.18-EL5.2/include/asm-generic/atomic.h
+++ b/kernel_addons/backport/2.6.18-EL5.2/include/asm-generic/atomic.h
@@ -3,6 +3,8 @@
 
 #include_next <asm-generic/atomic.h>
 
+#if BITS_PER_LONG == 64
+
 static inline long atomic_long_inc_return(atomic_long_t *l)
 {
 	atomic64_t *v = (atomic64_t *)l;
@@ -17,4 +19,22 @@ static inline long atomic_long_dec_return(atomic_long_t *l)
 	return (long)atomic64_dec_return(v);
 }
 
+#else
+
+static inline long atomic_long_inc_return(atomic_long_t *l)
+{
+	atomic_t *v = (atomic_t *)l;
+
+	return (long)atomic_inc_return(v);
+}
+
+static inline long atomic_long_dec_return(atomic_long_t *l)
+{
+	atomic_t *v = (atomic_t *)l;
+
+	return (long)atomic_dec_return(v);
+}
+
+#endif  /*  BITS_PER_LONG == 64  */
+
 #endif  /*  __BACKPORT_ASM_GENERIC_ATOMIC_H  */
_______________________________________________
ewg mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg

Reply via email to