From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michael S. Tsirkin" Subject: Re: [PATCH 2/2][RFC] KVM: Emulate MSI-X table and PBA in kernel Date: Thu, 30 Dec 2010 12:32:56 +0200 Message-ID: <20101230103256.GB6441@redhat.com> References: <1293007495-32325-1-git-send-email-sheng@linux.intel.com> <201012291655.19535.sheng@linux.intel.com> <20101229092824.GA2876@redhat.com> <201012301532.42341.sheng@linux.intel.com> <20101230074748.GB7889@redhat.com> <4D1C5124.2090409@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: Sheng Yang , Marcelo Tosatti , kvm@vger.kernel.org, Alex Williamson To: Avi Kivity Return-path: Received: from mx1.redhat.com ([209.132.183.28]:56330 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752664Ab0L3KdR (ORCPT ); Thu, 30 Dec 2010 05:33:17 -0500 Content-Disposition: inline In-Reply-To: <4D1C5124.2090409@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On Thu, Dec 30, 2010 at 11:30:12AM +0200, Avi Kivity wrote: > On 12/30/2010 09:47 AM, Michael S. Tsirkin wrote: > >I am not really suggesting this. What I say is PBA is unimplemented > >let us not commit to an interface yet. >=20 > What happens to a guest that tries to use PBA? > It's a mandatory part of MSI-X, no? Yes. Unfortunately the pending bit is in fact a communication channel used for function specific purposes when mask bit is set, and 0 when unset. The spec even seems to *require* this use: I refer to this: For MSI and MSI-X, while a vector is masked, the function is prohibite= d from sending the associated message, and the function must set the associated Pending bit whenever the function would otherwise send the message. When software unmasks a vector whose associated Pending bit i= s set, the function must schedule sending the associated message, and clear the Pending bit as soon as the message has been sent. Note that clearing the MSI-X Function Mask bit may result in many messages needi= ng to be sent. If a masked vector has its Pending bit set, and the associated underlying interrupt events are somehow satisfied (usually by software though the exact manner is function-specific), the function must clear the Pending bit, to avoid sending a spurious interrupt message later when software unmasks the vector. However, if a subsequent interrupt event occurs while the vector is still masked, the function must again set the Pending bit. Software is permitted to mask one or more vectors indefinitely, and service their associated interrupt events strictly based on polling their Pending bits. A function must set and clear its Pending bits as necessary to support this =E2=80=9Cpure polling=E2=80=9D mode of opera= tion. =46or assigned devices, supporting this would require that the mask bits on the device are set if the mask bit in guest is set (otherwise pending bits are disabled). Existing code does not support PBA in assigned devices, so at least it'= s not a regression there, and the virtio spec says nothing about this so we should be fine. > --=20 > error compiling committee.c: too many arguments to function