From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Nwu2M-0003MU-6Q for qemu-devel@nongnu.org; Wed, 31 Mar 2010 05:16:34 -0400 Received: from [140.186.70.92] (port=57653 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Nwu2I-0003Kx-Dj for qemu-devel@nongnu.org; Wed, 31 Mar 2010 05:16:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1Nwu2G-0000Qo-BG for qemu-devel@nongnu.org; Wed, 31 Mar 2010 05:16:30 -0400 Received: from mx1.redhat.com ([209.132.183.28]:18424) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Nwu2G-0000QH-2I for qemu-devel@nongnu.org; Wed, 31 Mar 2010 05:16:28 -0400 Date: Wed, 31 Mar 2010 12:12:50 +0300 From: "Michael S. Tsirkin" Message-ID: <20100331091250.GA31085@redhat.com> References: <1269497376-21903-1-git-send-email-cam@cs.ualberta.ca> <4BAB30EE.4020509@redhat.com> <8286e4ee1003250924q7cca5e71u8b8b7c6d8b785eb8@mail.gmail.com> <4BAB90BB.5030401@redhat.com> <8286e4ee1003260914u5e6ceee2pf0c00590de182fb6@mail.gmail.com> <4BAE44F2.20801@redhat.com> <8286e4ee1003281248k204a5bd4tc48e6ccc755918b@mail.gmail.com> <4BB114AC.9040902@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4BB114AC.9040902@redhat.com> Subject: [Qemu-devel] Re: [PATCH v3 1/1] Shared memory uio_pci driver List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Avi Kivity Cc: Cam Macdonell , qemu-devel@nongnu.org, kvm@vger.kernel.org On Mon, Mar 29, 2010 at 11:59:24PM +0300, Avi Kivity wrote: > On 03/28/2010 10:48 PM, Cam Macdonell wrote: >> On Sat, Mar 27, 2010 at 11:48 AM, Avi Kivity wrote: >> >>> On 03/26/2010 07:14 PM, Cam Macdonell wrote: >>> >>>> >>>>> I'm not familiar with the uio internals, but for the interface, an >>>>> ioctl() >>>>> on the fd to assign an eventfd to an MSI vector. Similar to ioeventfd, >>>>> but >>>>> instead of mapping a doorbell to an eventfd, it maps a real MSI to an >>>>> eventfd. >>>>> >>>>> >>>> uio will never support ioctls. >>>> >>> Why not? >>> >> Perhaps I spoke too strongly, but it was rejected before >> >> http://thread.gmane.org/gmane.linux.kernel/756481 >> >> With a compelling case perhaps it could be added. >> > > Ah, the usual "ioctls are ugly, go away". > > It could be done via sysfs: > > $ cat /sys/.../msix/max-interrupts > 256 This one can be discovered with existing sysfs. > $ echo 4 > /sys/.../msix/allocate > $ # subdirectories 0 1 2 3 magically appear > $ # bind fd 13 to msix There's no way to know, when qemu starts, how many vectors will be used by driver. So I think we can just go ahead and allocate as many vectors as supported by device at the moment when the first eventfd is bound. > $ echo 13 > /sys/.../msix/2/bind-fd I think that this one can't work, both fd 13 and sysfs file will get closed when /bin/echo process exits. > $ # from now on, msix interrupt 2 will call eventfd_signal() on fd 13 > > Call me old fashioned, but I prefer ioctls. I think we will have to use ioctl or irqcontrol because of lifetime issues outlines above. > -- > Do not meddle in the internals of kernels, for they are subtle and quick to panic.