On 07/11/2017 08:16 AM, Santosh Shukla wrote:
Introducing RTE_PCI_DRV_NEED_IOVA_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> --- 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..ac79040dd 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 needs iova as va */ +#define RTE_PCI_DRV_NEED_IOVA_VA 0X0040
Maybe not a big deal, but using NEED tends to say that the driver cannot work if not using VA as IOVA. If my understanding is correct, this is not the case, the performance will be poor but the device will be functional. Maxime