Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libfabric for openSUSE:Factory 
checked in at 2021-02-22 14:22:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libfabric (Old)
 and      /work/SRC/openSUSE:Factory/.libfabric.new.2378 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libfabric"

Mon Feb 22 14:22:22 2021 rev:24 rq:872745 version:1.11.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/libfabric/fabtests.changes       2020-10-14 
15:38:44.590352997 +0200
+++ /work/SRC/openSUSE:Factory/.libfabric.new.2378/fabtests.changes     
2021-02-22 14:22:22.867550660 +0100
@@ -1,0 +2,6 @@
+Wed Dec 16 08:29:07 UTC 2020 - Nicolas Morey-Chaisemartin 
<nmoreychaisemar...@suse.com>
+
+- Update to 1.11.2 (bsc#1181983)
+  - See NEWS.md for changelog
+
+-------------------------------------------------------------------
libfabric.changes: same change

Old:
----
  libfabric-1.11.1.0.6c51de3d7817.tar.bz2

New:
----
  libfabric-1.11.2.0.0c28dc5a5083.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ fabtests.spec ++++++
--- /var/tmp/diff_new_pack.Ksvl3m/_old  2021-02-22 14:22:24.423552180 +0100
+++ /var/tmp/diff_new_pack.Ksvl3m/_new  2021-02-22 14:22:24.423552180 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package fabtests
 #
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,10 +16,10 @@
 #
 
 
-%define git_ver .0.6c51de3d7817
+%define git_ver .0.0c28dc5a5083
 
 Name:           fabtests
-Version:        1.11.1
+Version:        1.11.2
 Release:        0
 Summary:        Test suite for libfabric API
 License:        BSD-2-Clause OR GPL-2.0-only

++++++ libfabric.spec ++++++
--- /var/tmp/diff_new_pack.Ksvl3m/_old  2021-02-22 14:22:24.451552207 +0100
+++ /var/tmp/diff_new_pack.Ksvl3m/_new  2021-02-22 14:22:24.451552207 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package libfabric
 #
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,13 +17,13 @@
 
 
 #
-%define git_ver .0.6c51de3d7817
+%define git_ver .0.0c28dc5a5083
 
 Name:           libfabric
-Version:        1.11.1
+Version:        1.11.2
 Release:        0
 Summary:        User-space RDMA Fabric Interfaces
-License:        GPL-2.0-only OR BSD-2-Clause
+License:        BSD-2-Clause OR GPL-2.0-only
 Group:          Development/Libraries/C and C++
 Source:         %{name}-%{version}%{git_ver}.tar.bz2
 Source1:        baselibs.conf
@@ -57,7 +57,6 @@
 libfabric provides a user-space API to access high-performance fabric
 services, such as RDMA. This package contains the runtime library.
 
-
 %package        devel
 Summary:        Development files for the libfabric library
 Group:          Development/Libraries/C and C++

++++++ _service ++++++
--- /var/tmp/diff_new_pack.Ksvl3m/_old  2021-02-22 14:22:24.487552242 +0100
+++ /var/tmp/diff_new_pack.Ksvl3m/_new  2021-02-22 14:22:24.491552246 +0100
@@ -8,7 +8,7 @@
     <param name="versionformat">@PARENT_TAG@.@TAG_OFFSET@.%h</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="versionrewrite-replacement">\1</param>
-    <param name="revision">6c51de3d7817706af025fe36c02afd532e70ac1f</param>
+    <param name="revision">0c28dc5a5083687ff096a4d86dea3f2b5a5f6a6a</param>
   </service>
   <service name="recompress" mode="disabled">
     <param name="file">libfabric*.tar</param>

++++++ libfabric-1.11.1.0.6c51de3d7817.tar.bz2 -> 
libfabric-1.11.2.0.0c28dc5a5083.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libfabric-1.11.1.0.6c51de3d7817/.travis.yml 
new/libfabric-1.11.2.0.0c28dc5a5083/.travis.yml
--- old/libfabric-1.11.1.0.6c51de3d7817/.travis.yml     2020-10-09 
20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/.travis.yml     2020-12-15 
12:12:57.000000000 +0100
@@ -6,6 +6,7 @@
 os:
     - linux
     - osx
+osx_image: xcode12.2
 addons:
     apt:
         packages:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libfabric-1.11.1.0.6c51de3d7817/AUTHORS 
new/libfabric-1.11.2.0.0c28dc5a5083/AUTHORS
--- old/libfabric-1.11.1.0.6c51de3d7817/AUTHORS 2020-10-09 20:33:11.000000000 
+0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/AUTHORS 2020-12-15 12:12:57.000000000 
+0100
@@ -78,6 +78,7 @@
 Jerome Berryhill <jerome.berryh...@intel.com>
 Jerome Boyd Berryhill <jeromeberryh...@intel.com>
 Jerome Soumagne <jsouma...@hdfgroup.org>
+Jiakun Yan <jiakunyan1...@gmail.com>
 Jianxin Xiong <jianxin.xi...@intel.com>
 Jie Zhang <zhn...@amazon.com>
 Jim Snow <jim.m.s...@intel.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libfabric-1.11.1.0.6c51de3d7817/COPYING 
new/libfabric-1.11.2.0.0c28dc5a5083/COPYING
--- old/libfabric-1.11.1.0.6c51de3d7817/COPYING 2020-10-09 20:33:11.000000000 
+0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/COPYING 2020-12-15 12:12:57.000000000 
+0100
@@ -3,7 +3,7 @@
 BSD license or the GNU General Public License (GPL) Version
 2, both included below.
 
-Copyright (c) 2015-2019 Intel Corporation.  All rights reserved.
+Copyright (c) 2015-2020 Intel Corporation.  All rights reserved.
 Copyright (c) 2015-2019 Cisco Systems, Inc.  All rights reserved.
 
 ==================================================================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libfabric-1.11.1.0.6c51de3d7817/Makefile.am 
new/libfabric-1.11.2.0.0c28dc5a5083/Makefile.am
--- old/libfabric-1.11.1.0.6c51de3d7817/Makefile.am     2020-10-09 
20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/Makefile.am     2020-12-15 
12:12:57.000000000 +0100
@@ -79,6 +79,7 @@
 
 
 if MACOS
+common_srcs += src/osx/osd.c
 common_srcs += src/unix/osd.c
 common_srcs += include/osx/osd.h
 common_srcs += include/unix/osd.h
@@ -183,7 +184,7 @@
 src_libfabric_la_DEPENDENCIES = libfabric.map
 
 if !EMBEDDED
-src_libfabric_la_LDFLAGS += -version-info 15:1:14
+src_libfabric_la_LDFLAGS += -version-info 15:2:14
 endif
 src_libfabric_la_LDFLAGS += -export-dynamic \
                           $(libfabric_version_script)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libfabric-1.11.1.0.6c51de3d7817/NEWS.md 
new/libfabric-1.11.2.0.0c28dc5a5083/NEWS.md
--- old/libfabric-1.11.1.0.6c51de3d7817/NEWS.md 2020-10-09 20:33:11.000000000 
+0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/NEWS.md 2020-12-15 12:12:57.000000000 
+0100
@@ -5,7 +5,50 @@
 bug fixes (and other actions) for each version of Libfabric since
 version 1.0.
 
-v1.11.1, Fri Oct 9, 2021
+v1.11.2, Tue Dec 15, 2020
+=========================
+
+## Core
+
+- Handle data transfers > 4GB on OS X over tcp sockets
+- Fixed spelling and syntax in man pages
+- Fix pmem instruction checks
+
+## EFA
+
+- Use memory registration for emulated read protocol
+- Update send paths to use app memory descriptor if available
+- Remove unneeded check for local memory registration
+- Do not install fork handler if EFA is not used
+- Fix medium message RTM protocol
+- Fix memory registration leak in error path
+- Fix posting of REQ packets when using shm provider
+
+## RxM
+
+- Fix provider initialization when built as a dynamic library
+
+## SHM
+
+- Reverts SAR buffer locking patch
+- Include correct header file for process_vm_readv/writev syscalls
+- Skip atomic fetch processing for non-fetch operations
+
+## TCP
+
+- Fix swapping of address and CQ data in RMA inject path
+
+## Util
+
+- Fix error code returned for invalid AV flags
+- Fix a bug finding the end of a page when the address is aligned
+
+## Verbs
+
+- Fix build warning in XRC CM log messages
+- Fix build warnings in debug macros
+
+v1.11.1, Fri Oct 9, 2020
 ========================
 
 ## Core
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libfabric-1.11.1.0.6c51de3d7817/configure.ac 
new/libfabric-1.11.2.0.0c28dc5a5083/configure.ac
--- old/libfabric-1.11.1.0.6c51de3d7817/configure.ac    2020-10-09 
20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/configure.ac    2020-12-15 
12:12:57.000000000 +0100
@@ -7,7 +7,7 @@
 dnl Process this file with autoconf to produce a configure script.
 
 AC_PREREQ([2.60])
-AC_INIT([libfabric], [1.11.1], [of...@lists.openfabrics.org])
+AC_INIT([libfabric], [1.11.2], [of...@lists.openfabrics.org])
 AC_CONFIG_SRCDIR([src/fabric.c])
 AC_CONFIG_AUX_DIR(config)
 AC_CONFIG_MACRO_DIR(config)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libfabric-1.11.1.0.6c51de3d7817/fabtests/Makefile.am 
new/libfabric-1.11.2.0.0c28dc5a5083/fabtests/Makefile.am
--- old/libfabric-1.11.1.0.6c51de3d7817/fabtests/Makefile.am    2020-10-09 
20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/fabtests/Makefile.am    2020-12-15 
12:12:57.000000000 +0100
@@ -9,6 +9,7 @@
 
 if FREEBSD
 os_excludes = -f ./test_configs/freebsd.exclude
+AM_CFLAGS += -I$(srcdir)/include/freebsd
 endif
 
 bin_PROGRAMS = \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/fabtests/common/shared.c 
new/libfabric-1.11.2.0.0c28dc5a5083/fabtests/common/shared.c
--- old/libfabric-1.11.1.0.6c51de3d7817/fabtests/common/shared.c        
2020-10-09 20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/fabtests/common/shared.c        
2020-12-15 12:12:57.000000000 +0100
@@ -1520,8 +1520,6 @@
 
 static void ft_close_fids(void)
 {
-       if (mr != &no_mr)
-               FT_CLOSE_FID(mr);
        FT_CLOSE_FID(mc);
        FT_CLOSE_FID(alias_ep);
        FT_CLOSE_FID(ep);
@@ -1535,6 +1533,8 @@
        FT_CLOSE_FID(rxcntr);
        FT_CLOSE_FID(txcntr);
        FT_CLOSE_FID(pollset);
+       if (mr != &no_mr)
+               FT_CLOSE_FID(mr);
        FT_CLOSE_FID(av);
        FT_CLOSE_FID(eq);
        FT_CLOSE_FID(domain);
@@ -2639,7 +2639,7 @@
 
                FT_POST(fi_tsendmsg, ft_progress, txcq, tx_seq,
                        &tx_cq_cntr, "tsendmsg", ep, &tmsg,
-                       FI_INJECT | FI_TRANSMIT_COMPLETE);
+                       FI_TRANSMIT_COMPLETE);
        } else {
                struct fi_msg msg;
 
@@ -2652,7 +2652,7 @@
 
                FT_POST(fi_sendmsg, ft_progress, txcq, tx_seq,
                        &tx_cq_cntr, "sendmsg", ep, &msg,
-                       FI_INJECT | FI_TRANSMIT_COMPLETE);
+                       FI_TRANSMIT_COMPLETE);
        }
 
        ret = ft_get_tx_comp(tx_seq);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/fabtests/configure.ac 
