From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Bonzini Subject: Re: [PATCHv2/RFC] kvm/irqchip: Speed up KVM_SET_GSI_ROUTING Date: Fri, 21 Feb 2014 18:35:49 +0100 Message-ID: <53078E75.2040603@redhat.com> References: <52D7C186.1070700@redhat.com> <1389876260-46636-1-git-send-email-borntraeger@de.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: KVM , linux-s390 , Cornelia Huck , Jens Freimann , agraf@suse.de, mst@redhat.com To: Christian Borntraeger , Gleb Natapov Return-path: Received: from mail-ee0-f42.google.com ([74.125.83.42]:52975 "EHLO mail-ee0-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933198AbaBURf4 (ORCPT ); Fri, 21 Feb 2014 12:35:56 -0500 In-Reply-To: <1389876260-46636-1-git-send-email-borntraeger@de.ibm.com> Sender: kvm-owner@vger.kernel.org List-ID: Il 16/01/2014 13:44, Christian Borntraeger ha scritto: > +DEFINE_STATIC_SRCU(irq_srcu); > + > bool kvm_irq_has_notifier(struct kvm *kvm, unsigned irqchip, unsigned pin) > { > struct kvm_irq_ack_notifier *kian; > - int gsi; > + int gsi, idx; > > - rcu_read_lock(); > - gsi = rcu_dereference(kvm->irq_routing)->chip[irqchip][pin]; > + idx = srcu_read_lock(&irq_srcu); > + gsi = srcu_dereference(kvm->irq_routing, &irq_srcu)->chip[irqchip][pin]; > if (gsi != -1) > hlist_for_each_entry_rcu(kian, &kvm->irq_ack_notifier_list, > link) > @@ -45,7 +48,7 @@ bool kvm_irq_has_notifier(struct kvm *kvm, unsigned irqchip, unsigned pin) > return true; > } > > - rcu_read_unlock(); > + srcu_read_unlock(&irq_srcu, idx); Missing hunk here: @@ -44,7 +44,7 @@ bool kvm_irq_has_notifier(struct kvm *kvm, unsigned irqchip, unsigned pin) hlist_for_each_entry_rcu(kian, &kvm->irq_ack_notifier_list, link) if (kian->gsi == gsi) { - rcu_read_unlock(); + srcu_read_unlock(&irq_srcu, idx); return true; } Paolo