Scroll to navigation

ibv_import_mr ibv_unimport_mr(3) Libibverbs Programmer’s Manual ibv_import_mr ibv_unimport_mr(3)


ibv_import_mr - import an MR from a given ibv_pd

ibv_unimport_mr - unimport an MR


#include <infiniband/verbs.h>
struct ibv_mr *ibv_import_mr(struct ibv_pd *pd, uint32_t mr_handle);
void ibv_unimport_mr(struct ibv_mr *mr)


ibv_import_mr() returns a Memory region (MR) that is associated with the given mr_handle in the RDMA context that assosicated with the given pd.

The input mr_handle value must be a valid kernel handle for an MR object in the assosicated RDMA context. It can be achieved from the original MR by getting its ibv_mr->handle member value.

ibv_unimport_mr() un import the MR. Once the MR usage has been ended ibv_dereg_mr() or ibv_unimport_mr() should be called. The first one will go to the kernel to destroy the object once the second one way cleanup what ever is needed/opposite of the import without calling the kernel.

This is the responsibility of the application to coordinate between all ibv_context(s) that use this MR. Once destroy is done no other process can touch the object except for unimport. All users of the context must collaborate to ensure this.


ibv_import_mr() returns a pointer to the allocated MR, or NULL if the request fails.


The addr field in the imported MR is not applicable, NULL value is expected.


ibv_reg_mr(3), ibv_reg_dm_mr(3), ibv_reg_mr_iova(3), ibv_reg_mr_iova2(3), ibv_dereg_mr(3),


Yishai Hadas

2020-5-3 libibverbs