Recent changes to drivers/virtio broke compilation for the tests in tools/virtio. The following patches are build fixes for those changes, as well as a fix for a typo that would have never built. The changes were tested on my amd64 system against 3.14-rc2. Joel Stanley (3): tools/virtio: update internal copies of headers tools/virtio: fix missing kmemleak_ignore symbol tools/virtio: add a missing ) drivers/virtio/virtio_ring.c | 1 + tools/virtio/linux/kmemleak.h | 3 +++ tools/virtio/linux/virtio.h | 4 ++-- tools/virtio/virtio_test.c | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 tools/virtio/linux/kmemleak.h -- 1.9.rc1
Joel Stanley
2014-Feb-11 06:28 UTC
[PATCH 1/3] tools/virtio: update internal copies of headers
The virtio headers have changed recently: 5b1bf7cb673 virtio_ring: let virtqueue_{kick()/notify()} return a bool 46f9c2b925a virtio_ring: change host notification API Update the internal copies to fix the build of virtio_test: cc -g -O2 -Wall -I. -I ../../usr/include/ -Wno-pointer-sign -fno-strict-overflow -fno-strict-aliasing -fno-common -MMD -U_FORTIFY_SOURCE -c -o virtio_test.o virtio_test.c In file included from virtio_test.c:15:0: ./linux/virtio.h:76:19: error: conflicting types for ?vring_new_virtqueue? struct virtqueue *vring_new_virtqueue(unsigned int index, ^ In file included from ./linux/virtio_ring.h:1:0, from ../../usr/include/linux/vhost.h:17, from virtio_test.c:14: ./linux/../../../include/linux/virtio_ring.h:68:19: note: previous declaration of ?vring_new_virtqueue? was here struct virtqueue *vring_new_virtqueue(unsigned int index, virtio_test.c: In function ?vq_info_add?: virtio_test.c:103:12: warning: passing argument 7 of ?vring_new_virtqueue? from incompatible pointer type [enabled by default] vq_notify, vq_callback, "test"); ^ In file included from virtio_test.c:15:0: ./linux/virtio.h:76:19: note: expected ?void (*)(struct virtqueue *)? but argument is of type ?_Bool (*)(struct virtqueue *)? struct virtqueue *vring_new_virtqueue(unsigned int index, ^ Signed-off-by: Joel Stanley <joel at jms.id.au> --- tools/virtio/linux/virtio.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/virtio/linux/virtio.h b/tools/virtio/linux/virtio.h index 8447830..5a2d1f0 100644 --- a/tools/virtio/linux/virtio.h +++ b/tools/virtio/linux/virtio.h @@ -63,7 +63,7 @@ int virtqueue_add_inbuf(struct virtqueue *vq, void *data, gfp_t gfp); -void virtqueue_kick(struct virtqueue *vq); +bool virtqueue_kick(struct virtqueue *vq); void *virtqueue_get_buf(struct virtqueue *vq, unsigned int *len); @@ -79,7 +79,7 @@ struct virtqueue *vring_new_virtqueue(unsigned int index, struct virtio_device *vdev, bool weak_barriers, void *pages, - void (*notify)(struct virtqueue *vq), + bool (*notify)(struct virtqueue *vq), void (*callback)(struct virtqueue *vq), const char *name); void vring_del_virtqueue(struct virtqueue *vq); -- 1.9.rc1
Joel Stanley
2014-Feb-11 06:28 UTC
[PATCH 2/3] tools/virtio: fix missing kmemleak_ignore symbol
In commit bb478d8b167 virtio_ring: plug kmemleak false positive, kmemleak_ignore was introduced. This broke compilation of virtio_test: cc -g -O2 -Wall -I. -I ../../usr/include/ -Wno-pointer-sign -fno-strict-overflow -fno-strict-aliasing -fno-common -MMD -U_FORTIFY_SOURCE -c -o virtio_ring.o ../../drivers/virtio/virtio_ring.c ../../drivers/virtio/virtio_ring.c: In function ?vring_add_indirect?: ../../drivers/virtio/virtio_ring.c:177:2: warning: implicit declaration of function ?kmemleak_ignore? [-Wimplicit-function-declaration] kmemleak_ignore(desc); ^ cc virtio_test.o virtio_ring.o -o virtio_test virtio_ring.o: In function `vring_add_indirect': tools/virtio/../../drivers/virtio/virtio_ring.c:177: undefined reference to `kmemleak_ignore' Add a dummy header for tools/virtio, and add #incldue <linux/kmemleak.h> to drivers/virtio/virtio_ring.c so it is picked up by the userspace tools. Signed-off-by: Joel Stanley <joel at jms.id.au> --- drivers/virtio/virtio_ring.c | 1 + tools/virtio/linux/kmemleak.h | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 tools/virtio/linux/kmemleak.h diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index 28b5338..7ae3cba 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c @@ -23,6 +23,7 @@ #include <linux/slab.h> #include <linux/module.h> #include <linux/hrtimer.h> +#include <linux/kmemleak.h> #ifdef DEBUG /* For development, we want to crash whenever the ring is screwed. */ diff --git a/tools/virtio/linux/kmemleak.h b/tools/virtio/linux/kmemleak.h new file mode 100644 index 0000000..c070722 --- /dev/null +++ b/tools/virtio/linux/kmemleak.h @@ -0,0 +1,3 @@ +static inline void kmemleak_ignore(const void *ptr) +{ +} -- 1.9.rc1
Fixes the following build failure: cc -g -O2 -Wall -I. -I ../../usr/include/ -Wno-pointer-sign -fno-strict-overflow -fno-strict-aliasing -fno-common -MMD -U_FORTIFY_SOURCE -c -o virtio_test.o virtio_test.c virtio_test.c: In function ?run_test?: virtio_test.c:176:7: error: expected ?)? before ?r? r = -1; ^ Signed-off-by: Joel Stanley <joel at jms.id.au> --- tools/virtio/virtio_test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/virtio/virtio_test.c b/tools/virtio/virtio_test.c index bdb71a2..00ea679 100644 --- a/tools/virtio/virtio_test.c +++ b/tools/virtio/virtio_test.c @@ -172,7 +172,7 @@ static void run_test(struct vdev_info *dev, struct vq_info *vq, GFP_ATOMIC); if (likely(r == 0)) { ++started; - if (unlikely(!virtqueue_kick(vq->vq)) + if (unlikely(!virtqueue_kick(vq->vq))) r = -1; } } else -- 1.9.rc1
Michael S. Tsirkin
2014-Feb-11 06:57 UTC
[PATCH 0/3] tools/virtio: build fixes for virtio_test
On Tue, Feb 11, 2014 at 04:58:17PM +1030, Joel Stanley wrote:> Recent changes to drivers/virtio broke compilation for the tests in > tools/virtio. The following patches are build fixes for those changes, as well > as a fix for a typo that would have never built. > > The changes were tested on my amd64 system against 3.14-rc2.Ah, thanks a lot for posting this. I had this fixed in my tree but forgot to send. For the series: Acked-by: Michael S. Tsirkin <mst at redhat.com> Rusty, will you pick this up?> Joel Stanley (3): > tools/virtio: update internal copies of headers > tools/virtio: fix missing kmemleak_ignore symbol > tools/virtio: add a missing ) > > drivers/virtio/virtio_ring.c | 1 + > tools/virtio/linux/kmemleak.h | 3 +++ > tools/virtio/linux/virtio.h | 4 ++-- > tools/virtio/virtio_test.c | 2 +- > 4 files changed, 7 insertions(+), 3 deletions(-) > create mode 100644 tools/virtio/linux/kmemleak.h > > -- > 1.9.rc1
"Michael S. Tsirkin" <mst at redhat.com> writes:> On Tue, Feb 11, 2014 at 04:58:17PM +1030, Joel Stanley wrote: >> Recent changes to drivers/virtio broke compilation for the tests in >> tools/virtio. The following patches are build fixes for those changes, as well >> as a fix for a typo that would have never built. >> >> The changes were tested on my amd64 system against 3.14-rc2. > > Ah, thanks a lot for posting this. > I had this fixed in my tree but forgot to send. > For the series: > > Acked-by: Michael S. Tsirkin <mst at redhat.com> > > Rusty, will you pick this up?Applied. Thanks, Rusty.
"Michael S. Tsirkin" <mst at redhat.com> writes:> On Tue, Feb 11, 2014 at 04:58:17PM +1030, Joel Stanley wrote: >> Recent changes to drivers/virtio broke compilation for the tests in >> tools/virtio. The following patches are build fixes for those changes, as well >> as a fix for a typo that would have never built. >> >> The changes were tested on my amd64 system against 3.14-rc2. > > Ah, thanks a lot for posting this. > I had this fixed in my tree but forgot to send. > For the series: > > Acked-by: Michael S. Tsirkin <mst at redhat.com> > > Rusty, will you pick this up?Hmm, add added: Fixes: 53c18c9906441 (virtio_test: verify if virtqueue_kick() succeeded) Cc: Heinz Graalfs <graalfs at linux.vnet.ibm.com> Heinz, you didn't compile test your patch. Insert angry-Torvalds-face here, Rusty.