Hello community, here is the log from the commit of package libcxgb4-rdmav2 for openSUSE:Factory checked in at 2015-02-16 21:14:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libcxgb4-rdmav2 (Old) and /work/SRC/openSUSE:Factory/.libcxgb4-rdmav2.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libcxgb4-rdmav2" Changes: -------- --- /work/SRC/openSUSE:Factory/libcxgb4-rdmav2/libcxgb4-rdmav2.changes 2014-07-23 22:06:33.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.libcxgb4-rdmav2.new/libcxgb4-rdmav2.changes 2015-02-16 21:14:22.000000000 +0100 @@ -1,0 +2,14 @@ +Wed Feb 4 12:03:54 UTC 2015 - [email protected] + +- Update to version 1.3.5 + * libcxb4: use wc_wmb() instead of wmb(). + The user mode RDMA macro for wmb() is not sufficient to provide the + fencing needed. This was causing corrupted packets when running multiple + WD-UDP sockperf processes. The correct "sfence" instruction is provided + with the wc_wmb() macro. See /usr/include/infiniband/arch.h. + Note: The kernel implementation of wmb() is sufficient. This is a + libcxgb4 issue only... +- Use download Url as source +- Update libcxgb4-rdmav2-ah_message.patch + +------------------------------------------------------------------- Old: ---- libcxgb4-1.3.3.tar.gz New: ---- libcxgb4-1.3.5.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libcxgb4-rdmav2.spec ++++++ --- /var/tmp/diff_new_pack.WVtP0e/_old 2015-02-16 21:14:23.000000000 +0100 +++ /var/tmp/diff_new_pack.WVtP0e/_new 2015-02-16 21:14:23.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package libcxgb4-rdmav2 # -# Copyright (c) 2011-2014 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,11 +17,11 @@ Name: libcxgb4-rdmav2 Summary: Chelsio T4 iWARP RNIC OpenIB Userspace Library -Version: 1.3.3 +Version: 1.3.5 Release: 0 License: GPL-2.0 or BSD-2-Clause Group: System/Libraries -Source0: libcxgb4-%{version}.tar.gz +Source0: https://www.openfabrics.org/downloads/cxgb4/libcxgb4-%{version}.tar.gz #Git-Clone: git://www.openfabrics.org/~swise/libcxgb4 Patch1: libcxgb4-fix_puns.patch Patch2: libcxgb4-rdmav2-ah_message.patch ++++++ libcxgb4-1.3.3.tar.gz -> libcxgb4-1.3.5.tar.gz ++++++ ++++ 10200 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libcxgb4-1.3.3/ChangeLog new/libcxgb4-1.3.5/ChangeLog --- old/libcxgb4-1.3.3/ChangeLog 2014-03-11 17:49:08.000000000 +0100 +++ new/libcxgb4-1.3.5/ChangeLog 2014-07-31 18:28:31.000000000 +0200 @@ -1,6 +1,143 @@ -commit 51cd89ff2cc2fe9f2d7c3459ef2d54c42c0e3228 +commit 6a417d903b9add7c8ab2b71ac11c85c46671e020 Author: Steve Wise <[email protected]> -Date: Tue Mar 11 11:45:26 2014 -0500 +Date: Thu Jul 31 11:25:22 2014 -0500 + + Spin release 1.3.5. + + Signed-off-by: Steve Wise <[email protected]> + +commit 52ecbea1b908d3b449022e2d75ebe0ca3885bcf2 +Author: Steve Wise <[email protected]> +Date: Thu Jul 31 11:14:05 2014 -0500 + + libcxb4: use wc_wmb() instead of wmb(). + + The user mode RDMA macro for wmb() is not sufficient to provide the + fencing needed. This was causing corrupted packets when running multiple + WD-UDP sockperf processes. The correct "sfence" instruction is provided + with the wc_wmb() macro. See /usr/include/infiniband/arch.h. + + Note: The kernel implementation of wmb() is sufficient. This is a + libcxgb4 issue only... + + Signed-off-by: Steve Wise <[email protected]> + +commit 242c29715372bf6999aa343a5aad5654da3ecf3a +Author: Steve Wise <[email protected]> +Date: Wed Jun 18 10:17:00 2014 -0500 + + Spin release 1.3.4 + + Signed-off-by: Steve Wise <[email protected]> + +commit 2d54f4c5604cae24caac493aaf6d8b0907ac2ed2 +Author: Steve Wise <[email protected]> +Date: Wed Jun 18 10:16:52 2014 -0500 + + Support the query_qp() verb + + Signed-off-by: Steve Wise <[email protected]> + +commit f80159d12148774646ad65d03cd070f6d5f86eb4 +Author: Steve Wise <[email protected]> +Date: Mon Jun 9 15:20:47 2014 -0500 + + Account for the full qid range. + + The total qid range is should really be based on the max_cq attribute. + + Signed-off-by: Steve Wise <[email protected]> + +commit 5aaf5e7277a1c12964aac11a4cff94520717e805 +Author: Yann Droneaud <[email protected]> +Date: Mon May 5 12:59:23 2014 -0500 + + kernel abi: adds explicit padding in struct c4iw_alloc_ucontext_resp + + i386 ABI disagree with most other ABIs regarding alignment + of data type larger than 4 bytes: on most ABIs a padding must + be added at end of the structures, while it is not + required on i386. + + Such ABI disagreement will make an x86_64 kernel try to write past + the struct c4iw_alloc_ucontext_resp buffer provided by an i386 + userspace binary. As struct c4iw_alloc_ucontext_resp is likely + on stack, see function c4iw_alloc_context(), side effects are + expected. + + On kernel side, this structure was modified for kernel v3.15-rc1 + by following commit: + + Commit 05eb23893c2cf9502a9cec0c32e7f1d1ed2895c8 + Author: Steve Wise <[email protected]> + Date: Fri Mar 14 21:52:08 2014 +0530 + + cxgb4/iw_cxgb4: Doorbell Drop Avoidance Bug Fixes + + If boundary check is implemented on kernel side, the x86_64 + kernel will instead refuse to write past the i386 userspace + provided buffer and the uverbs will fail. + + To fix these issues, this patch adds an explicit padding at end + of structure so that i386 and others ABI share the same structure + layout. This patch makes c4iw_alloc_context() check for a value + in the padding field to detect newer kernel using the field for + a future purpose (only activated in debug). + + With this patch, libcxgb4 will work against older kernel and + newer patched kernel. + + Link: http://marc.info/[email protected] + Signed-off-by: Yann Droneaud <[email protected]> + Signed-off-by: Steve Wise <[email protected]> + +commit 5c65bf17913949368db8802656dc7dbc291271ed +Author: Yann Droneaud <[email protected]> +Date: Mon May 5 12:59:23 2014 -0500 + + kernel abi: adds explicit padding in struct c4iw_create_cq_resp + + i386 ABI disagree with most other ABIs regarding alignment + of data type larger than 4 bytes: on most ABIs a padding must + be added at end of the structures, while it is not required + on i386. + + Such ABI disagreement will make an x86_64 kernel try to write past + the struct c4iw_create_cq_resp buffer provided by an i386 + userspace binary. As struct c4iw_create_cq_resp is likely + on stack, see function c4iw_create_cq(), side effects are + expected. + + On kernel side, this structure was added for kernel v2.6.35-rc1 + by following commit. + + Commit cfdda9d764362ab77b11a410bb928400e6520d57 + Author: Steve Wise <[email protected]> + Date: Wed Apr 21 15:30:06 2010 -0700 + + RDMA/cxgb4: Add driver for Chelsio T4 RNIC + + If boundary check is implemented on kernel side, the x86_64 kernel + will refuse to write past the i386 userspace provided buffer and the + uverbs will fail. + + To fix these issues, this patch adds an explicit padding at end + of structure so that i386 and others ABI share the same structure + layout. This patch makes c4iw_create_cq() check for a value in the + padding field to detect newer kernel using the field for a future + purpose (only activated in debug). + + With this patch, libcxgb4 will work against older kernel and + newer patched kernel. + + Link: http://marc.info/[email protected] + + Signed-off-by: Yann Droneaud <[email protected]> + Signed-off-by: Steve Wise <[email protected]> + +commit 4f334446f63e3a34006f504f7c89075423c412b4 +Author: Steve Wise <[email protected]> +Date: Tue Mar 11 11:47:19 2014 -0500 Spin release 1.3.3. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libcxgb4-1.3.3/config.h.in new/libcxgb4-1.3.5/config.h.in --- old/libcxgb4-1.3.3/config.h.in 2014-03-11 17:49:20.000000000 +0100 +++ new/libcxgb4-1.3.5/config.h.in 2014-07-31 18:29:05.000000000 +0200 @@ -58,9 +58,6 @@ /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME -/* Define to the home page for this package. */ -#undef PACKAGE_URL - /* Define to the version of this package. */ #undef PACKAGE_VERSION diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libcxgb4-1.3.3/configure.in new/libcxgb4-1.3.5/configure.in --- old/libcxgb4-1.3.3/configure.in 2014-03-11 17:49:08.000000000 +0100 +++ new/libcxgb4-1.3.5/configure.in 2014-07-31 18:28:31.000000000 +0200 @@ -1,11 +1,11 @@ dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.57) -AC_INIT(libcxgb4, 1.3.3, [email protected]) +AC_INIT(libcxgb4, 1.3.5, [email protected]) AC_CONFIG_SRCDIR([src/libcxgb4.h]) AC_CONFIG_AUX_DIR(config) AC_CONFIG_HEADERS(config.h) -AM_INIT_AUTOMAKE(libcxgb4, 1.3.3) +AM_INIT_AUTOMAKE(libcxgb4, 1.3.5) AM_PROG_LIBTOOL AC_ARG_ENABLE(libcheck, [ --disable-libcheck do not test for presence of ib libraries], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libcxgb4-1.3.3/libcxgb4.spec new/libcxgb4-1.3.5/libcxgb4.spec --- old/libcxgb4-1.3.3/libcxgb4.spec 2014-03-11 17:49:40.000000000 +0100 +++ new/libcxgb4-1.3.5/libcxgb4.spec 2014-07-31 18:29:05.000000000 +0200 @@ -1,7 +1,7 @@ -%define ver 1.3.3 +%define ver 1.3.5 Name: libcxgb4 -Version: 1.3.3 +Version: 1.3.5 Release: 1%{?dist} Summary: Chelsio T4/T5 RNIC Open Fabrics Userspace Library diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libcxgb4-1.3.3/libcxgb4.spec.in new/libcxgb4-1.3.5/libcxgb4.spec.in --- old/libcxgb4-1.3.3/libcxgb4.spec.in 2014-03-11 17:49:08.000000000 +0100 +++ new/libcxgb4-1.3.5/libcxgb4.spec.in 2014-07-31 18:28:31.000000000 +0200 @@ -1,7 +1,7 @@ %define ver @VERSION@ Name: libcxgb4 -Version: 1.3.3 +Version: 1.3.5 Release: 1%{?dist} Summary: Chelsio T4/T5 RNIC Open Fabrics Userspace Library diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libcxgb4-1.3.3/src/cxgb4-abi.h new/libcxgb4-1.3.5/src/cxgb4-abi.h --- old/libcxgb4-1.3.3/src/cxgb4-abi.h 2014-02-19 16:46:44.000000000 +0100 +++ new/libcxgb4-1.3.5/src/cxgb4-abi.h 2014-06-18 17:14:22.000000000 +0200 @@ -38,6 +38,7 @@ struct ibv_get_context_resp ibv_resp; __u64 status_page_key; __u32 status_page_size; + __u32 reserved; }; struct c4iw_alloc_pd_resp { @@ -53,6 +54,7 @@ __u32 cqid; __u32 size; __u32 qid_mask; + __u32 reserved; }; enum { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libcxgb4-1.3.3/src/dev.c new/libcxgb4-1.3.5/src/dev.c --- old/libcxgb4-1.3.3/src/dev.c 2014-03-11 17:49:08.000000000 +0100 +++ new/libcxgb4-1.3.5/src/dev.c 2014-06-18 17:18:03.000000000 +0200 @@ -125,10 +125,15 @@ context->ibv_ctx.cmd_fd = cmd_fd; resp.status_page_size = 0; + resp.reserved = 0; if (ibv_cmd_get_context(&context->ibv_ctx, &cmd, sizeof cmd, &resp.ibv_resp, sizeof resp)) goto err_free; + if (resp.reserved) + PDBG("%s c4iw_alloc_ucontext_resp reserved field modified by kernel\n", + __FUNCTION__); + context->status_page_size = resp.status_page_size; if (resp.status_page_size) { context->status_page = mmap(NULL, resp.status_page_size, @@ -171,8 +176,8 @@ if (!rhp->mmid2ptr) { goto err_unmap; } - rhp->max_qp = T4_QID_BASE + attr.max_qp; - rhp->qpid2ptr = calloc(T4_QID_BASE + attr.max_qp, sizeof(void *)); + rhp->max_qp = T4_QID_BASE + attr.max_cq; + rhp->qpid2ptr = calloc(T4_QID_BASE + attr.max_cq, sizeof(void *)); if (!rhp->qpid2ptr) { goto err_unmap; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libcxgb4-1.3.3/src/qp.c new/libcxgb4-1.3.5/src/qp.c --- old/libcxgb4-1.3.3/src/qp.c 2014-02-19 16:46:44.000000000 +0100 +++ new/libcxgb4-1.3.5/src/qp.c 2014-07-31 18:28:31.000000000 +0200 @@ -53,7 +53,7 @@ dst = (u64 *)((u8 *)wq->sq.queue + wq->sq.wq_pidx * T4_EQ_ENTRY_SIZE); if (t4_sq_onchip(wq)) { len16 = align(len16, 4); - wmb(); + wc_wmb(); } while (len16) { *dst++ = *src++; @@ -289,7 +289,7 @@ int mask; int ret; - wmb(); + wc_wmb(); if (qid == qhp->wq.sq.qid) { attr.sq_psn = idx; mask = IBV_QP_SQ_PSN; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libcxgb4-1.3.3/src/t4.h new/libcxgb4-1.3.5/src/t4.h --- old/libcxgb4-1.3.3/src/t4.h 2014-02-19 16:46:44.000000000 +0100 +++ new/libcxgb4-1.3.5/src/t4.h 2014-07-31 18:28:31.000000000 +0200 @@ -479,7 +479,7 @@ static inline void t4_ring_sq_db(struct t4_wq *wq, u16 inc, u8 t5, u8 len16, union t4_wr *wqe) { - wmb(); + wc_wmb(); if (t5) { if (t5_en_wc && inc == 1) { PDBG("%s: WC wq->sq.pidx = %d; len16=%d\n", @@ -512,7 +512,7 @@ static inline void t4_ring_rq_db(struct t4_wq *wq, u16 inc, u8 t5, u8 len16, union t4_recv_wr *wqe) { - wmb(); + wc_wmb(); if (t5) { if (t5_en_wc && inc == 1) { PDBG("%s: WC wq->rq.pidx = %d; len16=%d\n", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libcxgb4-1.3.3/src/verbs.c new/libcxgb4-1.3.5/src/verbs.c --- old/libcxgb4-1.3.3/src/verbs.c 2014-02-19 16:46:44.000000000 +0100 +++ new/libcxgb4-1.3.5/src/verbs.c 2014-06-18 17:18:03.000000000 +0200 @@ -181,12 +181,17 @@ return NULL; } + resp.reserved = 0; ret = ibv_cmd_create_cq(context, cqe, channel, comp_vector, &chp->ibv_cq, &cmd, sizeof cmd, &resp.ibv_resp, sizeof resp); if (ret) goto err1; + if (resp.reserved) + PDBG("%s c4iw_create_cq_resp reserved field modified by kernel\n", + __FUNCTION__); + pthread_spin_init(&chp->lock, PTHREAD_PROCESS_PRIVATE); #ifdef STALL_DETECTION gettimeofday(&chp->time, NULL); @@ -610,10 +615,19 @@ return 0; } -int c4iw_query_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, +int c4iw_query_qp(struct ibv_qp *ibqp, struct ibv_qp_attr *attr, int attr_mask, struct ibv_qp_init_attr *init_attr) { - return ENOSYS; + struct ibv_query_qp cmd; + struct c4iw_qp *qhp = to_c4iw_qp(ibqp); + int ret; + + pthread_spin_lock(&qhp->lock); + if (t4_wq_in_error(&qhp->wq)) + c4iw_flush_qp(qhp); + ret = ibv_cmd_query_qp(ibqp, attr, attr_mask, init_attr, &cmd, sizeof cmd); + pthread_spin_unlock(&qhp->lock); + return ret; } struct ibv_ah *c4iw_create_ah(struct ibv_pd *pd, struct ibv_ah_attr *attr) ++++++ libcxgb4-rdmav2-ah_message.patch ++++++ --- /var/tmp/diff_new_pack.WVtP0e/_old 2015-02-16 21:14:23.000000000 +0100 +++ /var/tmp/diff_new_pack.WVtP0e/_new 2015-02-16 21:14:23.000000000 +0100 @@ -6,12 +6,12 @@ =================================================================== --- configure.in.orig 2014-04-03 12:02:58.809101866 +0200 +++ configure.in 2014-04-03 12:04:28.451029934 +0200 -@@ -8,7 +8,7 @@ AC_CONFIG_HEADERS(config.h) - AM_INIT_AUTOMAKE(libcxgb4, 1.3.3) +@@ -8,7 +8,7 @@ + AM_INIT_AUTOMAKE(libcxgb4, 1.3.5) AM_PROG_LIBTOOL -AC_ARG_ENABLE(libcheck, [ --disable-libcheck do not test for presence of ib libraries], -+AC_ARG_ENABLE([libcheck], [AS_HELP_STRING([--disable-libcheck], [do not test for presence of ib libraries])], ++AC_ARG_ENABLE([libcheck], [AS_HELP_STRING([--disable-libcheck], [do not test for presence of ib libraries])] [ if test x$enableval = xno ; then disable_libcheck=yes fi -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