new/libfabric-1.11.2.0.0c28dc5a5083/fabtests/configure.ac
--- old/libfabric-1.11.1.0.6c51de3d7817/fabtests/configure.ac   2020-10-09 
20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/fabtests/configure.ac   2020-12-15 
12:12:57.000000000 +0100
@@ -5,7 +5,7 @@
 dnl Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.57)
-AC_INIT([fabtests], [1.11.1], [of...@lists.openfabrics.org])
+AC_INIT([fabtests], [1.11.2], [of...@lists.openfabrics.org])
 AC_CONFIG_AUX_DIR(config)
 AC_CONFIG_MACRO_DIR(config)
 AC_CONFIG_HEADERS(config.h)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/fabtests/include/freebsd/malloc.h 
new/libfabric-1.11.2.0.0c28dc5a5083/fabtests/include/freebsd/malloc.h
--- old/libfabric-1.11.1.0.6c51de3d7817/fabtests/include/freebsd/malloc.h       
1970-01-01 01:00:00.000000000 +0100
+++ new/libfabric-1.11.2.0.0c28dc5a5083/fabtests/include/freebsd/malloc.h       
2020-12-15 12:12:57.000000000 +0100
@@ -0,0 +1,44 @@
+/*
+ * (C) Copyright 2020 Hewlett Packard Enterprise Development LP
+ *
+ * This software is available to you under a choice of one of two
+ * licenses.  You may choose to be licensed under the terms of the GNU
+ * General Public License (GPL) Version 2, available from the file
+ * COPYING in the main directory of this source tree, or the
+ * BSD license below:
+ *
+ *     Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *      - Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *
+ *      - Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#ifndef _FABTESTS_FREEBSD_MALLOC_H_
+#define _FABTESTS_FREEBSD_MALLOC_H_
+
+#define M_MMAP_THRESHOLD    -3
+
+int mallopt(int param, int value)
+{
+       /* Not supported. */
+       return 0;
+}
+
+#endif /* _FABTESTS_FREEBSD_MALLOC_H_ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/fabtests/man/fabtests.7.md 
new/libfabric-1.11.2.0.0c28dc5a5083/fabtests/man/fabtests.7.md
--- old/libfabric-1.11.1.0.6c51de3d7817/fabtests/man/fabtests.7.md      
2020-10-09 20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/fabtests/man/fabtests.7.md      
2020-12-15 12:12:57.000000000 +0100
@@ -51,7 +51,7 @@
 : A basic datagram endpoint example.
 
 *fi_dgram_waitset*
-: Transfers datagrams using waitsets for completion notifcation.
+: Transfers datagrams using waitsets for completion notification.
 
 *fi_inj_complete*
 : Sends messages using the FI_INJECT_COMPLETE operation flag.
@@ -64,7 +64,7 @@
 
 *fi_msg_epoll*
 : Transfers messages with completion queues configured to use file
-  descriptors as wait objetcts.  The file descriptors are retrieved
+  descriptors as wait objects.  The file descriptors are retrieved
   by the program and used directly with the Linux epoll API.
 
 *fi_msg_sockets*
@@ -121,7 +121,7 @@
 
 *fi_resmgmt_test*
 : Tests the resource management enabled feature.  This verifies that the
-  provider prevents applications from overruning local and remote command
+  provider prevents applications from overrunning local and remote command
   queues and completion queues.  This corresponds to setting the domain
   attribute resource_mgmt to FI_RM_ENABLED.
 
@@ -219,10 +219,10 @@
 
 This test runs a series of tests over multiple formats and patterns to help
 validate at scale. The patterns are an all to all, one to all, all to one and
-a ring. The tests also run accross multiple capabilites, such as messages, rma,
-atomics, and tagged messages. Currently, there is no option to run these 
+a ring. The tests also run across multiple capabilities, such as messages, rma,
+atomics, and tagged messages. Currently, there is no option to run these
 capabilities and patterns independently, however the test is short enough to be
-all run at once.   
+all run at once.
 
 # Ubertest
 
@@ -232,7 +232,7 @@
 result, a full ubertest run can take a significant amount of time.  Because
 ubertest iterates over input variables, it relies on a test configuration
 file for control, rather than extensive command line options that are used
-by other fabtests.  A configuration file must be constructured for each
+by other fabtests.  A configuration file must be constructed for each
 provider.  Example test configurations are at test_configs.
 
 *fi_ubertest*
@@ -315,10 +315,10 @@
 *datatype*
 : For FT_CAP_ATOMIC: FI_INT8, FI_UINT8, FI_INT16, FI_UINT16, FI_INT32,
   FI_UINT32, FI_INT64, FI_UINT64, FI_FLOAT, FI_DOUBLE, FI_FLOAT_COMPLEX,
-  FI_DOUBLE_COMPLEX, FI_LONG_DOUBLE, FI_LONG_DOUBLE_COMPLE
+  FI_DOUBLE_COMPLEX, FI_LONG_DOUBLE, FI_LONG_DOUBLE_COMPLEX
 
 *msg_flags - values OR'ed together*
-: For FT_FUNC_XXXMSG: FI_REMOTE_CQ_DATA, FI_COMPLETION
+: For FT_FUNC_[SEND,WRITE,READ,ATOMIC]MSG: FI_REMOTE_CQ_DATA, FI_COMPLETION
 
 *rx_cq_bind_flags - values OR'ed together*
 : FI_SELECTIVE_COMPLETION
@@ -369,6 +369,10 @@
 : Use the specified endpoint type for the test.  Valid options are msg,
   dgram, and rdm.  The default endpoint type is rdm.
 
+*-D <device_name>*
+: Allocate data buffers on the specified device, rather than in host
+  memory.  Valid options are ze.
+
 *-a <address vector name>*
 : The name of a shared address vector.  This option only applies to tests
   that support shared address vectors.
@@ -460,12 +464,12 @@
 
 ## Run multinode tests
 
-       Server and clients are invoked with the same command: 
+       Server and clients are invoked with the same command:
                fi_multinode -n <number of processes> -s <server_addr> -C <mode>
-       
-       A process on the server must be started before any of the clients can 
be started 
+
+       A process on the server must be started before any of the clients can 
be started
        succesfully. -C lists the mode that the tests will run in. Currently 
the options are
-  for rma and msg. If not provided, the test will default to msg. 
+  for rma and msg. If not provided, the test will default to msg.
 
 ## Run fi_ubertest
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/fabtests/multinode/src/core.c 
new/libfabric-1.11.2.0.0c28dc5a5083/fabtests/multinode/src/core.c
--- old/libfabric-1.11.1.0.6c51de3d7817/fabtests/multinode/src/core.c   
2020-10-09 20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/fabtests/multinode/src/core.c   
2020-12-15 12:12:57.000000000 +0100
@@ -52,6 +52,7 @@
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <assert.h>
+#include <hmem.h>
 
 char *tx_barrier;
 char *rx_barrier;
