FD.io VPP  v18.07.1-19-g511ce25
Vector Packet Processing
pci.c File Reference
+ Include dependency graph for pci.c:

Go to the source code of this file.

Data Structures

struct  linux_pci_region_t
 
struct  linux_pci_irq_t
 
struct  linux_pci_device_t
 
struct  linux_pci_main_t
 

Enumerations

enum  linux_pci_device_type_t { LINUX_PCI_DEVICE_TYPE_UNKNOWN, LINUX_PCI_DEVICE_TYPE_UIO, LINUX_PCI_DEVICE_TYPE_VFIO }
 

Functions

static linux_pci_device_tlinux_pci_get_device (vlib_pci_dev_handle_t h)
 
uword vlib_pci_get_private_data (vlib_pci_dev_handle_t h)
 
void vlib_pci_set_private_data (vlib_pci_dev_handle_t h, uword private_data)
 
vlib_pci_addr_t * vlib_pci_get_addr (vlib_pci_dev_handle_t h)
 
clib_error_tpci_bus_init (vlib_main_t *vm)
 
vlib_pci_device_info_tvlib_pci_get_device_info (vlib_pci_addr_t *addr, clib_error_t **error)
 
static int directory_exists (char *path)
 
clib_error_tvlib_pci_bind_to_uio (vlib_pci_addr_t *addr, char *uio_drv_name)
 
static clib_error_tscan_uio_dir (void *arg, u8 *path_name, u8 *file_name)
 
static clib_error_tvfio_set_irqs (linux_pci_device_t *p, u32 index, u32 start, u32 count, u32 flags, int *efds)
 
static clib_error_tlinux_pci_uio_read_ready (clib_file_t *uf)
 
static clib_error_tlinux_pci_vfio_unmask_intx (linux_pci_device_t *d)
 
static clib_error_tlinux_pci_uio_error_ready (clib_file_t *uf)
 
static clib_error_tlinux_pci_vfio_msix_read_ready (clib_file_t *uf)
 
static clib_error_tlinux_pci_vfio_intx_read_ready (clib_file_t *uf)
 
static clib_error_tlinux_pci_vfio_error_ready (clib_file_t *uf)
 
static clib_error_tadd_device_uio (linux_pci_device_t *p, vlib_pci_device_info_t *di, pci_device_registration_t *r)
 
clib_error_tvlib_pci_register_intx_handler (vlib_pci_dev_handle_t h, pci_intx_handler_function_t *intx_handler)
 
clib_error_tvlib_pci_register_msix_handler (vlib_pci_dev_handle_t h, u32 start, u32 count, pci_msix_handler_function_t *msix_handler)
 
clib_error_tvlib_pci_enable_msix_irq (vlib_pci_dev_handle_t h, u16 start, u16 count)
 
clib_error_tvlib_pci_disable_msix_irq (vlib_pci_dev_handle_t h, u16 start, u16 count)
 
static clib_error_tadd_device_vfio (linux_pci_device_t *p, vlib_pci_device_info_t *di, pci_device_registration_t *r)
 
clib_error_tvlib_pci_read_write_config (vlib_pci_dev_handle_t h, vlib_read_or_write_t read_or_write, uword address, void *data, u32 n_bytes)
 
static clib_error_tvlib_pci_map_region_int (vlib_pci_dev_handle_t h, u32 bar, u8 *addr, void **result)
 
clib_error_tvlib_pci_map_region (vlib_pci_dev_handle_t h, u32 resource, void **result)
 
clib_error_tvlib_pci_map_region_fixed (vlib_pci_dev_handle_t h, u32 resource, u8 *addr, void **result)
 
clib_error_tvlib_pci_device_open (vlib_pci_addr_t *addr, pci_device_id_t ids[], vlib_pci_dev_handle_t *handle)
 
void vlib_pci_device_close (vlib_pci_dev_handle_t h)
 
void init_device_from_registered (vlib_pci_device_info_t *di)
 
static clib_error_tscan_pci_addr (void *arg, u8 *dev_dir_name, u8 *ignored)
 
static int pci_addr_cmp (void *v1, void *v2)
 
vlib_pci_addr_t * vlib_pci_get_all_dev_addrs ()
 
clib_error_tlinux_pci_init (vlib_main_t *vm)
 

Variables

static const char * sysfs_pci_dev_path = "/sys/bus/pci/devices"
 
static const char * sysfs_pci_drv_path = "/sys/bus/pci/drivers"
 
static char * sysfs_mod_vfio_noiommu
 
linux_pci_main_t linux_pci_main
 

Enumeration Type Documentation

Enumerator
LINUX_PCI_DEVICE_TYPE_UNKNOWN 
LINUX_PCI_DEVICE_TYPE_UIO 
LINUX_PCI_DEVICE_TYPE_VFIO 

Definition at line 81 of file pci.c.

Function Documentation

static clib_error_t* add_device_uio ( linux_pci_device_t p,
vlib_pci_device_info_t di,
pci_device_registration_t r 
)
static

Definition at line 666 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* add_device_vfio ( linux_pci_device_t p,
vlib_pci_device_info_t di,
pci_device_registration_t r 
)
static

Definition at line 860 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int directory_exists ( char *  path)
static

