mem: do not use physical addresses in IOVA as VA mode
authorAnatoly Burakov <anatoly.burakov@intel.com>
Wed, 4 Apr 2018 14:40:45 +0000 (15:40 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 11 Apr 2018 00:15:24 +0000 (02:15 +0200)
commit048303b6f3fdfb5ce863e293f6b3dfabc0a0a2db
tree1bc37e11081b95e808d1422b77a00b1d0e9acdb4
parent72b75134b89667baf4aaf4fcb516ab6bc2b1ebd7
mem: do not use physical addresses in IOVA as VA mode

We already use VA addresses for IOVA purposes everywhere if we're in
RTE_IOVA_VA mode:
 1) rte_malloc_virt2phy()/rte_malloc_virt2iova() always return VA addresses
 2) Because of 1), memzone's IOVA is set to VA address on reserve
 3) Because of 2), mempool's IOVA addresses are set to VA addresses

The only place where actual physical addresses are stored is in memsegs at
init time, but we're not using them anywhere, and there is no external API
to get those addresses (aside from manually iterating through memsegs), nor
should anyone care about them in RTE_IOVA_VA mode.

So, fix EAL initialization to allocate VA-contiguous segments at the start
without regard for physical addresses (as if they weren't available), and
use VA to set final IOVA addresses for all pages.

Fixes: 62196f4e0941 ("mem: rename address mapping function to IOVA")
Cc: stable@dpdk.org
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
lib/librte_eal/linuxapp/eal/eal_memory.c