On Tue, 29 Nov 2022 09:48:29 -0500 Luc Pelletier <lucp.at.w...@gmail.com> wrote:
> When the failsafe PMD encounters a hotplug event, it switches its rx/tx > functions to "safe" ones that validate the sub-device's rx/tx functions > before calling them. It switches the rx/tx functions by changing the > function pointers in the rte_eth_dev structure. > > Following commit 7a0935239b9e, the rx/tx functions of PMDs are no longer > called through the function pointers in the rte_eth_dev structure. They > are rather called through a flat array named rte_eth_fp_ops. The > function pointers in that array are initialized when the devices start > and are initialized. > > When a hotplug event occurs, the function pointers in rte_eth_fp_ops > still point to the "unsafe" rx/tx functions in the failsafe PMD since > they haven't been updated. This results in a segmentation fault because > it ends up using the "unsafe" functions, when the "safe" functions > should have been used. > > To fix the problem, the "unsafe" rx/tx functions were completely > removed. The "safe" functions are now always used. Modifying the rx/tx > functions on-the-fly is not supported by DPDK, so this is the correct > approach and should have very minimal impact on performance. > > Fixes: 7a0935239b9e ("ethdev: make fast-path functions to use new flat array") > Cc: Konstantin Ananyev <konstantin.anan...@huawei.com> > Cc: sta...@dpdk.org > > Signed-off-by: Luc Pelletier <lucp.at.w...@gmail.com> I don't use or have way to test failsafe anymore. But wanted to give a try at reviewing this. This version does not apply to current code base. If still interested, please rebase and resubmit.