Definition at line 335 of file pci.c.

+ Here is the caller graph for this function:

void init_device_from_registered ( vlib_pci_device_info_t di)

Definition at line 1155 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static linux_pci_device_t* linux_pci_get_device ( vlib_pci_dev_handle_t  h)
static

Definition at line 127 of file pci.c.

+ Here is the caller graph for this function:

clib_error_t* linux_pci_init ( vlib_main_t vm)

Definition at line 1260 of file pci.c.

+ Here is the call graph for this function:

static clib_error_t* linux_pci_uio_error_ready ( clib_file_t uf)
static

Definition at line 613 of file pci.c.

+ Here is the caller graph for this function:

static clib_error_t* linux_pci_uio_read_ready ( clib_file_t uf)
static

Definition at line 587 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* linux_pci_vfio_error_ready ( clib_file_t uf)
static

Definition at line 658 of file pci.c.

+ Here is the caller graph for this function:

static clib_error_t* linux_pci_vfio_intx_read_ready ( clib_file_t uf)
static

Definition at line 639 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* linux_pci_vfio_msix_read_ready ( clib_file_t uf)
static

Definition at line 621 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* linux_pci_vfio_unmask_intx ( linux_pci_device_t d)
static

Definition at line 606 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int pci_addr_cmp ( void *  v1,
void *  v2 
)
static

Definition at line 1217 of file pci.c.

+ Here is the caller graph for this function:

clib_error_t* pci_bus_init ( vlib_main_t vm)

Definition at line 251 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* scan_pci_addr ( void *  arg,
u8 dev_dir_name,
u8 ignored 
)
static

Definition at line 1194 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* scan_uio_dir ( void *  arg,
u8 path_name,
u8 file_name 
)
static

Definition at line 524 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* vfio_set_irqs ( linux_pci_device_t p,
u32  index,
u32  start,
u32  count,
u32  flags,
int *  efds 
)
static

Definition at line 539 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

clib_error_t* vlib_pci_bind_to_uio ( vlib_pci_addr_t *  addr,
char *  uio_drv_name 
)

Definition at line 345 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void vlib_pci_device_close ( vlib_pci_dev_handle_t  h)

Definition at line 1091 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

clib_error_t* vlib_pci_device_open ( vlib_pci_addr_t *  addr,
pci_device_id_t  ids[],
vlib_pci_dev_handle_t handle 
)

Definition at line 1046 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

clib_error_t* vlib_pci_disable_msix_irq ( vlib_pci_dev_handle_t  h,
u16  start,
u16  count 
)

Definition at line 843 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

clib_error_t* vlib_pci_enable_msix_irq ( vlib_pci_dev_handle_t  h,
u16  start,
u16  count 
)

Definition at line 822 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

vlib_pci_addr_t* vlib_pci_get_addr ( vlib_pci_dev_handle_t  h)

Definition at line 148 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

vlib_pci_addr_t* vlib_pci_get_all_dev_addrs ( )

Definition at line 1242 of file pci.c.

+ Here is the caller graph for this function:

vlib_pci_device_info_t* vlib_pci_get_device_info ( vlib_pci_addr_t *  addr,
clib_error_t **  error 
)

Definition at line 162 of file pci.c.

+ Here is the caller graph for this function:

uword vlib_pci_get_private_data ( vlib_pci_dev_handle_t  h)

Definition at line 134 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

clib_error_t* vlib_pci_map_region ( vlib_pci_dev_handle_t  h,
u32  resource,
void **  result 
)

Definition at line 1033 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

clib_error_t* vlib_pci_map_region_fixed ( vlib_pci_dev_handle_t  h,
u32  resource,
u8 addr,
void **  result 
)

Definition at line 1039 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* vlib_pci_map_region_int ( vlib_pci_dev_handle_t  h,
u32  bar,
u8 addr,
void **  result 
)
static

Definition at line 954 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

clib_error_t* vlib_pci_read_write_config ( vlib_pci_dev_handle_t  h,
vlib_read_or_write_t  read_or_write,
uword  address,
void *  data,
u32  n_bytes 
)

Definition at line 933 of file pci.c.

+ Here is the call graph for this function:

clib_error_t* vlib_pci_register_intx_handler ( vlib_pci_dev_handle_t  h,
pci_intx_handler_function_t intx_handler 
)

Definition at line 723 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

clib_error_t* vlib_pci_register_msix_handler ( vlib_pci_dev_handle_t  h,
u32  start,
u32  count,
pci_msix_handler_function_t msix_handler 
)

Definition at line 766 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void vlib_pci_set_private_data ( vlib_pci_dev_handle_t  h,
uword  private_data 
)

Definition at line 141 of file pci.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Variable Documentation

linux_pci_main_t linux_pci_main

Definition at line 159 of file pci.c.

char* sysfs_mod_vfio_noiommu
static
Initial value:
=
"/sys/module/vfio/parameters/enable_unsafe_noiommu_mode"

Definition at line 60 of file pci.c.

const char* sysfs_pci_dev_path = "/sys/bus/pci/devices"
static

Definition at line 58 of file pci.c.

const char* sysfs_pci_drv_path = "/sys/bus/pci/drivers"
static

Definition at line 59 of file pci.c.