X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_eal%2Flinuxapp%2Feal%2Feal_vfio.h;h=4bab363d4fa7103074813b232b41732b5642f135;hb=d5c7a09edbe709b50ecde4269b80b9a07627c876;hp=b7ca3a79247e91f162174d30b6ec1c9fe6298237;hpb=94c0776b1badd1ee715d60f07391058f23494365;p=dpdk.git diff --git a/lib/librte_eal/linuxapp/eal/eal_vfio.h b/lib/librte_eal/linuxapp/eal/eal_vfio.h index b7ca3a7924..4bab363d4f 100644 --- a/lib/librte_eal/linuxapp/eal/eal_vfio.h +++ b/lib/librte_eal/linuxapp/eal/eal_vfio.h @@ -60,19 +60,6 @@ #define VFIO_IOMMU_SPAPR_TCE_CREATE _IO(VFIO_TYPE, VFIO_BASE + 19) #define VFIO_IOMMU_SPAPR_TCE_REMOVE _IO(VFIO_TYPE, VFIO_BASE + 20) -/* SPAPR_v2 is not present, but SPAPR might be */ -#ifndef VFIO_SPAPR_TCE_IOMMU -#define VFIO_IOMMU_SPAPR_TCE_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12) - -struct vfio_iommu_spapr_tce_info { - uint32_t argsz; - uint32_t flags; - uint32_t dma32_window_start; - uint32_t dma32_window_size; - struct vfio_iommu_spapr_tce_ddw_info ddw; -}; -#endif - struct vfio_iommu_spapr_register_memory { uint32_t argsz; uint32_t flags; @@ -82,13 +69,21 @@ struct vfio_iommu_spapr_register_memory { struct vfio_iommu_spapr_tce_create { uint32_t argsz; + uint32_t flags; + /* in */ uint32_t page_shift; + uint32_t __resv1; uint64_t window_size; uint32_t levels; + uint32_t __resv2; + /* out */ + uint64_t start_addr; }; struct vfio_iommu_spapr_tce_remove { uint32_t argsz; + uint32_t flags; + /* in */ uint64_t start_addr; }; @@ -97,7 +92,21 @@ struct vfio_iommu_spapr_tce_ddw_info { uint32_t max_dynamic_windows_supported; uint32_t levels; }; -#else + +/* SPAPR_v2 is not present, but SPAPR might be */ +#ifndef VFIO_SPAPR_TCE_IOMMU +#define VFIO_IOMMU_SPAPR_TCE_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12) + +struct vfio_iommu_spapr_tce_info { + uint32_t argsz; + uint32_t flags; + uint32_t dma32_window_start; + uint32_t dma32_window_size; + struct vfio_iommu_spapr_tce_ddw_info ddw; +}; +#endif /* VFIO_SPAPR_TCE_IOMMU */ + +#else /* VFIO_SPAPR_TCE_v2_IOMMU */ #define RTE_VFIO_SPAPR VFIO_SPAPR_TCE_v2_IOMMU #endif @@ -125,6 +134,7 @@ int vfio_mp_sync_connect_to_primary(void); struct vfio_group { int group_no; int fd; + int devices; }; struct vfio_config { @@ -140,6 +150,8 @@ struct vfio_config { #define VFIO_NOIOMMU_GROUP_FMT "/dev/vfio/noiommu-%u" #define VFIO_GET_REGION_ADDR(x) ((uint64_t) x << 40ULL) #define VFIO_GET_REGION_IDX(x) (x >> 40) +#define VFIO_NOIOMMU_MODE \ + "/sys/module/vfio/parameters/enable_unsafe_noiommu_mode" /* DMA mapping function prototype. * Takes VFIO container fd as a parameter. @@ -195,11 +207,12 @@ int vfio_release_device(const char *sysfs_base, const char *dev_addr, int fd); int vfio_enable(const char *modname); int vfio_is_enabled(const char *modname); -int pci_vfio_enable(void); int pci_vfio_is_enabled(void); int vfio_mp_sync_setup(void); +int vfio_noiommu_is_enabled(void); + #define SOCKET_REQ_CONTAINER 0x100 #define SOCKET_REQ_GROUP 0x200 #define SOCKET_CLR_GROUP 0x300