54f95b1441
instead of continuations directly from shm callbacks or interrupt handlers. The whole CPS design remains but is adapted to cope with a thread model. This patch allows scheduling away I/O requests of domains that behave abnormally, or even destroy them if there is a need to (without thrashing dom0 with lots of error messages at IPL_BIO). I took this opportunity to make the driver MPSAFE, so multiple instances can run concurrently. Moved from home-grown pool(9) queues to pool_cache(9), and rework the callback mechanism so that it delegates I/O processing to thread instead of handling it itself through the continuation trampoline. This one fixes the potential DoS many have seen in a dom0 when trying to suspend a NetBSD domU with a corrupted I/O ring. Benchmarks (build.sh release runs and bonnie++) do not show any performance regression, the "new" driver is on-par with the "old" one. ok bouyer@.