There is ongoing work to enable multiple event loop threads. This will allow QEMU itself to take advantage of SMP and reduce Big QEMU Lock (BQL) contention. This series is one step in that effort.
These patches make coroutines safe in a multi-event loop/multi-threaded world. I have successfully tested them running qcow2 in a dataplane thread (further patches are required which I'll be sending soon). Patch 1 protects the global coroutine freelist with a lock :). Patch 2 drops the CoQueue dependency on AioContext. This allows CoMutex and CoRwlock to operate in a dataplane thread whereas previously we always scheduled coroutines in the QEMU iothread. Stefan Hajnoczi (2): coroutine: protect global pool with a mutex coroutine: stop using AioContext in CoQueue include/block/coroutine_int.h | 4 ++++ qemu-coroutine-lock.c | 56 ++++++++++++++++--------------------------- qemu-coroutine.c | 23 ++++++++++++++++-- trace-events | 2 +- 4 files changed, 47 insertions(+), 38 deletions(-) -- 1.8.1.4