@@ -170,7 +171,7 @@
                goto err;
        }
 
-       if (fi->domain_attr->mr_mode & FI_MR_VIRT_ADDR) 
+       if (fi->domain_attr->mr_mode & FI_MR_VIRT_ADDR)
                remote->addr = (uintptr_t) rx_buf;
        else
                remote->addr = 0;
@@ -323,20 +324,20 @@
 
                snprintf((char*) tx_buf + tx_size * state.cur_target, tx_size,
                        "Hello World! from %zu to %i on the %zuth iteration, %s 
test",
-                       pm_job.my_rank, state.cur_target, 
+                       pm_job.my_rank, state.cur_target,
                        (size_t) tx_seq, pattern->name);
 
                while (1) {
-                       ret = fi_write(ep, 
+                       ret = fi_write(ep,
                                tx_buf + tx_size * state.cur_target,
-                               opts.transfer_size, mr_desc, 
-                               pm_job.fi_addrs[state.cur_target], 
+                               opts.transfer_size, mr_desc,
+                               pm_job.fi_addrs[state.cur_target],
                                pm_job.multi_iovs[state.cur_target].addr,
-                               pm_job.multi_iovs[state.cur_target].key, 
+                               pm_job.multi_iovs[state.cur_target].key,
                                &tx_ctx_arr[state.tx_window].context);
                        if (!ret)
                                break;
-               
+
                        if (ret != -FI_EAGAIN) {
                                printf("RMA write failed");
                                return ret;
@@ -349,7 +350,7 @@
                        }
                }
                tx_seq++;
-       
+
                state.sends_posted++;
                state.tx_window--;
        }
@@ -393,7 +394,7 @@
        }
 
        for (i = 0; i < pm_job.num_ranks; i++) {
-               ret = ft_post_tx_buf(ep, pm_job.fi_addrs[i], 0, 
+               ret = ft_post_tx_buf(ep, pm_job.fi_addrs[i], 0,
                                     NO_CQ_DATA, &barrier_tx_ctx[i],
                                     tx_buf, mr_desc, 0);
                if (ret)
@@ -404,7 +405,7 @@
        if (ret)
                return ret;
 
-       ret = ft_get_rx_comp(rx_seq);   
+       ret = ft_get_rx_comp(rx_seq);
 
        return ret;
 }
@@ -482,7 +483,7 @@
        ret = multi_setup_fabric(argc, argv);
        if (ret)
                return ret;
-       
+
 
        for (i = 0; i < NUM_TESTS && !ret; i++) {
                printf("starting %s... ", patterns[i].name);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/include/freebsd/osd.h 
new/libfabric-1.11.2.0.0c28dc5a5083/include/freebsd/osd.h
--- old/libfabric-1.11.1.0.6c51de3d7817/include/freebsd/osd.h   2020-10-09 
20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/include/freebsd/osd.h   2020-12-15 
12:12:57.000000000 +0100
@@ -95,6 +95,62 @@
        return -FI_ENOSYS;
 }
 
+static inline ssize_t ofi_read_socket(SOCKET fd, void *buf, size_t count)
+{
+       return read(fd, buf, count);
+}
+
+static inline ssize_t ofi_write_socket(SOCKET fd, const void *buf, size_t 
count)
+{
+       return write(fd, buf, count);
+}
+
+static inline ssize_t ofi_recv_socket(SOCKET fd, void *buf, size_t count,
+                                     int flags)
+{
+       return recv(fd, buf, count, flags);
+}
+
+static inline ssize_t ofi_recvfrom_socket(SOCKET fd, void *buf, size_t count, 
int flags,
+                                         struct sockaddr *from, socklen_t 
*fromlen)
+{
+       return recvfrom(fd, buf, count, flags, from, fromlen);
+}
+
+static inline ssize_t ofi_send_socket(SOCKET fd, const void *buf, size_t count,
+                                     int flags)
+{
+       return send(fd, buf, count, flags);
+}
+
+static inline ssize_t ofi_sendto_socket(SOCKET fd, const void *buf, size_t 
count, int flags,
+                                       const struct sockaddr *to, socklen_t 
tolen)
+{
+       return sendto(fd, buf, count, flags, to, tolen);
+}
+
+static inline ssize_t ofi_writev_socket(SOCKET fd, struct iovec *iov, size_t 
iov_cnt)
+{
+       return writev(fd, iov, iov_cnt);
+}
+
+static inline ssize_t ofi_readv_socket(SOCKET fd, struct iovec *iov, int 
iov_cnt)
+{
+       return readv(fd, iov, iov_cnt);
+}
+
+static inline ssize_t
+ofi_sendmsg_tcp(SOCKET fd, const struct msghdr *msg, int flags)
+{
+       return sendmsg(fd, msg, flags);
+}
+
+static inline ssize_t
+ofi_recvmsg_tcp(SOCKET fd, struct msghdr *msg, int flags)
+{
+       return recvmsg(fd, msg, flags);
+}
+
 #endif /* _FREEBSD_OSD_H_ */
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libfabric-1.11.1.0.6c51de3d7817/include/linux/osd.h 
new/libfabric-1.11.2.0.0c28dc5a5083/include/linux/osd.h
--- old/libfabric-1.11.1.0.6c51de3d7817/include/linux/osd.h     2020-10-09 
20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/include/linux/osd.h     2020-12-15 
12:12:57.000000000 +0100
@@ -41,6 +41,8 @@
 #include <sys/mman.h>
 #include <string.h>
 #include <assert.h>
+#include <unistd.h>
+#include <sys/syscall.h>
 
 #include <ifaddrs.h>
 #include "unix/osd.h"
@@ -125,4 +127,60 @@
                       remote_iov, riovcnt, flags);
 }
 
+static inline ssize_t ofi_read_socket(SOCKET fd, void *buf, size_t count)
+{
+       return read(fd, buf, count);
+}
+
+static inline ssize_t ofi_write_socket(SOCKET fd, const void *buf, size_t 
count)
+{
+       return write(fd, buf, count);
+}
+
+static inline ssize_t ofi_recv_socket(SOCKET fd, void *buf, size_t count,
+                                     int flags)
+{
+       return recv(fd, buf, count, flags);
+}
+
+static inline ssize_t ofi_recvfrom_socket(SOCKET fd, void *buf, size_t count, 
int flags,
+                                         struct sockaddr *from, socklen_t 
*fromlen)
+{
+       return recvfrom(fd, buf, count, flags, from, fromlen);
+}
+
+static inline ssize_t ofi_send_socket(SOCKET fd, const void *buf, size_t count,
+                                     int flags)
+{
+       return send(fd, buf, count, flags);
+}
+
+static inline ssize_t ofi_sendto_socket(SOCKET fd, const void *buf, size_t 
count, int flags,
+                                       const struct sockaddr *to, socklen_t 
tolen)
+{
+       return sendto(fd, buf, count, flags, to, tolen);
+}
+
+static inline ssize_t ofi_writev_socket(SOCKET fd, struct iovec *iov, size_t 
iov_cnt)
+{
+       return writev(fd, iov, iov_cnt);
+}
+
+static inline ssize_t ofi_readv_socket(SOCKET fd, struct iovec *iov, int 
iov_cnt)
+{
+       return readv(fd, iov, iov_cnt);
+}
+
+static inline ssize_t
+ofi_sendmsg_tcp(SOCKET fd, const struct msghdr *msg, int flags)
+{
+       return sendmsg(fd, msg, flags);
+}
+
+static inline ssize_t
+ofi_recvmsg_tcp(SOCKET fd, struct msghdr *msg, int flags)
+{
+       return recvmsg(fd, msg, flags);
+}
+
 #endif /* _LINUX_OSD_H_ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libfabric-1.11.1.0.6c51de3d7817/include/ofi.h 
new/libfabric-1.11.2.0.0c28dc5a5083/include/ofi.h
--- old/libfabric-1.11.1.0.6c51de3d7817/include/ofi.h   2020-10-09 
20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/include/ofi.h   2020-12-15 
12:12:57.000000000 +0100
@@ -172,13 +172,15 @@
 /*
  * CPU specific features
  */
+
+/* X86_64 */
 enum {
-       OFI_CLWB_REG            = 2,
+       OFI_CLWB_REG            = 1,
        OFI_CLWB_BIT            = (1 << 24),
        OFI_CLFLUSHOPT_REG      = 1,
-       OFI_CLFLUSHOPT_BIT      = (1 << 24),
+       OFI_CLFLUSHOPT_BIT      = (1 << 23),
        OFI_CLFLUSH_REG         = 3,
-       OFI_CLFLUSH_BIT         = (1 << 23),
+       OFI_CLFLUSH_BIT         = (1 << 19),
 };
 
 int ofi_cpu_supports(unsigned func, unsigned reg, unsigned bit);
