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

Reply via email to