On Mon, Oct 4, 2021 at 10:51 AM Harman Kalra <hka...@marvell.com> wrote: > > > +struct rte_intr_handle *rte_intr_handle_instance_alloc(int size, > > > + bool > > > +from_hugepage) { > > > + struct rte_intr_handle *intr_handle; > > > + int i; > > > + > > > + if (from_hugepage) > > > + intr_handle = rte_zmalloc(NULL, > > > + size * sizeof(struct > > > rte_intr_handle), > > > + 0); > > > + else > > > + intr_handle = calloc(1, size * sizeof(struct > > > + rte_intr_handle)); > > > > We can call DPDK allocator in all cases. > > That would avoid headaches on why multiprocess does not work in some > > rarely tested cases. > > Wdyt? > > > > Plus "from_hugepage" is misleading, you could be in --no-huge mode, > > rte_zmalloc still works. > > <HK> In mellanox 5 driver interrupt handle instance is freed in destructor > " mlx5_pmd_interrupt_handler_uninstall()" while DPDK memory allocators > are already cleaned up in "rte_eal_cleanup". Hence I allocated interrupt > instances for such cases from normal heap. There could be other such cases > so I think its ok to keep this support.
This is surprising. Why would the mlx5 driver wait to release in a destructor? It should be done once no interrupt handler is necessary (like when stopping all ports), and that would be before rte_eal_cleanup(). -- David Marchand