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); +}