Paolo, Radim, with these rcu annotations KVM is now almost sparse clean and the code should also detect rcu misuses earlier. FWIW, there is one one remaining sparse warning virt/kvm/irqchip.c:171:28: warning: symbol 'kvm_arch_irq_routing_update' was not declared. Should it be static? which seems to be triggered by sparse thinking that the global declaration in include/linux/kvm_host.h void kvm_arch_irq_routing_update(struct kvm *kvm); is not compatible with the weak definition in virt/kvm/irqchip.c void __attribute__((weak)) kvm_arch_irq_routing_update(struct kvm *kvm) Not sure what to do about that. The following changes since commit 1372324b328cd5dabaef5e345e37ad48c63df2a9: Update my email address (2017-07-04 14:03:02 +0200) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/borntraeger/linux.git annotations for you to fetch changes up to 7e988b103d0d52190244517edc76e649071284bb: KVM: use correct accessor function for __kvm_memslots (2017-07-10 12:28:46 +0200) ---------------------------------------------------------------- Christian Borntraeger (5): KVM: mark vcpu->pid pointer as rcu protected KVM: use rcu access function for irq routing KVM: mark kvm->busses as rcu protected KVM: mark memory slots as rcu KVM: use correct accessor function for __kvm_memslots include/linux/kvm_host.h | 17 +++++++++++------ virt/kvm/eventfd.c | 8 +++++--- virt/kvm/irqchip.c | 2 +- virt/kvm/kvm_main.c | 38 +++++++++++++++++++++++++------------- 4 files changed, 42 insertions(+), 23 deletions(-)