---
name: "mlx5dv_get_vfio_device_list"
section: "3"
platform: "linux"
package: "rdma-core"
version: "65.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/mlx5dv_get_vfio_device_list"
---

# mlx5dv\_get\_vfio\_device\_list(3)

Get list of available devices to be used over VFIO

## NAME

mlx5dv\_get\_vfio\_device\_list - Get list of available devices to be used over VFIO

## SYNOPSIS

-

  ```
  #include <infiniband/mlx5dv.h>
  struct ibv_device **
  mlx5dv_get_vfio_device_list(struct mlx5dv_vfio_context_attr *attr);
  ```

## DESCRIPTION

Returns a NULL-terminated array of devices based on input *attr*.

## ARGUMENTS

- *attr*

  Describe the VFIO devices to return in list.

### *attr* argument

-

  ```
  struct mlx5dv_vfio_context_attr {
      const char *pci_name;
      uint32_t flags;
      uint64_t comp_mask;
  };
  ```

- *pci\_name*

  -

  ```
   The PCI name of the required device.
  ```

- *flags*

  -

  ```
    A bitwise OR of the various values described below.
    *MLX5DV_VFIO_CTX_FLAGS_INIT_LINK_DOWN*:
    Upon device initialization link should stay down.
  ```

- *comp\_mask*

  -

  ```
    Bitmask specifying what fields in the structure are valid.
  ```

## RETURN VALUE

Returns the array of the matching devices, or sets errno and returns NULL if the request fails.

## NOTES

Client code should open all the devices it intends to use with ibv\_open\_device() before calling ibv\_free\_device\_list(). Once it frees the array with ibv\_free\_device\_list(), it will be able to use only the open devices; pointers to unopened devices will no longer be valid.

## SEE ALSO

*[ibv\_open\_device(3)](/ibv_open_device/3.md)* *[ibv\_free\_device\_list(3)](/ibv_free_device_list/3.md)*

## AUTHOR

Yishai Hadas ⟨yishaih@nvidia.com⟩\\c
