09 Jul, 2013

1 commit

  • This fixes build for the vringh test:
    [linux]$ make -C tools/virtio/
    make: Entering directory `/home/mst/scm/linux/tools/virtio'
    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 vringh.o ../../drivers/vhost/vringh.c
    ../../drivers/vhost/vringh.c:1010:16: error: expected declaration
    specifiers or ‘...’ before string constant

    Signed-off-by: Michael S. Tsirkin
    Signed-off-by: Rusty Russell

    Michael S. Tsirkin
     

20 Mar, 2013

6 commits

  • Make the rest of the paths use virtqueue_add_sgs or add_outbuf.

    Signed-off-by: Rusty Russell

    Rusty Russell
     
  • As expected, the simplified accessors are faster.

    for i in `seq 50`; do /usr/bin/time -f 'Wall time:%e' ./vringh_test --indirect --eventidx --parallel --fast-vringh; done 2>&1 | stats --trim-outliers:

    Before:
    Using CPUS 0 and 3
    Guest: notified 0, pinged 39062-39063(39063)
    Host: notified 39062-39063(39063), pinged 0
    Wall time:1.760000-2.220000(1.789167)

    After:
    Using CPUS 0 and 3
    Guest: notified 0, pinged 39037-39063(39062)
    Host: notified 39037-39063(39062), pinged 0
    Wall time:1.640000-1.810000(1.676875)

    Signed-off-by: Rusty Russell

    Rusty Russell
     
  • virtio_scsi can really use this, to avoid the current hack of copying
    the whole sg array. Some other things get slightly neater, too.

    This causes a slowdown in virtqueue_add_buf(), which is implemented as
    a wrapper. This is addressed in the next patches.

    for i in `seq 50`; do /usr/bin/time -f 'Wall time:%e' ./vringh_test --indirect --eventidx --parallel --fast-vringh; done 2>&1 | stats --trim-outliers:

    Before:
    Using CPUS 0 and 3
    Guest: notified 0, pinged 39009-39063(39062)
    Host: notified 39009-39063(39062), pinged 0
    Wall time:1.700000-1.950000(1.723542)

    After:
    Using CPUS 0 and 3
    Guest: notified 0, pinged 39062-39063(39063)
    Host: notified 39062-39063(39063), pinged 0
    Wall time:1.760000-2.220000(1.789167)

    Signed-off-by: Rusty Russell
    Reviewed-by: Wanlong Gao
    Reviewed-by: Asias He

    Rusty Russell
     
  • This is mainly to test the drivers/vhost/vringh.c code, but it also
    uses the drivers/virtio/virtio_ring.c code for the guest side.

    Usage for testing the basic implementation:

    ./vringh_test
    # Test with indirect descriptors
    ./vringh_test --indirect
    # Test with indirect descriptors and event indexex
    ./vringh_test --indirect --eventidx

    You can run a parallel stress test by adding --parallel to any of the
    above options.

    eg ./vringh_test --parallel:
    Using CPUS 0 and 3
    Guest: notified 10107974, pinged 107970
    Host: notified 108158, pinged 3172148

    ./vringh_test --indirect --eventidx --parallel:
    Using CPUS 0 and 3
    Guest: notified 156357, pinged 156251
    Host: notified 156251, pinged 78179

    Average of 50 times doing ./vringh_test --indirect --eventidx --parallel:
    2.840000-3.040000(2.927292)user

    Signed-off-by: Rusty Russell

    Rusty Russell
     
  • This makes them a bit more like the kernel headers, so we can include more
    real kernel headers in our tests.

    In addition this means that we don't break tools/virtio with the next
    patch.

    Signed-off-by: Rusty Russell

    Rusty Russell
     
  • Signed-off-by: Michael S. Tsirkin
    Signed-off-by: Rusty Russell

    Michael S. Tsirkin
     

21 Dec, 2012

1 commit

  • Pull virtio update from Rusty Russell:
    "Some nice cleanups, and even a patch my wife did as a "live" demo for
    Latinoware 2012.

    There's a slightly non-trivial merge in virtio-net, as we cleaned up
    the virtio add_buf interface while DaveM accepted the mq virtio-net
    patches."

    * tag 'virtio-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux: (27 commits)
    virtio_console: Add support for remoteproc serial
    virtio_console: Merge struct buffer_token into struct port_buffer
    virtio: add drv_to_virtio to make code clearly
    virtio: use dev_to_virtio wrapper in virtio
    virtio-mmio: Fix irq parsing in command line parameter
    virtio_console: Free buffers from out-queue upon close
    virtio: Convert dev_printk(KERN_ to dev_(
    virtio_console: Use kmalloc instead of kzalloc
    virtio_console: Free buffer if splice fails
    virtio: tools: make it clear that virtqueue_add_buf() no longer returns > 0
    virtio: scsi: make it clear that virtqueue_add_buf() no longer returns > 0
    virtio: rpmsg: make it clear that virtqueue_add_buf() no longer returns > 0
    virtio: net: make it clear that virtqueue_add_buf() no longer returns > 0
    virtio: console: make it clear that virtqueue_add_buf() no longer returns > 0
    virtio: make virtqueue_add_buf() returning 0 on success, not capacity.
    virtio: console: don't rely on virtqueue_add_buf() returning capacity.
    virtio_net: don't rely on virtqueue_add_buf() returning capacity.
    virtio-net: remove unused skb_vnet_hdr->num_sg field
    virtio-net: correct capacity math on ring full
    virtio: move queue_index and num_free fields into core struct virtqueue.
    ...

    Linus Torvalds
     

18 Dec, 2012

1 commit


06 Dec, 2012

1 commit


28 Sep, 2012

2 commits

  • pthread flag should not be -lpthread but -pthread using gcc. The -lpthread
    links the external multithread library. On the other hand, the -pthread manages
    both the gcc's preprocessor and linker to be able to compile with pthread.

    Signed-off-by: Yoshihiro YUNOMAE
    Signed-off-by: Rusty Russell

    Yoshihiro YUNOMAE
     
  • This patch adds a user tool, "trace agent" for sending trace data of a guest to
    a Host in low overhead. This agent has the following functions:
    - splice a page of ring-buffer to read_pipe without memory copying
    - splice the page from write_pipe to virtio-console without memory copying
    - write trace data to stdout by using -o option
    - controlled by start/stop orders from a Host

    Changes in v2:
    - Cleanup (change fprintf() to pr_err() and an include guard)

    Signed-off-by: Yoshihiro YUNOMAE
    Acked-by: Amit Shah
    Signed-off-by: Rusty Russell

    Yoshihiro YUNOMAE
     

02 May, 2012

1 commit


28 Feb, 2012

3 commits


12 Jan, 2012

2 commits

  • Remove wrapper functions. This makes the allocation type explicit in
    all callers; I used GPF_KERNEL where it seemed obvious, left it at
    GFP_ATOMIC otherwise.

    Signed-off-by: Rusty Russell
    Reviewed-by: Christoph Hellwig

    Rusty Russell
     
  • We were cheating with our barriers; using the smp ones rather than the
    real device ones. That was fine, until rpmsg came along, which is
    used to talk to a real device (a non-SMP CPU).

    Unfortunately, just putting back the real barriers (reverting
    d57ed95d) causes a performance regression on virtio-pci. In
    particular, Amos reports netbench's TCP_RR over virtio_net CPU
    utilization increased up to 35% while throughput went down by up to
    14%.

    By comparison, this branch is in the noise.

    Reference: https://lkml.org/lkml/2011/12/11/22

    Signed-off-by: Rusty Russell

    Rusty Russell
     

30 May, 2011

1 commit


09 Dec, 2010

2 commits

  • This is the userspace part of the tool: it includes a bunch of stubs for
    linux APIs, somewhat simular to linuxsched. This makes it possible to
    recompile the ring code in userspace.

    A small test example is implemented combining this with vhost_test
    module.

    Signed-off-by: Michael S. Tsirkin

    Michael S. Tsirkin
     
  • This adds a test module for vhost infrastructure.
    Intentionally not tied to kbuild to prevent people
    from installing and loading it accidentally.

    Signed-off-by: Michael S. Tsirkin

    Michael S. Tsirkin