Re: [PATCHv4 2/2] vhost_net: a kernel-level virtio server
From: "Michael S. Tsirkin" <mst@redhat.com>
Date: 2009-08-25 17:55:42
Also in:
kvm, linux-mm, lkml
From: "Michael S. Tsirkin" <mst@redhat.com>
Date: 2009-08-25 17:55:42
Also in:
kvm, linux-mm, lkml
On Tue, Aug 25, 2009 at 09:40:40PM +0930, Rusty Russell wrote:
quoted
+ u32 __user *featurep = argp; + int __user *fdp = argp; + u32 features; + int fd, r; + switch (ioctl) { + case VHOST_NET_SET_SOCKET: + r = get_user(fd, fdp); + if (r < 0) + return r; + return vhost_net_set_socket(n, fd); + case VHOST_GET_FEATURES: + /* No features for now */ + features = 0; + return put_user(features, featurep);We may well get more than 32 feature bits, at least for virtio_net, which will force us to do some trickery in virtio_pci.
Unlike PCI, if we ever run out of bits we can just add FEATURES_EXTENDED ioctl, no need for trickery.
I'd like to avoid that here, though it's kind of ugly. We'd need VHOST_GET_FEATURES (and ACK) to take a struct like: u32 feature_size; u32 features[];
Thinking about this proposal some more, how will the guest determine the size to supply the GET_FEATURES ioctl? Since we are a bit tight in 32 bit space already, let's just use a 64 bit integer and be done with it? Right? -- MST