Introducing RTE_PCI_DRV_IOVA_AS_VA flag. Flag used when driver needs to operate in iova=va mode.
Why driver need iova=va mapping? On NPU style co-processors like Octeontx, the buffer recycling has been done in HW, unlike SW model. Here is the data flow: 1) On control path, Fill the HW mempool with buffers(iova as pa address) 2) on rx_burst, HW gives you IOVA address(iova as pa address) 3) As application expects VA to operate on it, rx_burst() needs to convert to _va from _pa. Which is very expensive. Instead of that if iova as va mapping, we can avoid the cost of converting with help of IOMMU/SMMU. Signed-off-by: Santosh Shukla <santosh.shu...@caviumnetworks.com> Signed-off-by: Jerin Jacob <jerin.ja...@caviumnetworks.com> Reviewed-by: Maxime Coquelin <maxime.coque...@redhat.com> --- v3 --> v4: - Renamed RTE_PCI_DRV_NEED_IOVA_VA to RTE_PCI_DRV_IOVA_AS_VA. (Suggested by Maxime) lib/librte_eal/common/include/rte_pci.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/librte_eal/common/include/rte_pci.h b/lib/librte_eal/common/include/rte_pci.h index 8b123391c..743392f91 100644 --- a/lib/librte_eal/common/include/rte_pci.h +++ b/lib/librte_eal/common/include/rte_pci.h @@ -202,6 +202,8 @@ struct rte_pci_bus { #define RTE_PCI_DRV_INTR_RMV 0x0010 /** Device driver needs to keep mapped resources if unsupported dev detected */ #define RTE_PCI_DRV_KEEP_MAPPED_RES 0x0020 +/** Device driver supports iova as va */ +#define RTE_PCI_DRV_IOVA_AS_VA 0X0040 /** * A structure describing a PCI mapping. -- 2.11.0