mirror of https://gitee.com/openkylin/linux.git
virtio: docs, tests for 4.7
This merely has some documentation and a new test, seems safe to merge. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJXVUuiAAoJECgfDbjSjVRpm6AH/2LWANmP6paHOxXH/9BNKO3y 4N0HeLo14JATPfiAYpfUm1TikusMn/qEZHLXQaykIC/8Hj5M7RbU1RKrSu0wrZb+ +9NXRQtasj9SHeAvG6jLCaKNOR3ezdNOVM4RI3MkyGBx875PTWGQoYloDFRqYPlD TBkRKxctc4IAyck+nuZGYYHcQQ5SCA+6d0/FDAp2vNXO1+faNR0+p2MGOqQSzCkw KWv1b4nV7y+tjaylpckQADBDZZlwanDvVGLxlMPXNwmhe7XyhLIQ+cO7bgCiFPfz VpFiZJ5Imq2oxc7KboDuyyQjoft5DzJ6N7gVkpO+1fqrNazHZopUdhAyC1Qveog= =DANA -----END PGP SIGNATURE----- Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost Pull virtio docs and tests from Michael Tsirkin: "This merely has some documentation and a new test, seems safe to merge" * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost: tools/virtio: add noring tool tools/virtio/ringtest: fix run-on-all.sh to work without /dev/cpu tools/virtio/ringtest: add usage example to README MAINTAINERS: Add file patterns for virtio device tree bindings
This commit is contained in:
commit
78ae255f78
|
@ -12148,6 +12148,7 @@ VIRTIO CORE, NET AND BLOCK DRIVERS
|
|||
M: "Michael S. Tsirkin" <mst@redhat.com>
|
||||
L: virtualization@lists.linux-foundation.org
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/virtio/
|
||||
F: drivers/virtio/
|
||||
F: tools/virtio/
|
||||
F: drivers/net/virtio_net.c
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
all:
|
||||
|
||||
all: ring virtio_ring_0_9 virtio_ring_poll virtio_ring_inorder
|
||||
all: ring virtio_ring_0_9 virtio_ring_poll virtio_ring_inorder noring
|
||||
|
||||
CFLAGS += -Wall
|
||||
CFLAGS += -pthread -O2 -ggdb
|
||||
|
@ -15,11 +15,13 @@ ring: ring.o main.o
|
|||
virtio_ring_0_9: virtio_ring_0_9.o main.o
|
||||
virtio_ring_poll: virtio_ring_poll.o main.o
|
||||
virtio_ring_inorder: virtio_ring_inorder.o main.o
|
||||
noring: noring.o main.o
|
||||
clean:
|
||||
-rm main.o
|
||||
-rm ring.o ring
|
||||
-rm virtio_ring_0_9.o virtio_ring_0_9
|
||||
-rm virtio_ring_poll.o virtio_ring_poll
|
||||
-rm virtio_ring_inorder.o virtio_ring_inorder
|
||||
-rm noring.o noring
|
||||
|
||||
.PHONY: all clean
|
||||
|
|
|
@ -1,2 +1,6 @@
|
|||
Partial implementation of various ring layouts, useful to tune virtio design.
|
||||
Uses shared memory heavily.
|
||||
|
||||
Typical use:
|
||||
|
||||
# sh run-on-all.sh perf stat -r 10 --log-fd 1 -- ./ring
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
#define _GNU_SOURCE
|
||||
#include "main.h"
|
||||
#include <assert.h>
|
||||
|
||||
/* stub implementation: useful for measuring overhead */
|
||||
void alloc_ring(void)
|
||||
{
|
||||
}
|
||||
|
||||
/* guest side */
|
||||
int add_inbuf(unsigned len, void *buf, void *datap)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* skb_array API provides no way for producer to find out whether a given
|
||||
* buffer was consumed. Our tests merely require that a successful get_buf
|
||||
* implies that add_inbuf succeed in the past, and that add_inbuf will succeed,
|
||||
* fake it accordingly.
|
||||
*/
|
||||
void *get_buf(unsigned *lenp, void **bufp)
|
||||
{
|
||||
return "Buffer";
|
||||
}
|
||||
|
||||
void poll_used(void)
|
||||
{
|
||||
}
|
||||
|
||||
void disable_call()
|
||||
{
|
||||
assert(0);
|
||||
}
|
||||
|
||||
bool enable_call()
|
||||
{
|
||||
assert(0);
|
||||
}
|
||||
|
||||
void kick_available(void)
|
||||
{
|
||||
assert(0);
|
||||
}
|
||||
|
||||
/* host side */
|
||||
void disable_kick()
|
||||
{
|
||||
assert(0);
|
||||
}
|
||||
|
||||
bool enable_kick()
|
||||
{
|
||||
assert(0);
|
||||
}
|
||||
|
||||
void poll_avail(void)
|
||||
{
|
||||
}
|
||||
|
||||
bool use_buf(unsigned *lenp, void **bufp)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void call_used(void)
|
||||
{
|
||||
assert(0);
|
||||
}
|
|
@ -3,10 +3,10 @@
|
|||
#use last CPU for host. Why not the first?
|
||||
#many devices tend to use cpu0 by default so
|
||||
#it tends to be busier
|
||||
HOST_AFFINITY=$(cd /dev/cpu; ls|grep -v '[a-z]'|sort -n|tail -1)
|
||||
HOST_AFFINITY=$(lscpu -p=cpu | tail -1)
|
||||
|
||||
#run command on all cpus
|
||||
for cpu in $(cd /dev/cpu; ls|grep -v '[a-z]'|sort -n);
|
||||
for cpu in $(seq 0 $HOST_AFFINITY)
|
||||
do
|
||||
#Don't run guest and host on same CPU
|
||||
#It actually works ok if using signalling
|
||||
|
|
Loading…
Reference in New Issue