From patchwork Wed Feb 27 13:46:25 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gal Hammer X-Patchwork-Id: 223606 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id C36C32C0087 for ; Thu, 28 Feb 2013 00:45:42 +1100 (EST) Received: from localhost ([::1]:49965 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UAhKF-00028L-K5 for incoming@patchwork.ozlabs.org; Wed, 27 Feb 2013 08:45:39 -0500 Received: from eggs.gnu.org ([208.118.235.92]:38764) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UAhK4-000281-KB for qemu-devel@nongnu.org; Wed, 27 Feb 2013 08:45:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UAhK3-00061m-Dn for qemu-devel@nongnu.org; Wed, 27 Feb 2013 08:45:28 -0500 Received: from mx1.redhat.com ([209.132.183.28]:56895) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UAhK3-00061Z-5a for qemu-devel@nongnu.org; Wed, 27 Feb 2013 08:45:27 -0500 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r1RDjQil015788 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 27 Feb 2013 08:45:26 -0500 Received: from [10.35.4.161] (dhcp-4-161.tlv.redhat.com [10.35.4.161]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id r1RDjOGV004628; Wed, 27 Feb 2013 08:45:24 -0500 Message-ID: <512E0E31.5080207@redhat.com> Date: Wed, 27 Feb 2013 15:46:25 +0200 From: Gal Hammer User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20130107 Thunderbird/17.0.2 MIME-Version: 1.0 To: Paolo Bonzini References: <510A2797.8070101@redhat.com> <20130131112540.GD520@redhat.com> <510C4960.4030201@redhat.com> <20130203121137.GA5931@redhat.com> <510F8288.8020202@redhat.com> <20130204095902.GA9053@redhat.com> <20130227123539.GC14401@amit.redhat.com> <512E08FC.1020805@redhat.com> <512E09F4.8040102@redhat.com> In-Reply-To: <512E09F4.8040102@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 209.132.183.28 Cc: Amit Shah , qemu-devel@nongnu.org, "Michael S. Tsirkin" Subject: Re: [Qemu-devel] How many msi-x vectors should be allocated for the virtio-serial device? X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org On 27/02/2013 15:28, Paolo Bonzini wrote: > Il 27/02/2013 14:24, Gal Hammer ha scritto: >> On 27/02/2013 14:35, Amit Shah wrote: >>> On (Mon) 04 Feb 2013 [11:59:02], Michael S. Tsirkin wrote: >>>> On Mon, Feb 04, 2013 at 10:42:32AM +0100, Paolo Bonzini wrote: >>>>> Il 03/02/2013 13:11, Michael S. Tsirkin ha scritto: >>>>>>>> static Property virtio_serial_properties[] = { >>>>>>>> DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags, >>>>>>>> VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true), >>>>>>>> - DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, >>>>>>>> DEV_NVECTORS_UNSPECIFIED), >>>>>>>> + DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 2), >>>>>>>> DEFINE_PROP_HEX32("class", VirtIOPCIProxy, class_code, 0), >>>>>>>> DEFINE_VIRTIO_COMMON_FEATURES(VirtIOPCIProxy, host_features), >>>>>>>> DEFINE_PROP_UINT32("max_ports", VirtIOPCIProxy, >>>>>>>> serial.max_virtserial_ports, 31), >>>>>>>> >>>>>>>> plus the backwards-compatibility stuff. >>>>>>>> >>>>>>>> Paolo >>>>>> Makes sense, but the logic in virtio_serial_init_pci is >>>>>> then dead code and should go away. >>>>>> >>>>> >>>>> It won't be dead code for the backwards-compatible machine types (that >>>>> use DEV_NVECTORS_UNSPECIFIED). >>>>> >>>>> Paolo >>>> >>>> Good point. Ack. Want to post this with proper signature etc? >>> >>> Gal, do you want to submit a patch for this? >>> >>> Amit >>> >> >> Attached. > > You need to add backwards-compatibility properties in hw/pc.h. > > Paolo > I've added the BC property. I hope it is in the right format. Thanks, Gal. From db49a36ecc4de5744415357691140fb68df4fae2 Mon Sep 17 00:00:00 2001 From: Gal Hammer Date: Wed, 27 Feb 2013 15:15:31 +0200 Subject: [PATCH] Set virtio-serial device to have a default of 2 MSI vectors. The virtio-serial device is expected to use 2 MSI vectors, one for control queue and a second shared for all queues. Signed-off-by: Gal Hammer Reviewed-by: Paolo Bonzini --- hw/pc.h | 4 ++++ hw/virtio-pci.c | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/hw/pc.h b/hw/pc.h index da1b102..d63d411 100644 --- a/hw/pc.h +++ b/hw/pc.h @@ -216,6 +216,10 @@ int e820_add_entry(uint64_t, uint64_t, uint32_t); .driver = "virtio-blk-pci",\ .property = "discard_granularity",\ .value = stringify(0),\ + },{\ + .driver = "virtio-serial-pci",\ + .property = "vectors",\ + .value = stringify(DEV_NVECTORS_UNSPECIFIED),\ } #endif diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c index a869f53..ba56ab2 100644 --- a/hw/virtio-pci.c +++ b/hw/virtio-pci.c @@ -975,6 +975,9 @@ static int virtio_serial_init_pci(PCIDevice *pci_dev) if (!vdev) { return -1; } + + /* backwards-compatibility with machines that were created with + DEV_NVECTORS_UNSPECIFIED */ vdev->nvectors = proxy->nvectors == DEV_NVECTORS_UNSPECIFIED ? proxy->serial.max_virtserial_ports + 1 : proxy->nvectors; @@ -1155,7 +1158,7 @@ static const TypeInfo virtio_net_info = { static Property virtio_serial_properties[] = { DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags, VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true), - DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, DEV_NVECTORS_UNSPECIFIED), + DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 2), DEFINE_PROP_HEX32("class", VirtIOPCIProxy, class_code, 0), DEFINE_VIRTIO_COMMON_FEATURES(VirtIOPCIProxy, host_features), DEFINE_PROP_UINT32("max_ports", VirtIOPCIProxy, serial.max_virtserial_ports, 31),