@@ -531,49 +531,41 @@ static int init_vqs(struct virtio_balloon *vb)
struct virtqueue *vqs[VIRTIO_BALLOON_VQ_MAX];
vq_callback_t *callbacks[VIRTIO_BALLOON_VQ_MAX];
const char *names[VIRTIO_BALLOON_VQ_MAX];
- int err;
+ int err, idx = 0;
- /*
- * Inflateq and deflateq are used unconditionally. The names[]
- * will be NULL if the related feature is not enabled, which will
- * cause no allocation for the corresponding virtqueue in find_vqs.
- */
- callbacks[VIRTIO_BALLOON_VQ_INFLATE] = balloon_ack;
- names[VIRTIO_BALLOON_VQ_INFLATE] = "inflate";
- callbacks[VIRTIO_BALLOON_VQ_DEFLATE] = balloon_ack;
- names[VIRTIO_BALLOON_VQ_DEFLATE] = "deflate";
- callbacks[VIRTIO_BALLOON_VQ_STATS] = NULL;
- names[VIRTIO_BALLOON_VQ_STATS] = NULL;
- callbacks[VIRTIO_BALLOON_VQ_FREE_PAGE] = NULL;
- names[VIRTIO_BALLOON_VQ_FREE_PAGE] = NULL;
- names[VIRTIO_BALLOON_VQ_REPORTING] = NULL;
+ callbacks[idx] = balloon_ack;
+ names[idx++] = "inflate";
+ callbacks[idx] = balloon_ack;
+ names[idx++] = "deflate";
if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_STATS_VQ)) {
- names[VIRTIO_BALLOON_VQ_STATS] = "stats";
- callbacks[VIRTIO_BALLOON_VQ_STATS] = stats_request;
+ names[idx] = "stats";
+ callbacks[idx++] = stats_request;
}
if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_FREE_PAGE_HINT)) {
- names[VIRTIO_BALLOON_VQ_FREE_PAGE] = "free_page_vq";
- callbacks[VIRTIO_BALLOON_VQ_FREE_PAGE] = NULL;
+ names[idx] = "free_page_vq";
+ callbacks[idx++] = NULL;
}
if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_REPORTING)) {
- names[VIRTIO_BALLOON_VQ_REPORTING] = "reporting_vq";
- callbacks[VIRTIO_BALLOON_VQ_REPORTING] = balloon_ack;
+ names[idx] = "reporting_vq";
+ callbacks[idx++] = balloon_ack;
}
- err = virtio_find_vqs(vb->vdev, VIRTIO_BALLOON_VQ_MAX, vqs,
- callbacks, names, NULL);
+ err = virtio_find_vqs(vb->vdev, idx, vqs, callbacks, names, NULL);
if (err)
return err;
- vb->inflate_vq = vqs[VIRTIO_BALLOON_VQ_INFLATE];
- vb->deflate_vq = vqs[VIRTIO_BALLOON_VQ_DEFLATE];
+ idx = 0;
+
+ vb->inflate_vq = vqs[idx++];
+ vb->deflate_vq = vqs[idx++];
+
if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_STATS_VQ)) {
struct scatterlist sg;
unsigned int num_stats;
- vb->stats_vq = vqs[VIRTIO_BALLOON_VQ_STATS];
+ vb->stats_vq = vqs[idx++];
/*
* Prime this virtqueue with one buffer so the hypervisor can
@@ -593,10 +585,10 @@ static int init_vqs(struct virtio_balloon *vb)
}
if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_FREE_PAGE_HINT))
- vb->free_page_vq = vqs[VIRTIO_BALLOON_VQ_FREE_PAGE];
+ vb->free_page_vq = vqs[idx++];
if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_REPORTING))
- vb->reporting_vq = vqs[VIRTIO_BALLOON_VQ_REPORTING];
+ vb->reporting_vq = vqs[idx++];
return 0;
}