@@ -263,7 +265,8 @@
 
 static inline void *ofi_get_page_end(const void *addr, size_t page_size)
 {
-       return ofi_get_page_start((const char *) addr + page_size -1, 
page_size);
+       return (void *)((uintptr_t)ofi_get_page_start((const char *)addr
+                       + page_size, page_size) - 1);
 }
 
 static inline size_t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libfabric-1.11.1.0.6c51de3d7817/include/osx/osd.h 
new/libfabric-1.11.2.0.0c28dc5a5083/include/osx/osd.h
--- old/libfabric-1.11.1.0.6c51de3d7817/include/osx/osd.h       2020-10-09 
20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/include/osx/osd.h       2020-12-15 
12:12:57.000000000 +0100
@@ -47,6 +47,8 @@
 
 #include <ifaddrs.h>
 
+#include <limits.h>
+
 #include "unix/osd.h"
 #include "rdma/fi_errno.h"
 #include "config.h"
@@ -115,6 +117,51 @@
        return -FI_ENOSYS;
 }
 
+static inline ssize_t
+ofi_recv_socket(SOCKET fd, void *buf, size_t count, int flags)
+{
+       size_t len = count > INT_MAX ? INT_MAX : count;
+       return recv(fd, buf, len, flags);
+}
+
+static inline ssize_t
+ofi_send_socket(SOCKET fd, const void *buf, size_t count, int flags)
+{
+       size_t len = count > INT_MAX ? INT_MAX : count;
+       return send(fd, buf, len, flags);
+}
+
+static inline ssize_t ofi_read_socket(SOCKET fd, void *buf, size_t count)
+{
+       return ofi_recv_socket(fd, buf, count, 0);
+}
+
+static inline ssize_t ofi_write_socket(SOCKET fd, const void *buf, size_t 
count)
+{
+       return ofi_send_socket(fd, buf, count, 0);
+}
+
+static inline ssize_t
+ofi_recvfrom_socket(SOCKET fd, void *buf, size_t count, int flags,
+                   struct sockaddr *from, socklen_t *fromlen)
+{
+       size_t len = count > INT_MAX ? INT_MAX : count;
+       return recvfrom(fd, buf, len, flags, from, fromlen);
+}
+
+static inline ssize_t
+ofi_sendto_socket(SOCKET fd, const void *buf, size_t count, int flags,
+                 const struct sockaddr *to, socklen_t tolen)
+{
+       size_t len = count > INT_MAX ? INT_MAX : count;
+       return sendto(fd, buf, len, flags, to, tolen);
+}
+
+ssize_t ofi_writev_socket(SOCKET fd, const struct iovec *iovec, size_t 
iov_cnt);
+ssize_t ofi_readv_socket(SOCKET fd, const struct iovec *iovec, size_t iov_cnt);
+ssize_t ofi_sendmsg_tcp(SOCKET fd, const struct msghdr *msg, int flags);
+ssize_t ofi_recvmsg_tcp(SOCKET fd, struct msghdr *msg, int flags);
+
 #ifdef __cplusplus
 }
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/include/rdma/fabric.h 
new/libfabric-1.11.2.0.0c28dc5a5083/include/rdma/fabric.h
--- old/libfabric-1.11.1.0.6c51de3d7817/include/rdma/fabric.h   2020-10-09 
20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/include/rdma/fabric.h   2020-12-15 
12:12:57.000000000 +0100
@@ -80,7 +80,7 @@
 
 #define FI_MAJOR_VERSION 1
 #define FI_MINOR_VERSION 11
-#define FI_REVISION_VERSION 1
+#define FI_REVISION_VERSION 2
 
 enum {
        FI_PATH_MAX             = 256,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libfabric-1.11.1.0.6c51de3d7817/include/unix/osd.h 
new/libfabric-1.11.2.0.0c28dc5a5083/include/unix/osd.h
--- old/libfabric-1.11.1.0.6c51de3d7817/include/unix/osd.h      2020-10-09 
20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/include/unix/osd.h      2020-12-15 
12:12:57.000000000 +0100
@@ -119,56 +119,6 @@
        return socket(domain, type, protocol);
 }
 
-static inline ssize_t ofi_read_socket(SOCKET fd, void *buf, size_t count)
-{
-       return read(fd, buf, count);
-}
-
-static inline ssize_t ofi_write_socket(SOCKET fd, const void *buf, size_t 
count)
-{
-       return write(fd, buf, count);
-}
-
-static inline ssize_t ofi_recv_socket(SOCKET fd, void *buf, size_t count,
-                                     int flags)
-{
-       return recv(fd, buf, count, flags);
-}
-
-static inline ssize_t ofi_recvfrom_socket(SOCKET fd, void *buf, size_t count, 
int flags,
-                                         struct sockaddr *from, socklen_t 
*fromlen)
-{
-       return recvfrom(fd, buf, count, flags, from, fromlen);
-}
-
-static inline ssize_t ofi_send_socket(SOCKET fd, const void *buf, size_t count,
-                                     int flags)
-{
-       return send(fd, buf, count, flags);
-}
-
-static inline ssize_t ofi_sendto_socket(SOCKET fd, const void *buf, size_t 
count, int flags,
-                                       const struct sockaddr *to, socklen_t 
tolen)
-{
-       return sendto(fd, buf, count, flags, to, tolen);
-}
-
-static inline ssize_t ofi_writev_socket(SOCKET fd, struct iovec *iov, size_t 
iov_cnt)
-{
-       return writev(fd, iov, iov_cnt);
-}
-
-static inline ssize_t ofi_readv_socket(SOCKET fd, struct iovec *iov, int 
iov_cnt)
-{
-       return readv(fd, iov, iov_cnt);
-}
-
-static inline ssize_t
-ofi_sendmsg_tcp(SOCKET fd, const struct msghdr *msg, int flags)
-{
-       return sendmsg(fd, msg, flags);
-}
-
 static inline ssize_t
 ofi_sendmsg_udp(SOCKET fd, const struct msghdr *msg, int flags)
 {
@@ -176,12 +126,6 @@
 }
 
 static inline ssize_t
-ofi_recvmsg_tcp(SOCKET fd, struct msghdr *msg, int flags)
-{
-       return recvmsg(fd, msg, flags);
-}
-
-static inline ssize_t
 ofi_recvmsg_udp(SOCKET fd, struct msghdr *msg, int flags)
 {
        return recvmsg(fd, msg, flags);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/include/windows/config.h 
new/libfabric-1.11.2.0.0c28dc5a5083/include/windows/config.h
--- old/libfabric-1.11.1.0.6c51de3d7817/include/windows/config.h        
2020-10-09 20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/include/windows/config.h        
2020-12-15 12:12:57.000000000 +0100
@@ -165,7 +165,7 @@
 #define PACKAGE_TARNAME PACKAGE
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "1.11.1"
+#define PACKAGE_VERSION "1.11.2"
 
 /* Define to the full name and version of this package. */
 #define PACKAGE_STRING PACKAGE_NAME " " PACKAGE_VERSION
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/efa_fabric.c 
new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/efa_fabric.c
--- old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/efa_fabric.c       
2020-10-09 20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/efa_fabric.c       
2020-12-15 12:12:57.000000000 +0100
@@ -998,6 +998,15 @@
        const struct fi_info *info;
        struct efa_fabric *fab;
        int ret = 0;
+
+       ret = pthread_atfork(efa_atfork_callback, NULL, NULL);
+       if (ret) {
+               EFA_WARN(FI_LOG_FABRIC,
+                        "Unable to register atfork callback: %s\n",
+                        strerror(-ret));
+               return -ret;
+       }
+
        fab = calloc(1, sizeof(*fab));
        if (!fab)
                return -FI_ENOMEM;
@@ -1119,13 +1128,6 @@
                efa_set_rdmav_hugepages_safe = 1;
        }
 
-       err = pthread_atfork(efa_atfork_callback, NULL, NULL);
-       if (err) {
-               EFA_WARN(FI_LOG_FABRIC,
-                        "Unable to register atfork callback\n");
-               return NULL;
-       }
-
        if (efa_init_info(&efa_util_prov.info))
                return NULL;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr.h 
new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr.h
--- old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr.h  2020-10-09 
20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr.h  2020-12-15 
12:12:57.000000000 +0100
@@ -497,7 +497,6 @@
        struct fid_domain *rdm_domain;
        size_t mtu_size;
        size_t addrlen;
-       uint8_t mr_local;
        uint8_t rxr_mr_local;
        uint64_t rdm_mode;
        int do_progress;
@@ -961,14 +960,6 @@
        return container_of(ep->util_ep.domain, struct rxr_domain, util_domain);
 }
 
-static inline uint8_t rxr_ep_mr_local(struct rxr_ep *ep)
-{
-       struct rxr_domain *domain = container_of(ep->util_ep.domain,
-                                                struct rxr_domain,
-                                                util_domain);
-       return domain->mr_local;
-}
-
 /*
  * today we have only cq res check, in future we will have ctx, and other
  * resource check as well.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_atomic.c 
new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_atomic.c
--- old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_atomic.c   
2020-10-09 20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_atomic.c   
2020-12-15 12:12:57.000000000 +0100
@@ -140,9 +140,9 @@
        tx_entry->msg_id = (peer->next_msg_id != ~0) ?
                            peer->next_msg_id++ : ++peer->next_msg_id;
 
-       err = rxr_pkt_post_ctrl_or_queue(rxr_ep, RXR_TX_ENTRY,
-                                       tx_entry, req_pkt_type_list[op],
-                                       0);
+       err = rxr_pkt_post_ctrl(rxr_ep, RXR_TX_ENTRY,
+                               tx_entry, req_pkt_type_list[op],
+                               0);
 
        if (OFI_UNLIKELY(err)) {
                rxr_release_tx_entry(rxr_ep, tx_entry);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_cq.c 
new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_cq.c
--- old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_cq.c       
2020-10-09 20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_cq.c       
2020-12-15 12:12:57.000000000 +0100
@@ -827,7 +827,7 @@
        if (tx_entry->state == RXR_TX_SEND)
                dlist_remove(&tx_entry->entry);
 
-       if (efa_is_cache_available(efa_domain) && rxr_ep_mr_local(ep)) {
+       if (efa_is_cache_available(efa_domain)) {
                ret = rxr_tx_entry_mr_dereg(tx_entry);
                if (OFI_UNLIKELY(ret)) {
                        FI_WARN(&rxr_prov, FI_LOG_MR,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_domain.c 
new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_domain.c
--- old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_domain.c   
2020-10-09 20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_domain.c   
2020-12-15 12:12:57.000000000 +0100
@@ -211,7 +211,6 @@
                                info->src_addrlen : info->dest_addrlen;
        rxr_domain->cq_size = MAX(info->rx_attr->size + info->tx_attr->size,
                                  rxr_env.cq_size);
-       rxr_domain->mr_local = ofi_mr_local(rdm_info);
        rxr_domain->resource_mgmt = rdm_info->domain_attr->resource_mgmt;
 
        ret = ofi_domain_init(fabric, info, &rxr_domain->util_domain, context);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_ep.c 
new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_ep.c
--- old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_ep.c       
2020-10-09 20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_ep.c       
2020-12-15 12:12:57.000000000 +0100
@@ -321,7 +321,7 @@
                        dlist_insert_tail(&rx_pkt_entry->dbg_entry,
                                          &ep->rx_posted_buf_list);
 #endif
-               desc = rxr_ep_mr_local(ep) ? fi_mr_desc(rx_pkt_entry->mr) : 
NULL;
+               desc = fi_mr_desc(rx_pkt_entry->mr);
                msg.desc = &desc;
                /*
                 * Use the actual receive sizes from the application
@@ -1137,10 +1137,8 @@
                .alignment      = RXR_BUF_POOL_ALIGNMENT,
                .max_cnt        = chunk_count,
                .chunk_cnt      = chunk_count,
-               .alloc_fn       = rxr_ep_mr_local(ep) ?
-                                       rxr_buf_region_alloc_hndlr : NULL,
-               .free_fn        = rxr_ep_mr_local(ep) ?
-                                       rxr_buf_region_free_hndlr : NULL,
+               .alloc_fn       = rxr_buf_region_alloc_hndlr,
+               .free_fn        = rxr_buf_region_free_hndlr,
                .init_fn        = NULL,
                .context        = rxr_ep_domain(ep),
                .flags          = flags,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_msg.c 
new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_msg.c
--- old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_msg.c      
2020-10-09 20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_msg.c      
2020-12-15 12:12:57.000000000 +0100
@@ -71,8 +71,8 @@
        assert(tagged == 0 || tagged == 1);
 
        if (tx_entry->total_len == 0)
-               return rxr_pkt_post_ctrl_or_queue(rxr_ep, RXR_TX_ENTRY, 
tx_entry,
-                                                         RXR_EAGER_MSGRTM_PKT 
+ tagged, 0);
+               return rxr_pkt_post_ctrl(rxr_ep, RXR_TX_ENTRY, tx_entry,
+                                        RXR_EAGER_MSGRTM_PKT + tagged, 0);
 
        /* Currently cuda data must be sent using read message protocol.
         * However, because read message protocol is an extra feature, we cannot
@@ -94,8 +94,8 @@
                return -FI_EOPNOTSUPP;
        }
 
-       return rxr_pkt_post_ctrl_or_queue(rxr_ep, RXR_TX_ENTRY, tx_entry,
-                                         RXR_READ_MSGRTM_PKT + tagged, 0);
+       return rxr_pkt_post_ctrl(rxr_ep, RXR_TX_ENTRY, tx_entry,
+                                RXR_READ_MSGRTM_PKT + tagged, 0);
 }
 
 ssize_t rxr_msg_post_rtm(struct rxr_ep *rxr_ep, struct rxr_tx_entry *tx_entry)
@@ -136,7 +136,7 @@
                int rtm_type = (tx_entry->total_len <= max_rtm_data_size) ? 
RXR_EAGER_MSGRTM_PKT
                                                                          : 
RXR_READ_MSGRTM_PKT;
 
-               return rxr_pkt_post_ctrl_or_queue(rxr_ep, RXR_TX_ENTRY, 
tx_entry, rtm_type + tagged, 0);
+               return rxr_pkt_post_ctrl(rxr_ep, RXR_TX_ENTRY, tx_entry, 
rtm_type + tagged, 0);
        }
 
        if (rxr_ep->use_zcpy_rx) {
@@ -159,25 +159,31 @@
 
        /* inter instance message */
        if (tx_entry->total_len <= max_rtm_data_size)
-               return rxr_pkt_post_ctrl_or_queue(rxr_ep, RXR_TX_ENTRY, 
tx_entry,
-                                                 RXR_EAGER_MSGRTM_PKT + 
tagged, 0);
+               return rxr_pkt_post_ctrl(rxr_ep, RXR_TX_ENTRY, tx_entry,
+                                        RXR_EAGER_MSGRTM_PKT + tagged, 0);
 
        if (tx_entry->total_len <= rxr_env.efa_max_medium_msg_size) {
                /* we do not check the return value of rxr_ep_init_mr_desc()
                 * because medium message works even if MR registration failed
                 */
-               if (efa_is_cache_available(efa_domain))
+               if (tx_entry->desc[0] || efa_is_cache_available(efa_domain))
                        rxr_ep_tx_init_mr_desc(rxr_domain, tx_entry, 0, 
FI_SEND);
+
+               /*
+                * we have to queue message RTM because data is sent as multiple
+                * medium RTM packets. It could happend that the first several 
packets
+                * were sent successfully, but the following packet encountered 
-FI_EAGAIN
+                */
                return rxr_pkt_post_ctrl_or_queue(rxr_ep, RXR_TX_ENTRY, 
tx_entry,
-                                                 RXR_MEDIUM_MSGRTM_PKT + 
tagged, 0);
+                                                 RXR_MEDIUM_MSGRTM_PKT + 
tagged, 0);
        }
 
        if (tx_entry->total_len >= rxr_env.efa_min_read_msg_size &&
            efa_both_support_rdma_read(rxr_ep, peer) &&
            (tx_entry->desc[0] || efa_is_cache_available(efa_domain))) {
                /* use read message protocol */
-               err = rxr_pkt_post_ctrl_or_queue(rxr_ep, RXR_TX_ENTRY, tx_entry,
-                                                RXR_READ_MSGRTM_PKT + tagged, 
0);
+               err = rxr_pkt_post_ctrl(rxr_ep, RXR_TX_ENTRY, tx_entry,
+                                       RXR_READ_MSGRTM_PKT + tagged, 0);
 
                if (err != -FI_ENOMEM)
                        return err;
@@ -192,8 +198,8 @@
        if (OFI_UNLIKELY(err))
                return err;
 
-       return rxr_pkt_post_ctrl_or_queue(rxr_ep, RXR_TX_ENTRY, tx_entry,
-                                         RXR_LONG_MSGRTM_PKT + tagged, 0);
+       return rxr_pkt_post_ctrl(rxr_ep, RXR_TX_ENTRY, tx_entry,
+                                RXR_LONG_MSGRTM_PKT + tagged, 0);
 }
 
 ssize_t rxr_msg_generic_send(struct fid_ep *ep, const struct fi_msg *msg,
@@ -235,6 +241,7 @@
        tx_entry->msg_id = peer->next_msg_id++;
        err = rxr_msg_post_rtm(rxr_ep, tx_entry);
        if (OFI_UNLIKELY(err)) {
+               rxr_tx_entry_mr_dereg(tx_entry);
                rxr_release_tx_entry(rxr_ep, tx_entry);
                peer->next_msg_id--;
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_pkt_cmd.c 
new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_pkt_cmd.c
--- old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_pkt_cmd.c  
2020-10-09 20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_pkt_cmd.c  
2020-12-15 12:12:57.000000000 +0100
@@ -57,12 +57,6 @@
        struct rxr_pkt_entry *pkt_entry;
        struct rxr_data_pkt *data_pkt;
        ssize_t ret;
-       struct efa_domain *efa_domain;
-       struct rxr_domain *rxr_domain = rxr_ep_domain(rxr_ep);
-
-       efa_domain = container_of(rxr_domain->rdm_domain, struct efa_domain,
-                                 util_domain.domain_fid);
-
 
        pkt_entry = rxr_pkt_entry_alloc(rxr_ep, rxr_ep->tx_pkt_efa_pool);
        if (OFI_UNLIKELY(!pkt_entry))
@@ -84,14 +78,7 @@
         */
        data_pkt->hdr.seg_offset = tx_entry->bytes_sent;
 
-       /*
-        * TODO: Check to see if underlying device can support CUDA
-        * registrations and fallback to rxr_ep_send_data_pkt_entry() if it does
-        * not. This should be done at init time with a CUDA reg-and-fail flag.
-        * For now, always send CUDA buffers through
-        * rxr_pkt_send_data_desc().
-        */
-       if (efa_is_cache_available(efa_domain) || 
efa_ep_is_cuda_mr(tx_entry->desc[0]))
+       if (tx_entry->desc[0])
                ret = rxr_pkt_send_data_desc(rxr_ep, tx_entry, pkt_entry);
        else
                ret = rxr_pkt_send_data(rxr_ep, tx_entry, pkt_entry);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_pkt_entry.c 
new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_pkt_entry.c
--- old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_pkt_entry.c        
2020-10-09 20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_pkt_entry.c        
2020-12-15 12:12:57.000000000 +0100
@@ -387,7 +387,7 @@
                assert(ep->use_shm);
                desc = NULL;
        } else {
-               desc = rxr_ep_mr_local(ep) ? fi_mr_desc(pkt_entry->mr) : NULL;
+               desc = fi_mr_desc(pkt_entry->mr);
        }
 
        return rxr_pkt_entry_sendv(ep, pkt_entry, addr, &iov, &desc, 1, flags);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_pkt_type_data.c 
new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_pkt_type_data.c
--- old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_pkt_type_data.c    
2020-10-09 20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_pkt_type_data.c    
2020-12-15 12:12:57.000000000 +0100
@@ -157,7 +157,7 @@
        /* Assign packet header in constructed iov */
        iov[i].iov_base = rxr_pkt_start(pkt_entry);
        iov[i].iov_len = sizeof(struct rxr_data_hdr);
-       desc[i] = rxr_ep_mr_local(ep) ? fi_mr_desc(pkt_entry->mr) : NULL;
+       desc[i] = fi_mr_desc(pkt_entry->mr);
        i++;
 
        /*
@@ -168,12 +168,11 @@
         */
        while (tx_entry->iov_index < tx_entry->iov_count &&
               remaining_len > 0 && i < ep->core_iov_limit) {
-               if (!rxr_ep_mr_local(ep) || 
tx_entry->desc[tx_entry->iov_index]) {
+               if (tx_entry->desc[tx_entry->iov_index]) {
                        iov[i].iov_base =
                                (char *)tx_iov[tx_entry->iov_index].iov_base +
                                tx_entry->iov_offset;
-                       if (rxr_ep_mr_local(ep))
-                               desc[i] = tx_entry->desc[tx_entry->iov_index];
+                       desc[i] = tx_entry->desc[tx_entry->iov_index];
 
                        len = tx_iov[tx_entry->iov_index].iov_len
                              - tx_entry->iov_offset;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_pkt_type_misc.c 
new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_pkt_type_misc.c
--- old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_pkt_type_misc.c    
2020-10-09 20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_pkt_type_misc.c    
2020-12-15 12:12:57.000000000 +0100
@@ -284,7 +284,7 @@
        assert(tx_entry->window >= 0);
        if (tx_entry->bytes_sent < tx_entry->total_len) {
                assert(!efa_ep_is_cuda_mr(tx_entry->desc[0]));
-               if (efa_is_cache_available(efa_domain) && rxr_ep_mr_local(ep))
+               if (tx_entry->desc[0] || efa_is_cache_available(efa_domain))
                        rxr_prepare_desc_send(rxr_ep_domain(ep), tx_entry);
 
                tx_entry->state = RXR_TX_SEND;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_pkt_type_req.c 
new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_pkt_type_req.c
--- old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_pkt_type_req.c     
2020-10-09 20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_pkt_type_req.c     
2020-12-15 12:12:57.000000000 +0100
@@ -532,7 +532,7 @@
        tx_entry->bytes_sent += rxr_pkt_req_data_size(pkt_entry);
        assert(tx_entry->bytes_sent < tx_entry->total_len);
 
-       if (efa_is_cache_available(efa_domain) || 
efa_ep_is_cuda_mr(tx_entry->desc[0]))
+       if (tx_entry->desc[0] || efa_is_cache_available(efa_domain))
                rxr_prepare_desc_send(rxr_ep_domain(ep), tx_entry);
 }
 
@@ -1246,7 +1246,7 @@
        tx_entry = (struct rxr_tx_entry *)pkt_entry->x_entry;
        tx_entry->bytes_sent += rxr_pkt_req_data_size(pkt_entry);
        assert(tx_entry->bytes_sent < tx_entry->total_len);
-       if (efa_is_cache_available(efa_domain) || 
efa_ep_is_cuda_mr(tx_entry->desc[0]))
+       if (tx_entry->desc[0] || efa_is_cache_available(efa_domain))
                rxr_prepare_desc_send(rxr_ep_domain(ep), tx_entry);
 }
 
@@ -1325,7 +1325,7 @@
        rtw_hdr = (struct rxr_eager_rtw_hdr *)pkt_entry->pkt;
        rx_entry->iov_count = rtw_hdr->rma_iov_count;
        err = rxr_rma_verified_copy_iov(ep, rtw_hdr->rma_iov, 
rtw_hdr->rma_iov_count,
-                                       FI_REMOTE_WRITE, rx_entry->iov);
+                                       FI_REMOTE_WRITE, rx_entry->iov, 
rx_entry->desc);
        if (OFI_UNLIKELY(err)) {
                FI_WARN(&rxr_prov, FI_LOG_CQ, "RMA address verify failed!\n");
                efa_eq_write_error(&ep->util_ep, FI_EIO, err);
@@ -1382,7 +1382,7 @@
        rtw_hdr = (struct rxr_long_rtw_hdr *)pkt_entry->pkt;
        rx_entry->iov_count = rtw_hdr->rma_iov_count;
        err = rxr_rma_verified_copy_iov(ep, rtw_hdr->rma_iov, 
rtw_hdr->rma_iov_count,
-                                       FI_REMOTE_WRITE, rx_entry->iov);
+                                       FI_REMOTE_WRITE, rx_entry->iov, 
rx_entry->desc);
        if (OFI_UNLIKELY(err)) {
                FI_WARN(&rxr_prov, FI_LOG_CQ, "RMA address verify failed!\n");
                efa_eq_write_error(&ep->util_ep, FI_EIO, err);
@@ -1454,7 +1454,7 @@
        rtw_hdr = (struct rxr_read_rtw_hdr *)pkt_entry->pkt;
        rx_entry->iov_count = rtw_hdr->rma_iov_count;
        err = rxr_rma_verified_copy_iov(ep, rtw_hdr->rma_iov, 
rtw_hdr->rma_iov_count,
-                                       FI_REMOTE_WRITE, rx_entry->iov);
+                                       FI_REMOTE_WRITE, rx_entry->iov, 
rx_entry->desc);
        if (OFI_UNLIKELY(err)) {
                FI_WARN(&rxr_prov, FI_LOG_CQ, "RMA address verify failed!\n");
                efa_eq_write_error(&ep->util_ep, FI_EINVAL, -FI_EINVAL);
@@ -1593,7 +1593,7 @@
        rx_entry->window = rtr_hdr->read_req_window;
        rx_entry->iov_count = rtr_hdr->rma_iov_count;
        err = rxr_rma_verified_copy_iov(ep, rtr_hdr->rma_iov, 
rtr_hdr->rma_iov_count,
-                                       FI_REMOTE_READ, rx_entry->iov);
+                                       FI_REMOTE_READ, rx_entry->iov, 
rx_entry->desc);
        if (OFI_UNLIKELY(err)) {
                FI_WARN(&rxr_prov, FI_LOG_CQ, "RMA address verification 
failed!\n");
                efa_eq_write_error(&ep->util_ep, FI_EINVAL, -FI_EINVAL);
@@ -1708,6 +1708,7 @@
 {
        struct iovec iov[RXR_IOV_LIMIT];
        struct rxr_rta_hdr *rta_hdr;
+       void *desc[RXR_IOV_LIMIT];
        char *data;
        int iov_count, op, dt, i;
        size_t dtsize, offset, hdr_size;
@@ -1720,7 +1721,7 @@
        hdr_size = rxr_pkt_req_hdr_size(pkt_entry);
        data = (char *)pkt_entry->pkt + hdr_size;
        iov_count = rta_hdr->rma_iov_count;
-       rxr_rma_verified_copy_iov(ep, rta_hdr->rma_iov, iov_count, 
FI_REMOTE_WRITE, iov);
+       rxr_rma_verified_copy_iov(ep, rta_hdr->rma_iov, iov_count, 
FI_REMOTE_WRITE, iov, desc);
 
        offset = 0;
        for (i = 0; i < iov_count; ++i) {
@@ -1753,7 +1754,8 @@
        rx_entry->atomic_hdr.datatype = rta_hdr->atomic_datatype;
 
        rx_entry->iov_count = rta_hdr->rma_iov_count;
-       rxr_rma_verified_copy_iov(ep, rta_hdr->rma_iov, rx_entry->iov_count, 
FI_REMOTE_READ, rx_entry->iov);
+       rxr_rma_verified_copy_iov(ep, rta_hdr->rma_iov, rx_entry->iov_count,
+                                 FI_REMOTE_READ, rx_entry->iov, 
rx_entry->desc);
        rx_entry->tx_id = rta_hdr->tx_id;
        rx_entry->total_len = ofi_total_iov_len(rx_entry->iov, 
rx_entry->iov_count);
        /*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_rma.c 
new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_rma.c
--- old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_rma.c      
2020-10-09 20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_rma.c      
2020-12-15 12:12:57.000000000 +0100
@@ -43,19 +43,25 @@
 #include "rxr_read.h"
 
 int rxr_rma_verified_copy_iov(struct rxr_ep *ep, struct fi_rma_iov *rma,
-                             size_t count, uint32_t flags, struct iovec *iov)
+                             size_t count, uint32_t flags,
+                             struct iovec *iov, void **desc)
 {
+       void *context;
+       struct efa_mr *efa_mr;
        struct efa_ep *efa_ep;
        int i, ret;
 
        efa_ep = container_of(ep->rdm_ep, struct efa_ep, util_ep.ep_fid);
 
        for (i = 0; i < count; i++) {
-               ret = ofi_mr_verify(&efa_ep->domain->util_domain.mr_map,
-                                   rma[i].len,
-                                   (uintptr_t *)(&rma[i].addr),
-                                   rma[i].key,
-                                   flags);
+               fastlock_acquire(&efa_ep->domain->util_domain.lock);
+               ret = ofi_mr_map_verify(&efa_ep->domain->util_domain.mr_map,
+                                       (uintptr_t *)(&rma[i].addr),
+                                       rma[i].len, rma[i].key, flags,
+                                       &context);
+               efa_mr = context;
+               desc[i] = fi_mr_desc(&efa_mr->mr_fid);
+               fastlock_release(&efa_ep->domain->util_domain.lock);
                if (ret) {
                        FI_WARN(&rxr_prov, FI_LOG_EP_CTRL,
                                "MR verification failed (%s), addr: %lx key: 
%ld\n",
@@ -92,7 +98,7 @@
        msg.msg_iov = rx_entry->iov;
        msg.iov_count = rx_entry->iov_count;
        msg.addr = rx_entry->addr;
-       msg.desc = NULL;
+       msg.desc = rx_entry->desc;
        msg.context = NULL;
        msg.data = 0;
 
@@ -261,7 +267,7 @@
        tx_entry->rma_loc_rx_id = rx_entry->rx_id;
 
        if (tx_entry->total_len < ep->mtu_size - sizeof(struct 
rxr_readrsp_hdr)) {
-               err = rxr_pkt_post_ctrl_or_queue(ep, RXR_TX_ENTRY, tx_entry, 
RXR_SHORT_RTR_PKT, 0);
+               err = rxr_pkt_post_ctrl(ep, RXR_TX_ENTRY, tx_entry, 
RXR_SHORT_RTR_PKT, 0);
        } else {
                peer = rxr_ep_get_peer(ep, tx_entry->addr);
                assert(peer);
@@ -274,7 +280,7 @@
                rx_entry->window = window;
                rx_entry->credit_cts = credits;
                tx_entry->rma_window = rx_entry->window;
-               err = rxr_pkt_post_ctrl_or_queue(ep, RXR_TX_ENTRY, tx_entry, 
RXR_LONG_RTR_PKT, 0);
+               err = rxr_pkt_post_ctrl(ep, RXR_TX_ENTRY, tx_entry, 
RXR_LONG_RTR_PKT, 0);
        }
 
        return err;
@@ -449,8 +455,10 @@
        }
 
        err = rxr_rma_post_write(rxr_ep, tx_entry);
-       if (OFI_UNLIKELY(err))
+       if (OFI_UNLIKELY(err)) {
+               rxr_tx_entry_mr_dereg(tx_entry);
                rxr_release_tx_entry(rxr_ep, tx_entry);
+       }
 out:
        fastlock_release(&rxr_ep->util_ep.lock);
        rxr_perfset_end(rxr_ep, perf_rxr_tx);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_rma.h 
new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_rma.h
--- old/libfabric-1.11.1.0.6c51de3d7817/prov/efa/src/rxr/rxr_rma.h      
2020-10-09 20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/prov/efa/src/rxr/rxr_rma.h      
2020-12-15 12:12:57.000000000 +0100
@@ -40,7 +40,8 @@
 #include <rdma/fi_rma.h>
 
 int rxr_rma_verified_copy_iov(struct rxr_ep *ep, struct fi_rma_iov *rma,
-                             size_t count, uint32_t flags, struct iovec *iov);
+                             size_t count, uint32_t flags,
+                             struct iovec *iov, void **desc);
 
 /* read response related functions */
 struct rxr_tx_entry *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/prov/rxm/src/rxm_init.c 
new/libfabric-1.11.2.0.0c28dc5a5083/prov/rxm/src/rxm_init.c
--- old/libfabric-1.11.1.0.6c51de3d7817/prov/rxm/src/rxm_init.c 2020-10-09 
20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/prov/rxm/src/rxm_init.c 2020-12-15 
12:12:57.000000000 +0100
@@ -487,5 +487,9 @@
                        "(FI_OFI_RXM_DATA_AUTO_PROGRESS = 1), domain threading "
                        "level would be set to FI_THREAD_SAFE\n");
 
+#ifdef HAVE_RXM_DL
+       ofi_mem_init();
+#endif
+
        return &rxm_prov;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/prov/shm/src/smr_progress.c 
new/libfabric-1.11.2.0.0c28dc5a5083/prov/shm/src/smr_progress.c
--- old/libfabric-1.11.1.0.6c51de3d7817/prov/shm/src/smr_progress.c     
2020-10-09 20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/prov/shm/src/smr_progress.c     
2020-12-15 12:12:57.000000000 +0100
@@ -82,10 +82,6 @@
                    sar_msg->sar[1].status == SMR_SAR_FREE)
                        break;
 
-               if (peer_smr != ep->region) {
-                       if (fastlock_tryacquire(&peer_smr->lock))
-                               return -FI_EAGAIN;
-               }
                if (pending->cmd.msg.hdr.op == ofi_op_read_req)
                        smr_try_progress_from_sar(sar_msg, resp,
                                        &pending->cmd, pending->iface,
@@ -98,9 +94,6 @@
                                        pending->device, pending->iov,
                                        pending->iov_count, 
&pending->bytes_done,
                                        &pending->next);
-               if (peer_smr != ep->region)
-                       fastlock_release(&peer_smr->lock);
-
                if (pending->bytes_done != pending->cmd.msg.hdr.size ||
                    sar_msg->sar[0].status != SMR_SAR_FREE ||
                    sar_msg->sar[1].status != SMR_SAR_FREE)
@@ -131,7 +124,8 @@
        case smr_src_inject:
                inj_offset = (size_t) pending->cmd.msg.hdr.src_data;
                tx_buf = smr_get_ptr(peer_smr, inj_offset);
-               if (*err || pending->bytes_done == pending->cmd.msg.hdr.size)
+               if (*err || pending->bytes_done == pending->cmd.msg.hdr.size ||
+                   pending->cmd.msg.hdr.op == ofi_op_atomic)
                        break;
 
                src = pending->cmd.msg.hdr.op == ofi_op_atomic_compare ?
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/prov/tcp/src/tcpx_rma.c 
new/libfabric-1.11.2.0.0c28dc5a5083/prov/tcp/src/tcpx_rma.c
--- old/libfabric-1.11.1.0.6c51de3d7817/prov/tcp/src/tcpx_rma.c 2020-10-09 
20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/prov/tcp/src/tcpx_rma.c 2020-12-15 
12:12:57.000000000 +0100
@@ -389,8 +389,8 @@
 static ssize_t tcpx_rma_inject(struct fid_ep *ep, const void *buf, size_t len,
                               fi_addr_t dest_addr, uint64_t addr, uint64_t key)
 {
-       return tcpx_rma_inject_common(ep, buf, len, dest_addr,
-                                     0, addr, key, FI_INJECT);
+       return tcpx_rma_inject_common(ep, buf, len, 0 ,dest_addr,
+                                     addr, key, FI_INJECT);
 }
 
 static ssize_t
@@ -398,7 +398,7 @@
                    uint64_t data, fi_addr_t dest_addr, uint64_t addr,
                    uint64_t key)
 {
-       return tcpx_rma_inject_common(ep, buf, len, dest_addr, data, addr, key,
+       return tcpx_rma_inject_common(ep, buf, len, data, dest_addr, addr, key,
                                      FI_INJECT | FI_REMOTE_CQ_DATA);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/prov/util/src/util_av.c 
new/libfabric-1.11.2.0.0c28dc5a5083/prov/util/src/util_av.c
--- old/libfabric-1.11.1.0.6c51de3d7817/prov/util/src/util_av.c 2020-10-09 
20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/prov/util/src/util_av.c 2020-12-15 
12:12:57.000000000 +0100
@@ -256,7 +256,7 @@
 
        if (flags & ~(FI_MORE)) {
                FI_WARN(av->prov, FI_LOG_AV, "unsupported flags\n");
-               return -FI_ENOEQ;
+               return -FI_EBADFLAGS;
        }
 
        return 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/prov/verbs/src/fi_verbs.h 
new/libfabric-1.11.2.0.0c28dc5a5083/prov/verbs/src/fi_verbs.h
--- old/libfabric-1.11.1.0.6c51de3d7817/prov/verbs/src/fi_verbs.h       
2020-10-09 20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/prov/verbs/src/fi_verbs.h       
2020-12-15 12:12:57.000000000 +0100
@@ -888,7 +888,7 @@
          .lkey = (uint32_t) (uintptr_t) desc }
 
 #define vrb_set_sge_iov(sg_list, iov, count, desc)     \
-({                                                     \
+do {                                                   \
        size_t i;                                       \
        sg_list = alloca(sizeof(*sg_list) * count);     \
        for (i = 0; i < count; i++) {                   \
@@ -897,10 +897,10 @@
                                iov[i].iov_len,         \
                                desc[i]);               \
        }                                               \
-})
+} while (0)
 
 #define vrb_set_sge_iov_count_len(sg_list, iov, count, desc, len)      \
-({                                                                     \
+do {                                                                   \
        size_t i;                                                       \
        sg_list = alloca(sizeof(*sg_list) * count);                     \
        for (i = 0; i < count; i++) {                                   \
@@ -910,12 +910,12 @@
                                desc[i]);                               \
                len += iov[i].iov_len;                                  \
        }                                                               \
-})
+} while (0)
 
 #define vrb_init_sge_inline(buf, len) vrb_init_sge(buf, len, NULL)
 
 #define vrb_set_sge_iov_inline(sg_list, iov, count, len)       \
-({                                                             \
+do {                                                           \
        size_t i;                                               \
        sg_list = alloca(sizeof(*sg_list) * count);             \
        for (i = 0; i < count; i++) {                           \
@@ -924,7 +924,7 @@
                                        iov[i].iov_len);        \
                len += iov[i].iov_len;                          \
        }                                                       \
-})
+} while (0)
 
 #define vrb_send_iov(ep, wr, iov, desc, count)         \
        vrb_send_iov_flags(ep, wr, iov, desc, count,            \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libfabric-1.11.1.0.6c51de3d7817/prov/verbs/src/verbs_cm_xrc.c 
new/libfabric-1.11.2.0.0c28dc5a5083/prov/verbs/src/verbs_cm_xrc.c
--- old/libfabric-1.11.1.0.6c51de3d7817/prov/verbs/src/verbs_cm_xrc.c   
2020-10-09 20:33:11.000000000 +0200
+++ new/libfabric-1.11.2.0.0c28dc5a5083/prov/verbs/src/verbs_cm_xrc.c   
2020-12-15 12:12:57.000000000 +0100
@@ -124,7 +124,7 @@
        return FI_SUCCESS;
 }
 
-void vrb_log_ep_conn(struct vrb_xrc_ep *ep, char *desc)
+static void vrb_log_ep_conn(struct vrb_xrc_ep *ep, char *desc)
 {
        struct sockaddr *addr;
        char buf[OFI_ADDRSTRLEN];
@@ -133,33 +133,36 @@
        if (!fi_log_enabled(&vrb_prov, FI_LOG_INFO, FI_LOG_EP_CTRL))
                return;
 
-       VERBS_INFO(FI_LOG_EP_CTRL, "EP %p, %s\n", ep, desc);
+       VERBS_INFO(FI_LOG_EP_CTRL, "EP %p, %s\n", (void *) ep, desc);
        VERBS_INFO(FI_LOG_EP_CTRL,
                  "EP %p, CM ID %p, TGT CM ID %p, SRQN %d Peer SRQN %d\n",
-                 ep, ep->base_ep.id, ep->tgt_id, ep->srqn, ep->peer_srqn);
+                 (void*) ep, (void *) ep->base_ep.id, (void *) ep->tgt_id,
+                 ep->srqn, ep->peer_srqn);
 
 
        if (ep->base_ep.id) {
                addr = rdma_get_local_addr(ep->base_ep.id);
                len = sizeof(buf);
                ofi_straddr(buf, &len, ep->base_ep.info_attr.addr_format, addr);
-               VERBS_INFO(FI_LOG_EP_CTRL, "EP %p src_addr: %s\n", ep, buf);
+               VERBS_INFO(FI_LOG_EP_CTRL, "EP %p src_addr: %s\n",
+                          (void *) ep, buf);
 
                addr = rdma_get_peer_addr(ep->base_ep.id);
                len = sizeof(buf);
                ofi_straddr(buf, &len, ep->base_ep.info_attr.addr_format, addr);
-               VERBS_INFO(FI_LOG_EP_CTRL, "EP %p dst_addr: %s\n", ep, buf);
+               VERBS_INFO(FI_LOG_EP_CTRL, "EP %p dst_addr: %s\n",
+                          (void *) ep, buf);
        }
 
        if (ep->base_ep.ibv_qp) {
                VERBS_INFO(FI_LOG_EP_CTRL, "EP %p, INI QP Num %d\n",
-                         ep, ep->base_ep.ibv_qp->qp_num);
-               VERBS_INFO(FI_LOG_EP_CTRL, "EP %p, Remote TGT QP Num %d\n", ep,
-                         ep->ini_conn->tgt_qpn);
+                          (void *) ep, ep->base_ep.ibv_qp->qp_num);
+               VERBS_INFO(FI_LOG_EP_CTRL, "EP %p, Remote TGT QP Num %d\n",
+                          (void *) ep, ep->ini_conn->tgt_qpn);
        }
        if (ep->tgt_ibv_qp)
                VERBS_INFO(FI_LOG_EP_CTRL, "EP %p, TGT QP Num %d\n",
-                         ep, ep->tgt_ibv_qp->qp_num);
+                          (void *) ep, ep->tgt_ibv_qp->qp_num);
 }
 
 /* Caller must hold eq:lock */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libfabric-1.11.1.0.6c51de3d7817/src/osx/osd.c 
