From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michael S. Tsirkin" Subject: Re: [PATCH v4] kvm: Use a bitmap for tracking used GSIs Date: Mon, 18 May 2009 17:40:20 +0300 Message-ID: <20090518144020.GB23940@redhat.com> References: <1242224129.9456.6.camel@lappy> <1242225238.9456.9.camel@lappy> <1242256055.9456.326.camel@lappy> <4A1077F9.8040604@redhat.com> <20090518111246.GB3037@redhat.com> <4A114849.604@redhat.com> <20090518121952.GA14327@redhat.com> <4A115590.6030500@redhat.com> <20090518134504.GB23296@redhat.com> <4A1168D2.7090709@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Alex Williamson , kvm@vger.kernel.org, sheng.yang@intel.com To: Avi Kivity Return-path: Received: from mx2.redhat.com ([66.187.237.31]:58771 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753677AbZEROlV (ORCPT ); Mon, 18 May 2009 10:41:21 -0400 Content-Disposition: inline In-Reply-To: <4A1168D2.7090709@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On Mon, May 18, 2009 at 04:55:30PM +0300, Avi Kivity wrote: > Michael S. Tsirkin wrote: >> On Mon, May 18, 2009 at 03:33:20PM +0300, Avi Kivity wrote: >> >>> Michael S. Tsirkin wrote: >>> >>>>>> On the other hand, in MSI-X mask bit is mandatory, not optional >>>>>> so we'll have to support it for assigned devices at some point. >>>>>> >>>>>> If we are worried about speed of masking/unmasking MSI-X interrupts for >>>>>> assigned devices (older kernels used to mask them, recent kernels leave >>>>>> this to drivers) we will probably need to have MSI-X support in the >>>>>> kernel, and have kernel examine the mask bit before injecting the >>>>>> interrupt, just like real devices do. >>>>>> >>>>> Yes. >>>>> >>>> Actually, if we do that, we'll need to address a race where a driver >>>> has updated the mask bit in the window after we tested it >>>> and before we inject the interrupt. Not sure how to do this. >>>> >>> The driver can't tell if the interrupt came first, so it's a valid >>> race (real hardware has the same race). >>> >> >> The driver for real device can do a read followed by sync_irq to flush >> out interrupts. >> > > If it generates the interrupt after masking it in the msi-x entry, we'll > see it. If it generates the interrupt before masking it, it may or may > not receive the interrupt, even on real hardware. Yes but in the later case, real hardware must re-send the pending interrupt after it is unmasked (that's the spec). We would just lose it. -- MST