From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35749) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WKSDB-0000a6-TZ for qemu-devel@nongnu.org; Mon, 03 Mar 2014 07:43:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WKSD5-0007nl-KX for qemu-devel@nongnu.org; Mon, 03 Mar 2014 07:43:13 -0500 Received: from mx1.redhat.com ([209.132.183.28]:25881) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WKSD5-0007ne-BE for qemu-devel@nongnu.org; Mon, 03 Mar 2014 07:43:07 -0500 Date: Mon, 3 Mar 2014 14:48:33 +0200 From: "Michael S. Tsirkin" Message-ID: <20140303124833.GA6319@redhat.com> References: <20140228174019.12875.25127.malonedeb@wampee.canonical.com> <20140228174019.12875.25127.malonedeb@wampee.canonical.com> <20140303123746.GD21055@stefanha-thinkpad.redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140303123746.GD21055@stefanha-thinkpad.redhat.com> Subject: Re: [Qemu-devel] [Bug 1286253] [NEW] virtio-net acceleration features not set when plugged into backend dynamically List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: Bug 1286253 <1286253@bugs.launchpad.net>, qemu-devel@nongnu.org On Mon, Mar 03, 2014 at 01:37:46PM +0100, Stefan Hajnoczi wrote: > On Fri, Feb 28, 2014 at 05:40:19PM -0000, Mario Smarduch wrote: > > When using indpendent transport and backend in this case virtio-net- > > device transport, none of the acceleration features are set after guest > > probes the transport the backend is plugged into. For virtio-net this > > leads to low throughput/performance. This holds true for virtio-mmio, > > PCI transports and most likely for others as well (CCW, S390) and other > > backends > > > > Command to run: > > ./qemu-system-arm -enable-kvm -smp 2 -kernel zImage -dtb ./guest-a15.dtb -m 512 -M vexpress-a15 -cpu cortex-a15 -nographic \ > > -append "root=/dev/vda rw console=ttyAMA0 rootwait" -drive if=none,file=/mnt/gauss.root,id=vm1 \ > > -device virtio-blk-device,drive=vm1 -netdev type=tap,id=net0,ifname=tap0 \ > > -device virtio-net-device,netdev=net0,mac="52:54:00:12:34:58" > > > > For x86 same virtio command for network. > > Can you explain in more detail? > > The command-line looks sane. The virtio-net-device instance should > figure out the tap supports offloads. > > Did you try adding a printf to virtio_net_get_features() to see why the > offload features are not being detected? > > Stefan IIUC mmio does not set any feature bits, so you get the fallback behaviour: $ git grep DEFINE_VIRTIO_NET_FEATURES hw/s390x/s390-virtio-bus.c: DEFINE_VIRTIO_NET_FEATURES(VirtIOS390Device, host_featur hw/s390x/virtio-ccw.c: DEFINE_VIRTIO_NET_FEATURES(VirtioCcwDevice, host_features[0]) hw/virtio/virtio-pci.c: DEFINE_VIRTIO_NET_FEATURES(VirtIOPCIProxy, host_features), include/hw/virtio/virtio-net.h:#define DEFINE_VIRTIO_NET_FEATURES(_state, _field) \ But it should work for pci, and certainly does for x86. -- MST