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

Thomas Monjalon thomas at monjalon.net
Mon Oct 25 21:00:55 CEST 2021


> > 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>

Applied, thanks.





More information about the stable mailing list