-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Increase Virtio-net vring size #1
Open
lukego
wants to merge
4,559
commits into
snabbco:master
Choose a base branch
from
lukego:vhost-user-large-vring
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
The test_path binary is (unlike the other test binaries in tests/tcg) actually intended to be compiled with the same compiler used to build the main QEMU executables. It actually #includes a number of the QEMU source files in an attempt to unit-test the util/path.c functions, and so if it is not compiled with the same compiler used by configure to set CONFIG_ settings then it is liable to fail to build. Fix the makefile to build it with the default C compiler rules, not CC_I386, and fix the test itself not to include a lot of unnecessary trace related source files which cause the build to fail if the trace backend is anything other than 'simple'. Signed-off-by: Peter Maydell <[email protected]> Signed-off-by: Michael Tokarev <[email protected]>
When DPRINTF() has effect, the original author wants to print all ram_load() calling results. So need use 'goto' instead of 'return' within ram_load(), just like other areas have done. Signed-off-by: Chen Gang <[email protected]> Signed-off-by: Michael Tokarev <[email protected]>
Signed-off-by: Stefan Weil <[email protected]> Signed-off-by: Michael Tokarev <[email protected]>
This fixes a warning from the static code analysis (smatch). Signed-off-by: Stefan Weil <[email protected]> Signed-off-by: Michael Tokarev <[email protected]> Acked-by: Aurelien Jarno <[email protected]>
Signed-off-by: Stefan Weil <[email protected]> Signed-off-by: Michael Tokarev <[email protected]>
This fixes a warning from the static code analysis (smatch). Signed-off-by: Stefan Weil <[email protected]> Signed-off-by: Michael Tokarev <[email protected]>
There was already a forward declaration using 'static', but the attribute was missing in the implementation. This fixes a warning from the static code analysis (smatch). Signed-off-by: Stefan Weil <[email protected]> Signed-off-by: Michael Tokarev <[email protected]>
This fixes a warning from the static code analysis (smatch). Signed-off-by: Stefan Weil <[email protected]> Signed-off-by: Michael Tokarev <[email protected]>
This fixes warnings from the static code analysis (smatch). Signed-off-by: Stefan Weil <[email protected]> Signed-off-by: Michael Tokarev <[email protected]>
Reviewed-by: Stefan Weil <[email protected]> Signed-off-by: Jim Meyering <[email protected]> Acked-by: Stefano Stabellini <[email protected]> Signed-off-by: Michael Tokarev <[email protected]>
Signed-off-by: Stefan Weil <[email protected]> Signed-off-by: Michael Tokarev <[email protected]>
glib >= 2.31 always enables thread support and g_thread_supported() is #defined to 1, there's no need to call g_thread_init() anymore, and it definitely does not need to report error which never happens. Keep code for old < 2.31 glibc anyway for now, just #ifdef it differently. Signed-off-by: Michael Tokarev <[email protected]> Reviewed-by: Stefan Hajnoczi <[email protected]> Cc: [email protected]
We have a dedicated header file for wrappers to smooth over glib version differences. Move the g_poll() definition into glib-compat.h for consistency. Signed-off-by: Stefan Hajnoczi <[email protected]> Signed-off-by: Michael Tokarev <[email protected]> Cc: [email protected]
Commit 2e67978 replaced strncpy() with pstrcpy() in one place in libcacard. This is a qemu-specific function, while libcacard is a stand-alone library (or tries to be). But since we know the exact length of the string to copy, and know that it definitely will fit in the destination buffer, use memcpy() instead, and null-terminate the string after that. An alternative is to use g_strlcpy() or strncpy(), but memcpy() is more than adequate in this place. Signed-off-by: Michael Tokarev <[email protected]> Cc: [email protected] Cc: Alon Levy <[email protected]>
Without this, ambiguous path is reported to the user as "not found", which is confusing at least. Signed-off-by: Michael Tokarev <[email protected]>
Signed-off-by: Michael Tokarev <[email protected]> Reviewed-by: Andreas Färber <[email protected]>
Signed-off-by: Hani Benhabiles <[email protected]> Signed-off-by: Michael Tokarev <[email protected]>
.impl.valid should be .impl.unaligned and the description needs some fixes. .old_portio is removed since commit b40acf9 (ioport: Switch dispatching to memory core layer). Signed-off-by: Fam Zheng <[email protected]> Signed-off-by: Michael Tokarev <[email protected]>
Signed-off-by: Alon Levy <[email protected]> Signed-off-by: Michael Tokarev <[email protected]>
Makes it easier to ensure proper naming across the different frontends and backends. Signed-off-by: Lluís Vilanova <[email protected]> Signed-off-by: Stefan Hajnoczi <[email protected]>
Signed-off-by: Lluís Vilanova <[email protected]> Signed-off-by: Stefan Hajnoczi <[email protected]>
Signed-off-by: Lluís Vilanova <[email protected]> Signed-off-by: Stefan Hajnoczi <[email protected]>
Signed-off-by: Lluís Vilanova <[email protected]> Signed-off-by: Stefan Hajnoczi <[email protected]>
Signed-off-by: Lluís Vilanova <[email protected]> Signed-off-by: Stefan Hajnoczi <[email protected]>
Signed-off-by: Lluís Vilanova <[email protected]> Signed-off-by: Stefan Hajnoczi <[email protected]>
The following tracetool cleanup changes the event numbering policy. Signed-off-by: Lluís Vilanova <[email protected]> Signed-off-by: Stefan Hajnoczi <[email protected]>
Backends now only contain the essential backend-specific code, and most of the work is moved to frontend code. Signed-off-by: Lluís Vilanova <[email protected]> Signed-off-by: Stefan Hajnoczi <[email protected]>
It is only used with the simple trace backend. Signed-off-by: Stefan Weil <[email protected]> Signed-off-by: Stefan Hajnoczi <[email protected]>
…staging * remotes/sstabellini/xen-140507-2: xen_disk: add discard support pass an inclusive address range to xc_domain_pin_memory_cacheattr xen: factor out common functions xen: move Xen HVM files under hw/i386/xen xen: move Xen PV machine files to hw/xenpv qemu-xen: free all the pirqs for msi/msix when driver unload exec: Limit translation limiting in address_space_translate to xen Signed-off-by: Peter Maydell <[email protected]>
…5-07' into staging trivial patches for 2014-05-07 # gpg: Signature made Wed 07 May 2014 18:01:15 BST using RSA key ID A4C3D7DB # gpg: Good signature from "Michael Tokarev <[email protected]>" # gpg: aka "Michael Tokarev <[email protected]>" # gpg: aka "Michael Tokarev <[email protected]>" # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 6EE1 95D1 886E 8FFB 810D 4324 457C E0A0 8044 65C5 # Subkey fingerprint: 6F67 E18E 7C91 C5B1 5514 66A7 BEE5 9D74 A4C3 D7DB * remotes/mjt/tags/trivial-patches-2014-05-07: (21 commits) libcacard: remove unnecessary EOL from debug prints docs/memory.txt: Fix document on MMIO operations readline: Sort completions before printing them. readline: use g_strndup instead of open-coding it qmp: report path ambiguity error libcacard: replace pstrcpy() with memcpy() glib: move g_poll() replacement into glib-compat.h do not call g_thread_init() for glib >= 2.31 hw/9pfs: Add include file for exported symbol xen: remove unused global, xen_xcg hw: Add missing 'static' attributes qemu-timer: Add missing 'static' attribute ui: Add missing 'static' attribute monitor: Add missing 'static' attribute hw/s390x: Add missing 'static' attribute hw/mips: Add missing 'static' and 'const' attributes hw/9pfs: Add missing 'static' attributes arch_init: Be sure of only one exit entry with DPRINTF() for ram_load() tests/tcg: Fix compilation of test_path qga: Fix typo (plural) in comment ... Signed-off-by: Peter Maydell <[email protected]>
A new "share" property can be used with the "memory-file" backend to map memory with MAP_SHARED instead of MAP_PRIVATE. Signed-off-by: Paolo Bonzini <[email protected]> Signed-off-by: Hu Tao <[email protected]>
Add detection of libnuma (mostly contained in the numactl package) to the configure script. Can be enabled or disabled on the command line, default is use if available. Signed-off-by: Andre Przywara <[email protected]> Signed-off-by: Wanlong Gao <[email protected]> Signed-off-by: Paolo Bonzini <[email protected]> Signed-off-by: Hu Tao <[email protected]>
Signed-off-by: Hu Tao <[email protected]> [Raise errors on setting properties if !CONFIG_NUMA. Add BUILD_BUG_ON checks. - Paolo] Signed-off-by: Paolo Bonzini <[email protected]> Signed-off-by: Marcelo Tosatti <[email protected]> Signed-off-by: Hu Tao <[email protected]> Signed-off-by: Hu Tao <[email protected]>
Signed-off-by: Hu Tao <[email protected]>
Signed-off-by: Hu Tao <[email protected]>
Signed-off-by: Hu Tao <[email protected]>
…6List Signed-off-by: Hu Tao <[email protected]>
Add qmp command query-memdev to query for information of memory devices Signed-off-by: Hu Tao <[email protected]>
This is the hmp counterpart of qmp query-memdev. Signed-off-by: Hu Tao <[email protected]>
Add a function to check if the eventfd capability is present in KVM in the host kernel. Signed-off-by: Antonios Motakis <[email protected]> Signed-off-by: Nikolay Nikolaev <[email protected]>
This function will attempt to read data from the chardev trying to fill the buffer up to the given length. Add tcp_chr_disconnect to reuse disconnection code where needed. Signed-off-by: Antonios Motakis <[email protected]> Signed-off-by: Nikolay Nikolaev <[email protected]>
This will set an array of file descriptors to the internal structures. The next time a message is send the array will be send as ancillary data. This feature works on the UNIX domain socket backend only. Signed-off-by: Antonios Motakis <[email protected]> Signed-off-by: Nikolay Nikolaev <[email protected]>
This extends the existing qemu_chr_fe_get_msgfd by allowing to read a set of fds. The function for receiving the fds - unix_process_msgfd is extended to allocate the needed array size. Signed-off-by: Antonios Motakis <[email protected]> Signed-off-by: Nikolay Nikolaev <[email protected]>
This is used to detect that the remote end has disconnected. Just call tcp_char_disconnect on receiving this event. Signed-off-by: Antonios Motakis <[email protected]> Signed-off-by: Nikolay Nikolaev <[email protected]>
Generalize the features get/ack to be used for both vhost-net and vhost-scsi. In vhost-net add vhost_net_get_feature_bits to select the feature bit set depending on the NetClient kind. Signed-off-by: Nikolay Nikolaev <[email protected]>
The poll callback needs to be called when bringing up or down the vhost_net instance. As it is not mandatory for an NetClient to implement it, invoke it only when it is set. Signed-off-by: Antonios Motakis <[email protected]> Signed-off-by: Nikolay Nikolaev <[email protected]>
This decouples virtio-net from the TAP netdev backend and allows support for other backends to be implemented. Signed-off-by: Antonios Motakis <[email protected]> Signed-off-by: Nikolay Nikolaev <[email protected]>
vhost_dev_init will replace devfd and devpath with a single opaque argument. This is initialised with a file descriptor. When TAP is used (through vhost_net), open /dev/vhost-net and pass the fd as an opaque parameter in VhostNetOptions. The same applies to vhost-scsi - open /dev/vhost-scsi and pass the fd. Signed-off-by: Antonios Motakis <[email protected]> Signed-off-by: Nikolay Nikolaev <[email protected]>
Decouple vhost from the Linux kernel by introducing vhost_ops. The intention is to provide different backends - a 'kernel' backend based on the ioctl interface, and an 'user' backend based on a UNIX domain socket and shared memory interface. Signed-off-by: Antonios Motakis <[email protected]> Signed-off-by: Nikolay Nikolaev <[email protected]>
Use vhost_set_backend_type to initialise a proper vhost_ops structure. In vhost_net_init and vhost_net_start_one call conditionally TAP related initialisation depending on the vhost backend type. Signed-off-by: Antonios Motakis <[email protected]> Signed-off-by: Nikolay Nikolaev <[email protected]>
The initialization takes a chardev backed by a unix domain socket. It should implement qemu_fe_set_msgfds in order to be able to pass file descriptors to the remote process. Each ioctl request of vhost-kernel has a vhost-user message equivalent, which is sent over the control socket. The general approach is to copy the data from the supplied argument pointer to a designated field in the message. If a file descriptor is to be passed it will be placed in the fds array for inclusion in the sendmsg control header. VHOST_SET_MEM_TABLE ignores the supplied vhost_memory structure and scans the global ram_list for ram blocks with a valid fd field set. This would be set when the '-object memory-file' option with share=on property is used. Signed-off-by: Antonios Motakis <[email protected]> Signed-off-by: Nikolay Nikolaev <[email protected]>
Handle the feature bits negotiation when using vhost-user. Allow the underlying implementation to have a finer control over all the bits except the VIRTIO_NET_F_MAC. Signed-off-by: Nikolay Nikolaev <[email protected]>
Add a new QEMU netdev backend that is intended to invoke vhost_net with the vhost-user backend. It uses an Unix socket chardev to establish a communication with the 'slave' (client and server mode supported). At runtime the netdev will handle OPEN/CLOSE events from the chardev. Upon disconnection it will set link_down accordingly and notify virtio-net; the virtio-net interface will go down. Signed-off-by: Antonios Motakis <[email protected]> Signed-off-by: Nikolay Nikolaev <[email protected]>
The supplied chardev id will be inspected for supported options. Only a socket backend, with a set path (i.e. a Unix socket) and optionally the server parameter set, will be allowed. Other options (nowait, telnet) will make the chardev unusable and the netdev will not be initialised. Additional checks for validity: - requires `-numa node,memdev=..` - requires `-device virtio-net-*` The `vhostforce` option is used to force vhost-net when we deal with non-MSIX guests. Signed-off-by: Antonios Motakis <[email protected]> Signed-off-by: Nikolay Nikolaev <[email protected]>
This document describes the basic message format used by vhost-user for communication over a unix domain socket. The protocol is based on the existing ioctl interface used for the kernel version of vhost. Signed-off-by: Antonios Motakis <[email protected]> Signed-off-by: Nikolay Nikolaev <[email protected]>
chardev depends on lots of external symbols that are not necessarily needed to be able to use, for example, 'socket chardev'. So add stubs for these functions: - bdrv_commit_all - qemu_chr_open_msmouse - is_daemonized - qemu_add_machine_init_done_notifier - monitor_init - qemu_notify_event - vc_init and this array: - serial_hds Signed-off-by: Antonios Motakis <[email protected]> Signed-off-by: Nikolay Nikolaev <[email protected]>
This test creates a 'server' chardev to listen for vhost-user messages. Once VHOST_USER_SET_MEM_TABLE is received it mmaps each received region, and read 1k bytes from it. The read data is compared to data from readl. The test requires hugetlbfs to be already mounted and writable. The mount point defaults to '/hugetlbfs' and can be specified via the environment variable QTEST_HUGETLBFS_PATH. The rom pc-bios/pxe-virtio.rom is used to instantiate a virtio pcicontroller. Signed-off-by: Antonios Motakis <[email protected]> Signed-off-by: Nikolay Nikolaev <[email protected]>
lukego
pushed a commit
that referenced
this pull request
Aug 18, 2014
If libusb_get_device_list() fails, the uninitialized local variable libusb_device would be passed to libusb_free_device_list(), that will cause a crash, like: (gdb) bt #0 0x00007fbbb4bafc10 in pthread_mutex_lock () from /lib64/libpthread.so.0 #1 0x00007fbbb233e653 in libusb_unref_device (dev=0x6275682d627375) at core.c:902 #2 0x00007fbbb233e739 in libusb_free_device_list (list=0x7fbbb6e8436e, unref_devices=<optimized out>) at core.c:653 #3 0x00007fbbb6cd80a4 in usb_host_auto_check (unused=unused@entry=0x0) at hw/usb/host-libusb.c:1446 #4 0x00007fbbb6cd8525 in usb_host_initfn (udev=0x7fbbbd3c5670) at hw/usb/host-libusb.c:912 #5 0x00007fbbb6cc123b in usb_device_init (dev=0x7fbbbd3c5670) at hw/usb/bus.c:106 ... So initialize libusb_device at the begin time. Signed-off-by: Jincheng Miao <[email protected]> Reviewed-by: Gonglei <[email protected]> Signed-off-by: Gerd Hoffmann <[email protected]>
lukego
pushed a commit
that referenced
this pull request
Aug 18, 2014
VirtIOBlockReq is freed later by virtio_blk_free_request() in hw/block/virtio-blk.c. Remove this extraneous g_slice_free(). This patch fixes the following segfault: 0x00005555556373af in virtio_blk_rw_complete (opaque=0x5555565ff5e0, ret=0) at hw/block/virtio-blk.c:99 99 bdrv_acct_done(req->dev->bs, &req->acct); (gdb) print req $1 = (VirtIOBlockReq *) 0x5555565ff5e0 (gdb) print req->dev $2 = (VirtIOBlock *) 0x0 (gdb) bt #0 0x00005555556373af in virtio_blk_rw_complete (opaque=0x5555565ff5e0, ret=0) at hw/block/virtio-blk.c:99 #1 0x0000555555840ebe in bdrv_co_em_bh (opaque=0x5555566152d0) at block.c:4675 #2 0x000055555583de77 in aio_bh_poll (ctx=ctx@entry=0x5555563a8150) at async.c:81 #3 0x000055555584b7a7 in aio_poll (ctx=0x5555563a8150, blocking=blocking@entry=true) at aio-posix.c:188 #4 0x00005555556e520e in iothread_run (opaque=0x5555563a7fd8) at iothread.c:41 #5 0x00007ffff42ba124 in start_thread () from /usr/lib/libpthread.so.0 #6 0x00007ffff16d14bd in clone () from /usr/lib/libc.so.6 Reported-by: Max Reitz <[email protected]> Cc: Fam Zheng <[email protected]> Signed-off-by: Stefan Hajnoczi <[email protected]> Tested-by: Christian Borntraeger <[email protected]> Signed-off-by: Kevin Wolf <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Increase the Virtio-net vring size from 256 to 8192.