[dpdk-dev] [PATCH] pci: keep API compatibility with mmap values

Thomas Monjalon thomas at monjalon.net
Fri Jul 10 19:10:46 CEST 2020


10/07/2020 13:53, Thomas Monjalon:
> The function pci_map_resource() returns MAP_FAILED in case of error.
> When replacing the call to mmap() by rte_mem_map(),
> the error code became NULL, breaking the API.
> This function is probably not used outside of DPDK,
> but it is still a problem for two reasons:
> 	- the deprecation process was not followed
> 	- the Linux function pci_vfio_mmap_bar() is broken for i40e
> 
> The error code is reverted to the Unix value MAP_FAILED.
> Windows needs to define this special value (-1 as in Unix).
> After proper deprecation process, the API could be changed again
> if really needed.
> 
> Because of the switch from mmap() to rte_mem_map(),
> another part of the API was changed: "int additional_flags"
> are defined as "additional flags for the mapping range"
> without mentioning it was directly used in mmap().
> Currently it is directly used in rte_mem_map(),
> that's why the values rte_map_flags must be mapped (sic) on the mmap ones
> in case of Unix OS.
> 
> These are side effects of a badly defined API using Unix values.
> 
> Bugzilla ID: 503

This is urgent. i40e does not probe in some cases.
If no test is done, I don't merge it and Intel will complain about
validation issue in 20.08-rc1.
And next time, I won't rush on bug fixing.




More information about the dev mailing list