We currently create this wq on module_init, which may be wasteful if the
host never creates a guest that uses irqfd. This patch changes the
algorithm so that the workqueue is only created when at least one guest
is using irqfd. The queue is cleaned up when the last guest using irqfd
is shutdown.
To keep things simple, we only check whether the guest has tried to create
an irqfd, not whether there are actually irqfds active.
+++ b/include/linux/kvm_host.h
@@ -144,6 +144,7 @@ struct kvm {
struct {
spinlock_t lock;
struct list_head items;
+ int init:1;