mem: fix DMA mask width sanity check
authorAlejandro Lucero <alejandro.lucero@netronome.com>
Wed, 7 Nov 2018 09:44:56 +0000 (09:44 +0000)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 7 Nov 2018 13:42:28 +0000 (14:42 +0100)
commitee0e074f81431f6f1223a51b84ee72b354b0445c
tree3855b25bc34f70c70d0cf3df8b46caea13576f06
parent4531d096d105a9ef65c516fc59e86fc0c56e46cc
mem: fix DMA mask width sanity check

Current code has different max DMA mask width values for 32 and 64
bits systems. IOMMU hardware could report a higher supported width
than current MAX_DMA_MASK_BITS when RTE_ARCH_64 is not defined. This
is actually true with a 32 bits kernel running in a 64 bits server
with IOMMU hardware. This could also be a problem with embedded systems
using an IOMMU designed for 64 bits in a 32 bits system.

This patch leaves a single max DMA mask width which will make sure the
mask width is within the range for 64 bits variables used for DMA mask.
This also will avoid wrong values because any value higher than
64 bits is likely wrong.

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

Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Tested-by: Ferruh Yigit <ferruh.yigit@intel.com>
lib/librte_eal/common/eal_common_memory.c