> > > This lock has currently two purposes: > > > 1. Prevent referencing freed virtio_dev struct in case of numa_realloc. > > > 2. Protect vring pages against invalidation. > > > > > > For 2., it can be fixed by using the per-vq IOTLB lock (it was not the > > > case in my early prototypes that had per device IOTLB cache). > > > > > > For 1., this is an existing problem, so we might consider it is > > > acceptable to keep current state. Maybe it could be improved by only > > > reallocating in case VQ0 is not on the right NUMA node, the other VQs > > > not being initialized at this point.
Something like RCU does a better job of protecting against freed virtio_dev. But using RCU requires quiescent callback in the main loop.