- 26 10月, 2015 10 次提交
-
-
由 Peter Maydell 提交于
ivshmem series # gpg: Signature made Mon 26 Oct 2015 09:27:46 GMT using RSA key ID 75969CE5 # gpg: Good signature from "Marc-André Lureau <marcandre.lureau@redhat.com>" # gpg: aka "Marc-André Lureau <marcandre.lureau@gmail.com>" # gpg: WARNING: This key is not certified with sufficiently trusted signatures! # gpg: It is not certain that the signature belongs to the owner. # Primary key fingerprint: 87A9 BD93 3F87 C606 D276 F62D DAE8 E109 7596 9CE5 * remotes/elmarco/tags/ivshmem-pull-request: (51 commits) doc: document ivshmem & hugepages ivshmem: use little-endian int64_t for the protocol ivshmem: use kvm irqfd for msi notifications ivshmem: rename MSI eventfd_table ivshmem: remove EventfdEntry.vector ivshmem: add hostmem backend ivshmem: use qemu_strtosz() ivshmem: do not keep shm_fd open tests: add ivshmem qtest qtest: add qtest_add_abrt_handler() msix: implement pba write (but read-only) contrib: remove unnecessary strdup() ivshmem: add check on protocol version in QEMU docs: update ivshmem device spec ivshmem-server: fix hugetlbfs support ivshmem-server: use a uint16 for client ID ivshmem-client: check the number of vectors contrib: add ivshmem client and server util: const event_notifier_get_fd() argument ivshmem: reset mask on device reset ... Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
-
由 Marc-André Lureau 提交于
Document and give some examples of hugepages support with ivshmem device and server. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NEric Blake <eblake@redhat.com>
-
由 Marc-André Lureau 提交于
The current ivshmem protocol uses 'long' for integers. But the sizeof(long) depends on the host and the endianess is not defined, which may cause portability troubles. Instead, switch to using little-endian int64_t. This breaks the protocol, except on x64 little-endian host where this change should be compatible. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
Use irqfd for improving context switch when notifying the guest. If the host doesn't support kvm irqfd, regular msi notifications are still supported. Note: the ivshmem implementation doesn't allow switching between MSI and IO interrupts, this patch doesn't either. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
-
由 Marc-André Lureau 提交于
The array is used to have vector specific data, so use a more descriptive name. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
No need to store an extra int for the vector number when it can be computed easily by looking at the position in the array. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
Instead of handling allocation, teach ivshmem to use a memory backend. This allows to use hugetlbfs backed memory now. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
Use the common qemu utility function to parse the memory size. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
Remove shm_fd from device state, closing it as early as possible to avoid leaks. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
Adds 4 ivshmemtests: - single qemu instance and basic IO - pair of instances, check memory sharing - pair of instances with server, and MSIX - hot plug/unplug A temporary shm is created as well as a directory to place server socket, both should be clear on exit and abort. Cc: Cam Macdonell <cam@cs.ualberta.ca> Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com> Signed-off-by: NAndreas Färber <afaerber@suse.de>
-
- 25 10月, 2015 30 次提交
-
-
由 Marc-André Lureau 提交于
Allow a test to add abort handlers, use GHook for all handlers. There is currently no way to remove a handler, but it could be later added if needed. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
qpci_msix_pending() writes on pba region, causing qemu to SEGV: Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7ffff7fba8c0 (LWP 25882)] 0x0000000000000000 in ?? () (gdb) bt #0 0x0000000000000000 in () #1 0x00005555556556c5 in memory_region_oldmmio_write_accessor (mr=0x5555579f3f80, addr=0, value=0x7fffffffbf68, size=4, shift=0, mask=4294967295, attrs=...) at /home/elmarco/src/qemu/memory.c:434 #2 0x00005555556558e1 in access_with_adjusted_size (addr=0, value=0x7fffffffbf68, size=4, access_size_min=1, access_size_max=4, access=0x55555565563e <memory_region_oldmmio_write_accessor>, mr=0x5555579f3f80, attrs=...) at /home/elmarco/src/qemu/memory.c:506 #3 0x00005555556581eb in memory_region_dispatch_write (mr=0x5555579f3f80, addr=0, data=0, size=4, attrs=...) at /home/elmarco/src/qemu/memory.c:1176 #4 0x000055555560b6f9 in address_space_rw (as=0x555555eff4e0 <address_space_memory>, addr=3759147008, attrs=..., buf=0x7fffffffc1b0 "", len=4, is_write=true) at /home/elmarco/src/qemu/exec.c:2439 #5 0x000055555560baa2 in cpu_physical_memory_rw (addr=3759147008, buf=0x7fffffffc1b0 "", len=4, is_write=1) at /home/elmarco/src/qemu/exec.c:2534 #6 0x000055555564c005 in cpu_physical_memory_write (addr=3759147008, buf=0x7fffffffc1b0, len=4) at /home/elmarco/src/qemu/include/exec/cpu-common.h:80 #7 0x000055555564cd9c in qtest_process_command (chr=0x55555642b890, words=0x5555578de4b0) at /home/elmarco/src/qemu/qtest.c:378 #8 0x000055555564db77 in qtest_process_inbuf (chr=0x55555642b890, inbuf=0x55555641b340) at /home/elmarco/src/qemu/qtest.c:569 #9 0x000055555564dc07 in qtest_read (opaque=0x55555642b890, buf=0x7fffffffc2e0 "writel 0xe0100800 0x0\n", size=22) at /home/elmarco/src/qemu/qtest.c:581 #10 0x000055555574ce3e in qemu_chr_be_write (s=0x55555642b890, buf=0x7fffffffc2e0 "writel 0xe0100800 0x0\n", len=22) at qemu-char.c:306 #11 0x0000555555751263 in tcp_chr_read (chan=0x55555642bcf0, cond=G_IO_IN, opaque=0x55555642b890) at qemu-char.c:2876 #12 0x00007ffff64c9a8a in g_main_context_dispatch (context=0x55555641c400) at gmain.c:3122 (without this patch, this can be reproduced with the ivshmem qtest) Implement an empty mmio write to avoid the crash. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
-
由 Marc-André Lureau 提交于
getopt() optarg points to argv memory, no need to dup those values, fixes small leaks detected by clang-analyzer. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
-
由 David Marchand 提交于
Send a protocol version as the first message from server, clients must close communication if they don't support this protocol version. Older QEMUs should be fine with this change in the protocol since they overrides their own vm_id on reception of an id associated to no eventfd. Signed-off-by: NDavid Marchand <david.marchand@6wind.com> Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> [use fifo_update_and_get()] Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 David Marchand 提交于
Add some notes on the parts needed to use ivshmem devices: more specifically, explain the purpose of an ivshmem server and the basic concept to use the ivshmem devices in guests. Move some parts of the documentation and re-organise it. Signed-off-by: NDavid Marchand <david.marchand@6wind.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com> Reviewed-by: NStefan Hajnoczi <stefanha@redhat.com> Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
-
由 Marc-André Lureau 提交于
As pointed out on the ML by Andrew Jones, glibc no longer permits creating POSIX shm on hugetlbfs directly. When given a hugetlbfs path, create a shareable file there. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
-
由 Marc-André Lureau 提交于
In practice, the number of VM is limited to MAXUINT16 in ivshmem, so use the same limit on the server (removes a theorical infinite loop) Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
Check the number of vectors received from the server, to avoid out of bound array access. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 David Marchand 提交于
When using ivshmem devices, notifications between guests can be sent as interrupts using a ivshmem-server (typical use described in documentation). The client is provided as a debug tool. Signed-off-by: NOlivier Matz <olivier.matz@6wind.com> Signed-off-by: NDavid Marchand <david.marchand@6wind.com> [fix a valgrind warning, option and server_close() segvs, extra server headers includes, getopt() return type, out-of-tree build, use qemu event_notifier instead of eventfd, fix x86/osx warnings - Marc-André] Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
-
由 Marc-André Lureau 提交于
Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
-
由 Marc-André Lureau 提交于
The interrupt mask is a state value, it should be reset, like the interrupt status. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
The number of eventfd that can be handled per peer is limited by the number of vectors. Return an error when receiving too many of them. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
The terms 'guest' and 'peer' are used sometime interchangeably which may be confusing. Instead, use 'peer' for the remote instances of ivshmem clients, and 'guest' for the local VM. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
Free all objects owned by the device, making sure the device is free, fixing hot-unplug. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
The server should not change the shm, and this isn't handled by qemu and we should should verify this in qemu. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
0 is a valid fd value, so change conditions and set -1 value early Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
load_state_old() is used to keep compatibility with version 0. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
The common version correctly checks for 0 value case. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
Both if branches return, move this out to common end. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
Use some more explicit variables to simplify the code. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
The server shouldn't send invalid peer id, so print an error if it's the case. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
The test whether the chardev is an AF_UNIX socket rejects "-chardev socket,id=chr0,path=/tmp/foo,server,nowait -device ivshmem,chardev=chr0", but fails to explain why. Use an explicit error on why a chardev may be rejected. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
Some misc improvements to ivshmem debug. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
max_peer isn't really useful, it tracks the maximum received VM id, but that quickly matches nb_peers, the size of the peers array. Since VM come and go, there might be sparse peers so it doesn't help much in general to have this value around. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
There is no peer when device is initialized, do not let doorbell for inexisting peer 0. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
val isn't used in ivshmem_update_irq() function. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
It simplifies a bit the code to allocate the array when setting the number of peers instead of lazily when receiving the first vector. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
Set the number of peers and array allocation in a single place. Rename to better reflect the function content. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-
由 Marc-André Lureau 提交于
Limit the maximum number of peers to MAXUINT16. This is more realistic and better matches the limit of the doorbell register. Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: NClaudio Fontana <claudio.fontana@huawei.com>
-