I can see this warnings as well and yes, kvm_arch_irq_routing_update seems to be available for CONFIG_HAVE_KVM_EVENTFD=y and =n. Seems that irqchip.c is compile independly from CONFIG_HAVE_KVM_EVENTFD, so Acked-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> On 02/22/2018 01:05 PM, Sebastian Ott wrote: > Move the kvm_arch_irq_routing_update() prototype outside of > ifdef CONFIG_HAVE_KVM_EVENTFD guards to fix the following sparse warning: > > arch/s390/kvm/../../../virt/kvm/irqchip.c:171:28: warning: symbol 'kvm_arch_irq_routing_update' was not declared. Should it be static? > > Signed-off-by: Sebastian Ott <sebott@xxxxxxxxxxxxxxxxxx> > --- > include/linux/kvm_host.h | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h > index ed3d4ddbaff3..6930c63126c7 100644 > --- a/include/linux/kvm_host.h > +++ b/include/linux/kvm_host.h > @@ -1105,7 +1105,6 @@ static inline void kvm_irq_routing_update(struct kvm *kvm) > { > } > #endif > -void kvm_arch_irq_routing_update(struct kvm *kvm); > > static inline int kvm_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args) > { > @@ -1114,6 +1113,8 @@ static inline int kvm_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args) > > #endif /* CONFIG_HAVE_KVM_EVENTFD */ > > +void kvm_arch_irq_routing_update(struct kvm *kvm); > + > static inline void kvm_make_request(int req, struct kvm_vcpu *vcpu) > { > /* >