> > +
> > +static void sigbus_handler(int signum __rte_unused, siginfo_t *info,
> > + void *ctx __rte_unused)
> > +{
> > + int ret;
> > +
> > + RTE_LOG(ERR, EAL, "SIGBUS error, fault address:%p\n", info->si_addr);
> > + ret = dev_uev_failure_process(NULL, info->si_addr);
>
> As now you can try to mmap/munmap same address from two or more different
> threads
> you probably need some synchronization here.
> Something simple as spinlock seems to be enough here.
> We might have one per device or might be even a global one would be ok here.
>
> > + if (!ret)
> > + RTE_LOG(DEBUG, EAL,
> > + "SIGBUS error is because of hot unplug!\n");
Also if sigbus handler wasn't able to fix things - failure addr doesn't belong
to
any devices, or remaping fails - we probably should invoke previously installed
handler
or just apply default action.
Konstantin
> > +}
> > +