From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:43004) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RFks9-0004PR-9t for qemu-devel@nongnu.org; Mon, 17 Oct 2011 06:56:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RFks8-0005Jb-Dp for qemu-devel@nongnu.org; Mon, 17 Oct 2011 06:56:45 -0400 Received: from mx1.redhat.com ([209.132.183.28]:43686) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RFks8-0005JR-1w for qemu-devel@nongnu.org; Mon, 17 Oct 2011 06:56:44 -0400 Message-ID: <4E9C09E7.2010106@redhat.com> Date: Mon, 17 Oct 2011 12:56:39 +0200 From: Avi Kivity MIME-Version: 1.0 References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC][PATCH 11/45] msi: Factor out delivery hook List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: Alex Williamson , Marcelo Tosatti , qemu-devel@nongnu.org, kvm@vger.kernel.org, "Michael S. Tsirkin" On 10/17/2011 11:27 AM, Jan Kiszka wrote: > So far we deliver MSI messages by writing them into the target MMIO > area. This reflects what happens on hardware, but imposes some > limitations on the emulation when introducing KVM in-kernel irqchip > models. For those we will need to track the message origin. Why do we need to track the message origin? Emulated interrupt remapping? > Moreover, > different architecture or accelerators may want to overload the delivery > handler. > > Therefore, this commit introduces a delivery hook that is called by the > MSI/MSI-X layer when devices send normal messages, but also on spurious > deliveries that ended up on the APIC MMIO handler. Our default delivery > handler for APIC-based PCs then dispatches between real MSIs and other > DMA requests that happened to take the MSI patch. 'path' > > -static void apic_send_msi(target_phys_addr_t addr, uint32_t data) > +void apic_deliver_msi(MSIMessage *msg) In general, it is better these days to pass small structures by value. Not sure what the gain is from intercepting the msi just before the stl_phys() vs. in the apic handler. -- error compiling committee.c: too many arguments to function