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