mem: add thread unsafe version for DMA mask check
authorAlejandro Lucero <alejandro.lucero@netronome.com>
Thu, 1 Nov 2018 19:53:30 +0000 (19:53 +0000)
committerThomas Monjalon <thomas@monjalon.net>
Mon, 5 Nov 2018 00:02:14 +0000 (01:02 +0100)
commit84e7477e10b1149c8b5495df8fa239116c41e459
treec6c84630368022721921eaff75f5b03b5d6f44a5
parent165c89b84538fdd1a922ade2f251f9556a72ea5d
mem: add thread unsafe version for DMA mask check

During memory initialization calling rte_mem_check_dma_mask
leads to a deadlock because memory_hotplug_lock is locked by a
writer, the current code in execution, and rte_memseg_walk
tries to lock as a reader.

This patch adds a thread_unsafe version which will call the final
function specifying the memory_hotplug_lock does not need to be
acquired. The patch also modified rte_mem_check_dma_mask as a
intermediate step which will call the final function as before,
implying memory_hotplug_lock will be acquired.

PMDs should always use the version acquiring the lock with the
thread_unsafe one being just for internal EAL memory code.

Fixes: 223b7f1d5ef6 ("mem: add function for checking memseg IOVA")

Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
Tested-by: Ferruh Yigit <ferruh.yigit@intel.com>
lib/librte_eal/common/eal_common_memory.c
lib/librte_eal/common/include/rte_memory.h
lib/librte_eal/common/malloc_heap.c
lib/librte_eal/linuxapp/eal/eal_memory.c
lib/librte_eal/rte_eal_version.map