[dpdk-stable] [PATCH] eal/windows: fix IOVA mode detection and handling

Kadam, Pallavi pallavi.kadam at intel.com
Mon Oct 25 20:22:04 CEST 2021


On 10/25/2021 5:20 AM, Dmitry Kozlyuk wrote:
> Windows EAL did not detect IOVA mode and worked incorrectly
> if physical addresses could not be obtained
> (if virt2phys driver was missing or inaccessible).
> In this case, rte_mem_virt2iova() reported RTE_BAD_IOVA for any address.
> Inability to obtain IOVA, be it PA or VA, should cause a failure
> for the DPDK allocator, but it was hidden by the implementation,
> so allocations did not fail when they should.
> The mode when DPDK cannot obtain PA but can work is IOVA-as-VA mode.
> However, rte_eal_iova_mode() always returned RTE_IOVA_DC
> (while it should only ever return RTE_IOVA_PA or RTE_IOVA_VA),
> because IOVA mode detection was not implemented.
>
> Implement IOVA mode detection:
> 1. Always allow to force --iova-mode=va.
> 2. Allow to force --iova-mode=pa only if virt2phys is available.
> 3. If no mode is forced and virt2phys is available,
>     select the mode according to bus requests, default to PA.
> 4. If no mode is forced but virt2phys is unavailable, default to VA.
> Fix rte_mem_virt2iova() by returning VA when using IOVA-as-VA.
> Fix rte_eal_iova_mode() by returning the selected mode.
>
> Fixes: 2a5d547a4a9b ("eal/windows: implement basic memory management")
> Cc: stable at dpdk.org
>
> Reported-by: Tal Shnaiderman <talshn at nvidia.com>
> Signed-off-by: Dmitry Kozlyuk <dkozlyuk at nvidia.com>
> ---

Tested-by: Pallavi Kadam <pallavi.kadam at intel.com>

Acked-by: Pallavi Kadam <pallavi.kadam at intel.com>

>


More information about the stable mailing list