Provided by: dpdk-doc_24.11.2-2_all bug

NAME

       rte_vfio.h

SYNOPSIS

       #include <stdbool.h>
       #include <stdint.h>
       #include <rte_compat.h>
       #include <linux/vfio.h>

   Functions
       int rte_vfio_setup_device (const char *sysfs_base, const char *dev_addr, int *vfio_dev_fd, struct
           vfio_device_info *device_info)
       int rte_vfio_release_device (const char *sysfs_base, const char *dev_addr, int fd)
       int rte_vfio_enable (const char *modname)
       int rte_vfio_is_enabled (const char *modname)
       int rte_vfio_noiommu_is_enabled (void)
       int rte_vfio_clear_group (int vfio_group_fd)
       int rte_vfio_get_group_num (const char *sysfs_base, const char *dev_addr, int *iommu_group_num)
       __rte_experimental int rte_vfio_get_device_info (const char *sysfs_base, const char *dev_addr, int
           *vfio_dev_fd, struct vfio_device_info *device_info)
       int rte_vfio_get_container_fd (void)
       int rte_vfio_get_group_fd (int iommu_group_num)
       int rte_vfio_container_create (void)
       int rte_vfio_container_destroy (int container_fd)
       int rte_vfio_container_group_bind (int container_fd, int iommu_group_num)
       int rte_vfio_container_group_unbind (int container_fd, int iommu_group_num)
       int rte_vfio_container_dma_map (int container_fd, uint64_t vaddr, uint64_t iova, uint64_t len)
       int rte_vfio_container_dma_unmap (int container_fd, uint64_t vaddr, uint64_t iova, uint64_t len)

Detailed Description

       RTE VFIO. This library provides various VFIO related utility functions.

       Definition in file rte_vfio.h.

Function Documentation

   int rte_vfio_setup_device (const char * sysfs_base, const char * dev_addr, int * vfio_dev_fd, struct
       vfio_device_info * device_info)
       Setup vfio_cfg for the device identified by its address. It discovers the configured I/O MMU groups or
       sets a new one for the device. If a new groups is assigned, the DMA mapping is performed.

       This function is only relevant to linux and will return an error on BSD.

       Parameters
           sysfs_base sysfs path prefix.
           dev_addr device location.
           vfio_dev_fd VFIO fd.
           device_info Device information.

       Returns
           0 on success. <0 on failure. >1 if the device cannot be managed this way.

   int rte_vfio_release_device (const char * sysfs_base, const char * dev_addr, int fd)
       Release a device mapped to a VFIO-managed I/O MMU group.

       This function is only relevant to linux and will return an error on BSD.

       Parameters
           sysfs_base sysfs path prefix.
           dev_addr device location.
           fd VFIO fd.

       Returns
           0 on success. <0 on failure.

   int rte_vfio_enable (const char * modname)
       Enable a VFIO-related kmod.

       This function is only relevant to linux and will return an error on BSD.

       Parameters
           modname kernel module name.

       Returns
           0 on success. <0 on failure.

   int rte_vfio_is_enabled (const char * modname)
       Check whether a VFIO-related kmod is enabled.

       This function is only relevant to Linux.

       Parameters
           modname kernel module name.

       Returns
           1 if true. 0 otherwise.

   int rte_vfio_noiommu_is_enabled (void)
       Whether VFIO NOIOMMU mode is enabled.

       This function is only relevant to Linux.

       Returns
           1 if true. 0 if false. <0 for errors.

   int rte_vfio_clear_group (int vfio_group_fd)
       Remove group fd from internal VFIO group fd array/

       This function is only relevant to linux and will return an error on BSD.

       Parameters
           vfio_group_fd VFIO Group FD.

       Returns
           0 on success. <0 on failure.

   int rte_vfio_get_group_num (const char * sysfs_base, const char * dev_addr, int * iommu_group_num)
       Parse IOMMU group number for a device

       This function is only relevant to linux and will return an error on BSD.

       Parameters
           sysfs_base sysfs path prefix.
           dev_addr device location.
           iommu_group_num iommu group number

       Returns
           >0 on success 0 for non-existent group or VFIO <0 for errors

   __rte_experimental int rte_vfio_get_device_info (const char * sysfs_base, const char * dev_addr, int *
       vfio_dev_fd, struct vfio_device_info * device_info)
       Get device information

       This function is only relevant to Linux and will return an error on BSD.

       Parameters
           sysfs_base sysfs path prefix.
           dev_addr device location.
           vfio_dev_fd VFIO fd.
           device_info Device information.

       Returns
           0 on success. <0 on failure.

   int rte_vfio_get_container_fd (void)
       Open a new VFIO container fd

       This function is only relevant to linux and will return an error on BSD.

       Returns
               0 container fd < 0 for errors

   int rte_vfio_get_group_fd (int iommu_group_num)
       Open VFIO group fd or get an existing one

       This function is only relevant to linux and will return an error on BSD.

       Parameters
           iommu_group_num iommu group number

       Returns
               0 group fd < 0 for errors

   int rte_vfio_container_create (void)
       Create a new container for device binding.

       Note
           Any newly allocated DPDK memory will not be mapped into these containers by default, user needs to
           manage DMA mappings for any container created by this API.

           When creating containers using this API, the container will only be available in the process that has
           created it. Sharing containers and devices between multiple processes is not supported.

       Returns
           the container fd if successful <0 if failed

   int rte_vfio_container_destroy (int container_fd)
       Destroy the container, unbind all vfio groups within it.

       Parameters
           container_fd the container fd to destroy

       Returns
           0 if successful <0 if failed

   int rte_vfio_container_group_bind (int container_fd, int iommu_group_num)
       Bind a IOMMU group to a container.

       Parameters
           container_fd the container's fd
           iommu_group_num the iommu group number to bind to container

       Returns
           group fd if successful <0 if failed

   int rte_vfio_container_group_unbind (int container_fd, int iommu_group_num)
       Unbind a IOMMU group from a container.

       Parameters
           container_fd the container fd of container
           iommu_group_num the iommu group number to delete from container

       Returns
           0 if successful <0 if failed

   int rte_vfio_container_dma_map (int container_fd, uint64_t vaddr, uint64_t iova, uint64_t len)
       Perform DMA mapping for devices in a container.

       Parameters
           container_fd the specified container fd. Use RTE_VFIO_DEFAULT_CONTAINER_FD to use the default
           container.
           vaddr Starting virtual address of memory to be mapped.
           iova Starting IOVA address of memory to be mapped.
           len Length of memory segment being mapped.

       Returns
           0 if successful <0 if failed

   int rte_vfio_container_dma_unmap (int container_fd, uint64_t vaddr, uint64_t iova, uint64_t len)
       Perform DMA unmapping for devices in a container.

       Parameters
           container_fd the specified container fd. Use RTE_VFIO_DEFAULT_CONTAINER_FD to use the default
           container.
           vaddr Starting virtual address of memory to be unmapped.
           iova Starting IOVA address of memory to be unmapped.
           len Length of memory segment being unmapped.

       Returns
           0 if successful <0 if failed

Author

       Generated automatically by Doxygen for DPDK from the source code.

DPDK                                             Version 24.11.2                                   rte_vfio.h(3)