From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kiszka Subject: Re: [RFC][PATCH 12/45] msi: Introduce MSIRoutingCache Date: Mon, 17 Oct 2011 13:31:40 +0200 Message-ID: <4E9C121C.8050309@siemens.com> References: <4E9C0C42.60201@redhat.com> <4E9C0F5C.8000602@siemens.com> <4E9C109B.4070207@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: Marcelo Tosatti , "kvm@vger.kernel.org" , Alex Williamson , "Michael S. Tsirkin" , "qemu-devel@nongnu.org" To: Avi Kivity Return-path: Received: from thoth.sbs.de ([192.35.17.2]:33610 "EHLO thoth.sbs.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751136Ab1JQLbp (ORCPT ); Mon, 17 Oct 2011 07:31:45 -0400 In-Reply-To: <4E9C109B.4070207@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On 2011-10-17 13:25, Avi Kivity wrote: > On 10/17/2011 01:19 PM, Jan Kiszka wrote: >>> IMO this needlessly leaks kvm information into core qemu. The cache >>> should be completely hidden in kvm code. >>> >>> I think msi_deliver() can hide the use of the cache completely. For >>> pre-registered events like kvm's irqfd, you can use something like >>> >>> qemu_irq qemu_msi_irq(MSIMessage msg) >>> >>> for non-kvm, it simply returns a qemu_irq that triggers a stl_phys(); >>> for kvm, it allocates an irqfd and a permanent entry in the cache and >>> returns a qemu_irq that triggers the irqfd. >> >> See my previously mail: you want to track the life-cycle of an MSI >> source to avoid generating routes for identical sources. A messages is >> not a source. Two identical messages can come from different sources. So >> we need a separate data structure for that purpose. >> > > Yes, I understand this now. > > Just to make sure I understand this completely: a hash table indexed by > MSIMessage in kvm code would avoid this? You'd just allocate on demand > when seeing a new MSIMessage and free on an LRU basis, avoiding pinned > entries. > > I'm not advocating this (yet), just want to understand the tradeoffs. Practically, that may work. I just wanted to avoid searching. And for static routes (irqfd, device assigment) you still need caches anyway, so I decided to use them consistently. Jan -- Siemens AG, Corporate Technology, CT T DE IT 1 Corporate Competence Center Embedded Linux