virtio: fixes on top of 4.3-rc1
This fixes the virtio-test tool, and improves the error handling for virtio-ccw. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJV+TrqAAoJECgfDbjSjVRpsBwH/0CqspPuCPR/QMHmw0w66lQh I2kYdkvJy/nAXtY+6JHhVgxbPzJeZ2im5BK3+8pIUoMXSHRn1QMn+/a0WCA0GvC2 iXSnIGFs/gMK80k2ULrf9HmopnxVtEZUY+6/DQXYD3lRDi25k8Xbs5x4ygPwGywD iV5/JPNjJvWLQQ4uDnlp6SoPfxa/P8lbpdZlIJHKAM0pTuWeU4rgncMo8SvHjVEL zyrg3ofDq3V0objwLOnLk0Z8i6uwEQrfZzprvDcZglK58B+jWm2cuAiaGoLHgwN6 xkSQEWMKeV66FTuqzI+bCsvWf04+EkGbxk75RLx3GfT2LJg59XgxqEpN7yOCKFg= =O2nr -----END PGP SIGNATURE----- Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost Pull virtio fixes and cleanups from Michael Tsirkin: "This fixes the virtio-test tool, and improves the error handling for virtio-ccw" * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost: virtio/s390: handle failures of READ_VQ_CONF ccw tools/virtio: propagate V=X to kernel build vhost: move features to core tools/virtio: fix build after 4.2 changes
This commit is contained in:
commit
00ade1f553
9 changed files with 31 additions and 8 deletions
|
@ -400,12 +400,16 @@ static bool virtio_ccw_kvm_notify(struct virtqueue *vq)
|
|||
static int virtio_ccw_read_vq_conf(struct virtio_ccw_device *vcdev,
|
||||
struct ccw1 *ccw, int index)
|
||||
{
|
||||
int ret;
|
||||
|
||||
vcdev->config_block->index = index;
|
||||
ccw->cmd_code = CCW_CMD_READ_VQ_CONF;
|
||||
ccw->flags = 0;
|
||||
ccw->count = sizeof(struct vq_config_block);
|
||||
ccw->cda = (__u32)(unsigned long)(vcdev->config_block);
|
||||
ccw_io_helper(vcdev, ccw, VIRTIO_CCW_DOING_READ_VQ_CONF);
|
||||
ret = ccw_io_helper(vcdev, ccw, VIRTIO_CCW_DOING_READ_VQ_CONF);
|
||||
if (ret)
|
||||
return ret;
|
||||
return vcdev->config_block->num;
|
||||
}
|
||||
|
||||
|
@ -503,6 +507,10 @@ static struct virtqueue *virtio_ccw_setup_vq(struct virtio_device *vdev,
|
|||
goto out_err;
|
||||
}
|
||||
info->num = virtio_ccw_read_vq_conf(vcdev, ccw, i);
|
||||
if (info->num < 0) {
|
||||
err = info->num;
|
||||
goto out_err;
|
||||
}
|
||||
size = PAGE_ALIGN(vring_size(info->num, KVM_VIRTIO_CCW_RING_ALIGN));
|
||||
info->queue = alloc_pages_exact(size, GFP_KERNEL | __GFP_ZERO);
|
||||
if (info->queue == NULL) {
|
||||
|
|
|
@ -61,8 +61,7 @@ MODULE_PARM_DESC(experimental_zcopytx, "Enable Zero Copy TX;"
|
|||
enum {
|
||||
VHOST_NET_FEATURES = VHOST_FEATURES |
|
||||
(1ULL << VHOST_NET_F_VIRTIO_NET_HDR) |
|
||||
(1ULL << VIRTIO_NET_F_MRG_RXBUF) |
|
||||
(1ULL << VIRTIO_F_VERSION_1),
|
||||
(1ULL << VIRTIO_NET_F_MRG_RXBUF)
|
||||
};
|
||||
|
||||
enum {
|
||||
|
|
|
@ -166,9 +166,7 @@ enum {
|
|||
/* Note: can't set VIRTIO_F_VERSION_1 yet, since that implies ANY_LAYOUT. */
|
||||
enum {
|
||||
VHOST_SCSI_FEATURES = VHOST_FEATURES | (1ULL << VIRTIO_SCSI_F_HOTPLUG) |
|
||||
(1ULL << VIRTIO_SCSI_F_T10_PI) |
|
||||
(1ULL << VIRTIO_F_ANY_LAYOUT) |
|
||||
(1ULL << VIRTIO_F_VERSION_1)
|
||||
(1ULL << VIRTIO_SCSI_F_T10_PI)
|
||||
};
|
||||
|
||||
#define VHOST_SCSI_MAX_TARGET 256
|
||||
|
|
|
@ -277,10 +277,13 @@ static long vhost_test_ioctl(struct file *f, unsigned int ioctl,
|
|||
return -EFAULT;
|
||||
return 0;
|
||||
case VHOST_SET_FEATURES:
|
||||
printk(KERN_ERR "1\n");
|
||||
if (copy_from_user(&features, featurep, sizeof features))
|
||||
return -EFAULT;
|
||||
printk(KERN_ERR "2\n");
|
||||
if (features & ~VHOST_FEATURES)
|
||||
return -EOPNOTSUPP;
|
||||
printk(KERN_ERR "3\n");
|
||||
return vhost_test_set_features(n, features);
|
||||
case VHOST_RESET_OWNER:
|
||||
return vhost_test_reset_owner(n);
|
||||
|
|
|
@ -173,7 +173,9 @@ enum {
|
|||
VHOST_FEATURES = (1ULL << VIRTIO_F_NOTIFY_ON_EMPTY) |
|
||||
(1ULL << VIRTIO_RING_F_INDIRECT_DESC) |
|
||||
(1ULL << VIRTIO_RING_F_EVENT_IDX) |
|
||||
(1ULL << VHOST_F_LOG_ALL),
|
||||
(1ULL << VHOST_F_LOG_ALL) |
|
||||
(1ULL << VIRTIO_F_ANY_LAYOUT) |
|
||||
(1ULL << VIRTIO_F_VERSION_1)
|
||||
};
|
||||
|
||||
static inline bool vhost_has_feature(struct vhost_virtqueue *vq, int bit)
|
||||
|
|
|
@ -6,7 +6,7 @@ vringh_test: vringh_test.o vringh.o virtio_ring.o
|
|||
CFLAGS += -g -O2 -Werror -Wall -I. -I../include/ -I ../../usr/include/ -Wno-pointer-sign -fno-strict-overflow -fno-strict-aliasing -fno-common -MMD -U_FORTIFY_SOURCE
|
||||
vpath %.c ../../drivers/virtio ../../drivers/vhost
|
||||
mod:
|
||||
${MAKE} -C `pwd`/../.. M=`pwd`/vhost_test
|
||||
${MAKE} -C `pwd`/../.. M=`pwd`/vhost_test V=${V}
|
||||
.PHONY: all test mod clean
|
||||
clean:
|
||||
${RM} *.o vringh_test virtio_test vhost_test/*.o vhost_test/.*.cmd \
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
#define mb() __sync_synchronize()
|
||||
|
||||
#define smp_mb() mb()
|
||||
# define dma_rmb() barrier()
|
||||
# define dma_wmb() barrier()
|
||||
# define smp_rmb() barrier()
|
||||
# define smp_wmb() barrier()
|
||||
/* Weak barriers should be used. If not - it's a bug */
|
||||
|
|
3
tools/virtio/linux/export.h
Normal file
3
tools/virtio/linux/export.h
Normal file
|
@ -0,0 +1,3 @@
|
|||
#define EXPORT_SYMBOL_GPL(sym) extern typeof(sym) sym
|
||||
#define EXPORT_SYMBOL(sym) extern typeof(sym) sym
|
||||
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
typedef unsigned long long dma_addr_t;
|
||||
typedef size_t __kernel_size_t;
|
||||
typedef unsigned int __wsum;
|
||||
|
||||
struct page {
|
||||
unsigned long long dummy;
|
||||
|
@ -47,6 +48,13 @@ static inline void *kmalloc(size_t s, gfp_t gfp)
|
|||
return __kmalloc_fake;
|
||||
return malloc(s);
|
||||
}
|
||||
static inline void *kzalloc(size_t s, gfp_t gfp)
|
||||
{
|
||||
void *p = kmalloc(s, gfp);
|
||||
|
||||
memset(p, 0, s);
|
||||
return p;
|
||||
}
|
||||
|
||||
static inline void kfree(void *p)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue