07 Dec, 2015

2 commits


16 Sep, 2015

1 commit


10 Sep, 2015

1 commit


16 Dec, 2014

6 commits


09 Dec, 2014

2 commits

  • Change u32 to u64, and use BIT_ULL and 1ULL everywhere.

    Note: transports are unchanged, and only set low 32 bit.
    This guarantees that no transport sets e.g. VERSION_1
    by mistake without proper support.

    Based on patch by Rusty.

    Signed-off-by: Rusty Russell
    Signed-off-by: Cornelia Huck
    Signed-off-by: Michael S. Tsirkin
    Reviewed-by: David Hildenbrand
    Reviewed-by: Cornelia Huck

    Michael S. Tsirkin
     
  • It seemed like a good idea to use bitmap for features
    in struct virtio_device, but it's actually a pain,
    and seems to become even more painful when we get more
    than 32 feature bits. Just change it to a u32 for now.

    Based on patch by Rusty.

    Suggested-by: David Hildenbrand
    Signed-off-by: Rusty Russell
    Signed-off-by: Cornelia Huck
    Signed-off-by: Michael S. Tsirkin
    Reviewed-by: Cornelia Huck

    Michael S. Tsirkin
     

02 May, 2014

2 commits

  • Combine all definitions into a common tools/include/linux/types.h and
    kill the wild growth elsewhere. Move DECLARE_BITMAP to its proper
    bitmap.h header.

    Signed-off-by: Borislav Petkov
    Acked-by: Rusty Russell
    Link: http://lkml.kernel.org/n/tip-azczs7qcv6h9xek9od10hiv2@git.kernel.org
    Signed-off-by: Jiri Olsa

    Borislav Petkov
     
  • So tools/ has been growing three, at a different stage of their
    development export.h headers and so we should unite into one. Add
    tools/include/ to the include path of virtio and liblockdep to pick the
    shared header now.

    Signed-off-by: Borislav Petkov
    Acked-by: Rusty Russell
    Cc: Arnaldo Carvalho de Melo
    Cc: Ingo Molnar
    Cc: Michael S. Tsirkin
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Sasha Levin
    Cc: virtio-dev@lists.oasis-open.org
    Cc: virtualization@lists.linux-foundation.org
    Link: http://lkml.kernel.org/r/1397493185-19521-2-git-send-email-bp@alien8.de
    Signed-off-by: Jiri Olsa

    Borislav Petkov
     

13 Mar, 2014

3 commits

  • 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;
    ^

    Fixes: 53c18c9906441 (virtio_test: verify if virtqueue_kick() succeeded)
    Cc: Heinz Graalfs
    Signed-off-by: Joel Stanley
    Acked-by: Michael S. Tsirkin
    Signed-off-by: Rusty Russell

    Joel Stanley
     
  • 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
    to drivers/virtio/virtio_ring.c so it is picked up by the userspace
    tools.

    Signed-off-by: Joel Stanley
    Signed-off-by: Rusty Russell

    Joel Stanley
     
  • 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
    Signed-off-by: Rusty Russell

    Joel Stanley
     

29 Oct, 2013

2 commits

  • Verify if a host kick succeeded by checking return value of virtqueue_kick().

    Signed-off-by: Heinz Graalfs
    Signed-off-by: Rusty Russell

    Heinz Graalfs
     
  • Currently a host kick error is silently ignored and not reflected in
    the virtqueue of a particular virtio device.

    Changing the notify API for guest->host notification seems to be one
    prerequisite in order to be able to handle such errors in the context
    where the kick is triggered.

    This patch changes the notify API. The notify function must return a
    bool return value. It returns false if the host notification failed.

    Signed-off-by: Heinz Graalfs
    Signed-off-by: Rusty Russell

    Heinz Graalfs
     

15 Jul, 2013

1 commit


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

1 commit

  • 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