From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sheng Yang Subject: Re: KVM: Merge MSI handling to kvm_set_irq Date: Fri, 9 Jan 2009 09:32:47 +0800 Message-ID: <200901090932.48148.sheng@linux.intel.com> References: <1231324966-22286-1-git-send-email-sheng@linux.intel.com> <1231324966-22286-6-git-send-email-sheng@linux.intel.com> <20090108135441.GA4628@silverwood.ncultra.org> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Cc: Avi Kivity , Marcelo Tosatti , kvm@vger.kernel.org To: ncmike@ncultra.org Return-path: Received: from mga09.intel.com ([134.134.136.24]:29630 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751068AbZAIBcw (ORCPT ); Thu, 8 Jan 2009 20:32:52 -0500 In-Reply-To: <20090108135441.GA4628@silverwood.ncultra.org> Content-Disposition: inline Sender: kvm-owner@vger.kernel.org List-ID: On Thursday 08 January 2009 21:54:41 Mike Day wrote: > On 07/01/09 18:42 +0800, Sheng Yang wrote: > > Using kvm_set_irq to handle all interrupt injection. > > > > Signed-off-by: Sheng Yang > > --- > > > > +static void gsi_dispatch(struct kvm *kvm, u32 gsi) > > ... > > > + case IOAPIC_FIXED: > > + for (vcpu_id = 0; deliver_bitmask != 0; vcpu_id++) { > > + if (!(deliver_bitmask & (1 << vcpu_id))) > > + continue; > > + deliver_bitmask &= ~(1 << vcpu_id); > > + vcpu = ioapic->kvm->vcpus[vcpu_id]; > > + if (vcpu) > > + kvm_apic_set_irq(vcpu, vector, > > + trig_mode); > > + } > > + break; > > + default: > > + break; > > + } > > In cases such as the for() loop above, which are numerous in the > patchset, I wonder if using bitops would be slightly better: > > case IOAPIC_FIXED: > while (deliver_bitmask != 0) { > vcpu_id = ffs(deliver_bitmask); > __clear_bit(vcpu_id - 1, &deliver_bitmask); > vcpu = ioapic->kvm->vcpus[vcpu_id - 1]; > if (vcpu) > kvm_apic_set_irq(vcpu, vector, > trig_mode); > } ; > > > I did a quick check and the second example compiles to a more > consise set of assembler instructions. The current code uses bitops in > cases like this. > Yes, that's what I did for bitmap changing in the following patches. Please refer to "[PATCH 10/10] KVM: bit ops for deliver_bitmap" I sent before. -- regards Yang, Sheng > Mike