blob: 0d9bd11d881e7f56f62f5d87f9509a806e6b8554 [file] [log] [blame] [edit]
// SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB
/*
* Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved
*/
#include <infiniband/cmd_write.h>
int ibv_cmd_export_dmabuf_fd(struct ibv_context *ctx, off_t pg_off)
{
DECLARE_COMMAND_BUFFER(cmd, UVERBS_OBJECT_DMABUF,
UVERBS_METHOD_DMABUF_ALLOC, 2);
struct ib_uverbs_attr *handle;
int ret;
handle = fill_attr_out_fd(cmd, UVERBS_ATTR_ALLOC_DMABUF_HANDLE, 0);
fill_attr_in_uint64(cmd, UVERBS_ATTR_ALLOC_DMABUF_PGOFF, pg_off);
ret = execute_ioctl(ctx, cmd);
if (ret)
/* errno is set to a postive value internally */
return -1;
return read_attr_fd(UVERBS_ATTR_ALLOC_DMABUF_HANDLE, handle);
}