new/libfabric-1.11.2.0.0c28dc5a5083/src/osx/osd.c
--- old/libfabric-1.11.1.0.6c51de3d7817/src/osx/osd.c   1970-01-01 
01:00:00.000000000 +0100
+++ new/libfabric-1.11.2.0.0c28dc5a5083/src/osx/osd.c   2020-12-15 
12:12:57.000000000 +0100
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2020 by Argonne National Laboratory.
+ *
+ * This software is available to you under a choice of one of two
+ * licenses.  You may choose to be licensed under the terms of the GNU
+ * General Public License (GPL) Version 2, available from the file
+ * COPYING in the main directory of this source tree, or the
+ * BSD license below:
+ *
+ *     Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *      - Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *
+ *      - Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#include "ofi.h"
+#include "ofi_osd.h"
+
+static ssize_t
+ofi_sendv_socket(SOCKET fd, const struct iovec *iovec, size_t iov_cnt, int 
flags)
+{
+       ssize_t size = 0;
+       int ret, i;
+
+       if (iov_cnt == 1) {
+               return ofi_send_socket(fd, iovec[0].iov_base,
+                                      iovec[0].iov_len, flags);
+       }
+
+       for (i = 0; i < iov_cnt; i++) {
+               ret = ofi_send_socket(fd, iovec[i].iov_base,
+                                     iovec[i].iov_len, flags);
+               if (ret >= 0) {
+                       size += ret;
+                       if (ret != iovec[i].iov_len)
+                               return size;
+               } else {
+                       return size ? size : ret;
+               }
+       }
+       return size;
+}
+
+static ssize_t
+ofi_recvv_socket(SOCKET fd, const struct iovec *iovec, size_t iov_cnt, int 
flags)
+{
+       ssize_t size = 0;
+       int ret, i;
+
+       if (iov_cnt == 1) {
+               return ofi_recv_socket(fd, iovec[0].iov_base,
+                                      iovec[0].iov_len, flags);
+       }
+
+       for (i = 0; i < iov_cnt; i++) {
+               ret = ofi_recv_socket(fd, iovec[i].iov_base,
+                                     iovec[i].iov_len, flags);
+               if (ret >= 0) {
+                       size += ret;
+                       if (ret != iovec[i].iov_len)
+                               return size;
+               } else {
+                       return size ? size : ret;
+               }
+       }
+       return size;
+}
+
+ssize_t ofi_writev_socket(SOCKET fd, const struct iovec *iovec, size_t iov_cnt)
+{
+       return ofi_sendv_socket(fd, iovec, iov_cnt, 0);
+}
+
+ssize_t ofi_readv_socket(SOCKET fd, const struct iovec *iovec, size_t iov_cnt)
+{
+       return ofi_recvv_socket(fd, iovec, iov_cnt, 0);
+}
+
+ssize_t ofi_sendmsg_tcp(SOCKET fd, const struct msghdr *msg, int flags)
+{
+       return ofi_sendv_socket(fd, msg->msg_iov, msg->msg_iovlen, flags);
+}
+
+ssize_t ofi_recvmsg_tcp(SOCKET fd, struct msghdr *msg, int flags)
+{
+       return ofi_recvv_socket(fd, msg->msg_iov, msg->msg_iovlen, flags);
+}

Reply via email to