From mboxrd@z Thu Jan 1 00:00:00 1970 From: Charles Duffy Subject: e1000 PXE breakage bisected down in kvm-userspace Date: Mon, 04 Aug 2008 16:02:17 -0500 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------010300010104020702020607" To: kvm@vger.kernel.org Return-path: Received: from main.gmane.org ([80.91.229.2]:54858 "EHLO ciao.gmane.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1764437AbYHDVCj (ORCPT ); Mon, 4 Aug 2008 17:02:39 -0400 Received: from list by ciao.gmane.org with local (Exim 4.43) id 1KQ7CO-0006Ze-7O for kvm@vger.kernel.org; Mon, 04 Aug 2008 21:02:36 +0000 Received: from rrcs-71-41-149-67.sw.biz.rr.com ([71.41.149.67]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 04 Aug 2008 21:02:36 +0000 Received: from Charles_Duffy by rrcs-71-41-149-67.sw.biz.rr.com with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 04 Aug 2008 21:02:36 +0000 Sender: kvm-owner@vger.kernel.org List-ID: This is a multi-part message in MIME format. --------------010300010104020702020607 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Per subject. "git bisect run" script (and libvirt xml helper) attached. > 87b5acf6125d205119e3194c02ed6e71715517dc is first bad commit > commit 87b5acf6125d205119e3194c02ed6e71715517dc > Author: Anthony Liguori > Date: Wed May 7 13:09:40 2008 -0500 > > kvm: qemu: stop dropping so many RX packets in tap > > Normally, tap always reads packets and simply lets the client drop them if it > cannot receive them. For virtio-net, this results in massive packet loss and > about an 80% performance loss in TCP throughput. > > This patch modifies qemu_send_packet() to only deliver a packet to a VLAN > client if it doesn't have a fd_can_read method or the fd_can_read method > indicates that it can receive packets. We also return a status of whether > any clients were able to receive the packet. > > If no clients were able to receive a packet, we buffer the packet until a > client indicates that it can receive packets again. > > This patch also modifies the tap code to only read from the tap fd if at least > one client on the VLAN is able to receive a packet. > > Finally, this patch changes the tap code to drain all possible packets from > the tap device when the tap fd is readable. > > Signed-off-by: Anthony Liguori > Signed-off-by: Avi Kivity > > :040000 040000 648a4d52612e0ce68167f279d30bd3f4ec0f22f4 85352e7b252abb1247af2f024eab10a3e8ec0084 M qemu --------------010300010104020702020607 Content-Type: text/plain; name="kvm-e1000-test" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="kvm-e1000-test" #!/bin/bash LIBVIRT_VM_NAME=com.m1dev.syseng.cduffy.boottest LIBVIRT_VM_XML=/local/src/kvm-e1000-test.xml VM_CONSOLE_LOG=/local/src/kvm-e1000-test.out SRC_TREE_USER=/local/src/kvm-userspace SRC_TREE_KERN=/local/src/kvm set -e function try_patch() { local PATCH="$1" if patch -f -p0 --dry-run < "$PATCH" ; then patch -p0 < "$PATCH" fi return 0 } function cleanup() { virsh destroy ${LIBVIRT_VM_NAME} || true rm -f ${VM_CONSOLE_LOG} } function test_failure() { exit 125 } trap test_failure 0 cd ${SRC_TREE_USER} git reset --hard try_patch ../kvm-userspace.centos5_compat.kvm-69.patch try_patch ../kvm-userspace.centos5_compat.kvm-70.patch ./configure \ --prefix=/opt/kvm.git \ --kerneldir=/usr/src/kernels/2.6.18-92.1.6.el5-x86_64 \ --disable-gfx-check \ --disable-sdl make WANT_MODULE= KERNELDIR=${SRC_TREE_KERN} clean make WANT_MODULE= KERNELDIR=${SRC_TREE_KERN} make WANT_MODULE= KERNELDIR=${SRC_TREE_KERN} install git reset --hard cleanup virsh create "${LIBVIRT_VM_XML}" sleep 5 if [ ! -e "${VM_CONSOLE_LOG}" ] ; then echo 'ERR: No virtual console detected' >&2 exit 125 fi echo 'Waiting for kernel splash notice' >&2 trap - 0 trap cleanup 0 COUNTDOWN=60 while [ "$COUNTDOWN" -gt 0 ] ; do echo -n '.' >&2 COUNTDOWN="$(($COUNTDOWN - 1))" sleep 1 if grep -e 'Linux version' ${VM_CONSOLE_LOG} ; then echo 'OK: net boot succeeded' >&2 exit 0 fi done echo 'BAD: no net boot detected' >&2 exit 1 --------------010300010104020702020607 Content-Type: text/xml; name="kvm-e1000-test.xml" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="kvm-e1000-test.xml" com.m1dev.syseng.cduffy.boottest 70d09285-f451-426d-8ab0-4c4810616ce6 768432 768432 1 hvm destroy restart destroy /opt/kvm.git/bin/qemu-system-x86_64 --------------010300010104020702020607--