From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:35966) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UDduq-00018R-Ql for qemu-devel@nongnu.org; Thu, 07 Mar 2013 11:43:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UDduo-0001ke-7x for qemu-devel@nongnu.org; Thu, 07 Mar 2013 11:43:36 -0500 Received: from e23smtp03.au.ibm.com ([202.81.31.145]:45161) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UDdun-0001kD-MS for qemu-devel@nongnu.org; Thu, 07 Mar 2013 11:43:34 -0500 Received: from /spool/local by e23smtp03.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 8 Mar 2013 02:36:59 +1000 Received: from d23relay03.au.ibm.com (d23relay03.au.ibm.com [9.190.235.21]) by d23dlp02.au.ibm.com (Postfix) with ESMTP id BBB422BB0023 for ; Fri, 8 Mar 2013 03:43:21 +1100 (EST) Received: from d23av03.au.ibm.com (d23av03.au.ibm.com [9.190.234.97]) by d23relay03.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r27GhHpk63176862 for ; Fri, 8 Mar 2013 03:43:18 +1100 Received: from d23av03.au.ibm.com (loopback [127.0.0.1]) by d23av03.au.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id r27GhK7C015703 for ; Fri, 8 Mar 2013 03:43:20 +1100 From: Anthony Liguori In-Reply-To: <5138C007.6080305@de.ibm.com> References: <1360108037-9211-1-git-send-email-jlarrew@linux.vnet.ibm.com> <1360108037-9211-3-git-send-email-jlarrew@linux.vnet.ibm.com> <513621F7.9030403@suse.de> <51362575.2000908@de.ibm.com> <87621319kc.fsf@codemonkey.ws> <5138C007.6080305@de.ibm.com> Date: Thu, 07 Mar 2013 10:43:14 -0600 Message-ID: <87wqtj6tzx.fsf@codemonkey.ws> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: Re: [Qemu-devel] [PATCH 2/3] hw/virtio-net.c: set config size using host features List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Christian Borntraeger Cc: qemu-devel@nongnu.org, Cornelia Huck , Jens Freimann , Alexander Graf , Jesse Larrew Christian Borntraeger writes: >> You're misreading how this works. >> >> Host features are set based on command line arguments. This is >> advertised to the guest. The vdev->get_config() call then sanitizes >> features. For instance, look at: >> >> static uint32_t virtio_net_get_features(VirtIODevice *vdev, uint32_t features) >> { >> VirtIONet *n = to_virtio_net(vdev); >> NetClientState *nc = qemu_get_queue(n->nic); >> >> features |= (1 << VIRTIO_NET_F_MAC); >> >> if (!peer_has_vnet_hdr(n)) { >> features &= ~(0x1 << VIRTIO_NET_F_CSUM); >> >> >> This removes the VIRTIO_NET_F_CSUM feature if the peer doesn't support >> it. It's presupposing that the feature bit is set. >> >> It's a bug in both virtio-ccw that features=0 when get_features is >> called. You can also tell this with: >> >> [10:02 AM] anthony@titi:~/git/qemu/hw/s390x$ grep DEFINE_VIRTIO_NET_FEATURES * >> virtio-ccw.c: DEFINE_VIRTIO_NET_FEATURES(VirtioCcwDevice, host_features[0]), >> >> So virtio-s390 is doing it wrong, but virtio-ccw looks like its doing it >> right. > > There is a parse error in your statement (error in both virtio-ccw). > Is virtio-ccw ok or not? Sorry, virtio-ccw is okay. > At least, this patch seems to work. (That also implies, that a transport > must not hide virtio feature bits). Looks correct to me. Reviewed-by: Anthony Liguori Regards, Anthony Liguori > > > From: Christian Borntraeger > Date: Thu, 7 Mar 2013 17:21:41 +0100 > Subject: [PATCH] Allow virtio-net features for legacy s390 virtio bus > > Enable all virtio-net features for the legacy s390 virtio bus. > This also fixes > kernel BUG at /usr/src/packages/BUILD/kernel-default-3.0.58/linux-3.0/drivers/s390/kvm/kvm_virtio.c:121! > > Signed-off-by: Christian Borntraeger > --- > hw/s390x/s390-virtio-bus.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/hw/s390x/s390-virtio-bus.c b/hw/s390x/s390-virtio-bus.c > index 1200691..a8a8e19 100644 > --- a/hw/s390x/s390-virtio-bus.c > +++ b/hw/s390x/s390-virtio-bus.c > @@ -399,6 +399,7 @@ static const VirtIOBindings virtio_s390_bindings = { > > static Property s390_virtio_net_properties[] = { > DEFINE_NIC_PROPERTIES(VirtIOS390Device, nic), > + DEFINE_VIRTIO_NET_FEATURES(VirtIOS390Device, host_features), > DEFINE_PROP_UINT32("x-txtimer", VirtIOS390Device, > net.txtimer, TX_TIMER_INTERVAL), > DEFINE_PROP_INT32("x-txburst", VirtIOS390Device, > -- > 1.8.0.1