On Wed, Sep 24, 2014 at 12:56:20PM +0100, Paolo Bonzini wrote: > /me got confused between the kernel and QEMU. In the kernel, you can > only have one module_init function, and it will prevent unloading the > module unless you also have the corresponding module_exit function. > > So, commit 80ce1639727e (KVM: VFIO: register kvm_device_ops dynamically, > 2014-09-02) broke unloading of the kvm module, by adding a module_init > function and no module_exit. > > Repair it by making kvm_vfio_ops_init weak, and checking it in > kvm_init. > > Cc: Will Deacon <will.deacon@xxxxxxx> > Cc: Gleb Natapov <gleb@xxxxxxxxxx> > Cc: Alex Williamson <Alex.Williamson@xxxxxxxxxx> > Fixes: 80ce1639727e9d38729c34f162378508c307ca25 > Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> > --- > virt/kvm/kvm_main.c | 9 +++++++++ > virt/kvm/vfio.c | 4 ++-- > virt/kvm/vfio.h | 6 ++++++ > 3 files changed, 17 insertions(+), 2 deletions(-) > create mode 100644 virt/kvm/vfio.h > > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > index db57363cc287..ad3439835adb 100644 > --- a/virt/kvm/kvm_main.c > +++ b/virt/kvm/kvm_main.c > @@ -58,6 +58,10 @@ > #include "coalesced_mmio.h" > #include "async_pf.h" > > +#ifdef CONFIG_KVM_VFIO > +#include "vfio.h" > +#endif Can't you include this unconditionally, then have the #ifdef in the header and a static inline kvm_vfio_ops_init that returns 0? Will -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html