qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 2/3] hw/virtio-net.c: set config size using host


From: Christian Borntraeger
Subject: Re: [Qemu-devel] [PATCH 2/3] hw/virtio-net.c: set config size using host features
Date: Thu, 07 Mar 2013 17:27:51 +0100
User-agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130221 Thunderbird/17.0.3

> 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);
> <snip>
> 
> 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] address@hidden:~/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?


At least, this patch seems to work. (That also implies, that a transport
must not hide virtio feature bits).


From: Christian Borntraeger <address@hidden>
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 <address@hidden>
---
 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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]