> > + > > +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 > > +} > > +