Go to main content

man pages section 3: Library Interfaces and Headers

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

ibv_reg_mr_relaxed (3)

Name

ibv_reg_mr_relaxed - ter or deregister a memory region (MR) in relaxed mode, flush relaxed MRs

Synopsis

#include <infiniband/verbs.h>

struct ibv_mr *ibv_reg_mr_relaxed(struct ibv_pd *pd, void *addr,
size_t length, int access);

int ibv_dereg_mr_relaxed(struct ibv_mr *mr);

int ibv_flush_relaxed_mr(struct ibv_pd *pd);

Description

Libibverbs Programmer's Manual                           IBV_REG_MR_RELAXED(3)



NAME
       ibv_reg_mr_relaxed, ibv_dereg_mr_relaxed, ibv_flush_relaxed_mr - regis-
       ter or deregister a memory region (MR) in relaxed mode,  flush  relaxed
       MRs

SYNOPSIS
       #include <infiniband/verbs.h>

       struct ibv_mr *ibv_reg_mr_relaxed(struct ibv_pd *pd, void *addr,
                                         size_t length, int access);

       int ibv_dereg_mr_relaxed(struct ibv_mr *mr);

       int ibv_flush_relaxed_mr(struct ibv_pd *pd);

DESCRIPTION
       Relaxed MRs are different from normal MRs in following ways :

        *   Registration is done using Fast Memory Registration(FMR) interface
       provided by the RDMA device.

        *  Access permissions are extended to  specified  memory  area's  last
       page boundary.

        *   There  could  be a finite time gap between the deregistration call
       and actual invalidation in the RDMA device for an MR.


       ibv_reg_mr_relaxed() registers a memory region (MR) associated with the
       protection  domain  pd.  The MR's starting address is addr and its size
       is length.  The argument access describes the desired memory protection
       attributes;   for   details   on  access  options  see  description  of
       ibv_reg_mr().

       ibv_dereg_mr_relaxed() deregisters the MR mr.  This call  marks  mr  as
       ready to be invalidated; however actual invalidation happens later.

       ibv_flush_relaxed_mr()  forces all deregistered relaxed MRs under PD pd
       to be invalidated by the RDMA device.

RETURN VALUE
       ibv_reg_mr_relaxed() returns a pointer to the registered MR, or NULL if
       the  request  fails.   The  local key (L_Key) field lkey is used as the
       lkey field of struct  ibv_sge  when  posting  buffers  with  ibv_post_*
       verbs,  and  the  remote  key (R_Key) field rkey is used by remote pro-
       cesses to perform Atomic  and  RDMA  operations.   The  remote  process
       places  this rkey as the rkey field of struct ibv_send_wr passed to the
       ibv_post_send function.

       ibv_dereg_mr_relaxed() returns 0 on success, or the value of  errno  on
       failure (which indicates the failure reason).

       ibv_flush_relaxed_mr()  returns  0 on success, or the value of errno on
       failure.



ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+-----------------------+
       |ATTRIBUTE TYPE |   ATTRIBUTE VALUE     |
       +---------------+-----------------------+
       |Availability   | network/open-fabrics  |
       +---------------+-----------------------+
       |Stability      | Pass-through volatile |
       +---------------+-----------------------+

NOTES
       ibv_reg_mr_relaxed() can return transient error EAGAIN. User may  retry
       the operation after sometime.

       The  user  of relaxed memory regions should take care to avoid reliance
       on immediate deregistration behavior.  Also, because of the page granu-
       larity  of  relaxed  memory  regions, it is often advisable to use page
       sized registrations or to align registered regions to a page boundary.

       Source code for open source software components in Oracle  Solaris  can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This    software    was    built    from    source     available     at
       https://github.com/oracle/solaris-userland.    The  original  community
       source   was   downloaded   from    ['https://www.openfabrics.org/down-
       loads/ibutils/ibutils-1.5.7-0.2.gbd7e502.tar.gz', 'https://www.openfab-
       rics.org/downloads/libibverbs/libibverbs-1.1.8.tar.gz',
       'https://www.openfabrics.org/downloads/libmlx4/libmlx4-1.0.6.tar.gz',
       'https://www.openfabrics.org/downloads/libsdp/lib-
       sdp-1.1.108-0.15.gd7fdb72.tar.gz',   'https://www.openfabrics.org/down-
       loads/management/infiniband-diags-1.6.5.tar.gz',  'https://www.openfab-
       rics.org/downloads/management/libibmad-1.3.12.tar.gz',
       'https://www.openfabrics.org/downloads/management/libibu-
       mad-1.3.10.2.tar.gz',    'https://www.openfabrics.org/downloads/manage-
       ment/opensm-3.3.19.tar.gz',          'https://www.openfabrics.org/down-
       loads/perftest/perftest-1.3.0-0.42.gf350d3d.tar.gz', 'https://www.open-
       fabrics.org/downloads/qperf/qperf-0.4.9.tar.gz',  'https://www.openfab-
       rics.org/downloads/rdmacm/librdmacm-1.0.21.tar.gz',  'https://www.open-
       fabrics.org/downloads/rds-tools/rds-tools-2.0.4.tar.gz'].

       Further information about this software can be found on the open source
       community website at http://www.openfabrics.org/.

SEE ALSO
       ibv_alloc_pd(3),           ibv_post_send(3),          ibv_post_recv(3),
       ibv_post_srq_recv(3)

AUTHORS
       Arun Kaimalettu <gotoarunk at gmail dot com>




libibverbs                        2012-02-29             IBV_REG_MR_RELAXED(3)