[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [qemu-mainline bisection] complete test-armhf-armhf-xl-raw
branch xen-unstable xen branch xen-unstable job test-armhf-armhf-xl-raw test xen-boot Tree: linux git://xenbits.xen.org/linux-pvops.git Tree: linuxfirmware git://xenbits.xen.org/osstest/linux-firmware.git Tree: qemuu git://git.qemu.org/qemu.git Tree: xen git://xenbits.xen.org/xen.git *** Found and reproduced problem changeset *** Bug is in tree: qemuu git://git.qemu.org/qemu.git Bug introduced: a2aa09e18186801931763fbd40a751fa39971b18 Bug not present: 7e4804dafd4689312ef1172b549927a973bb5414 commit a2aa09e18186801931763fbd40a751fa39971b18 Merge: 7e4804d 47d4be1 Author: Peter Maydell <peter.maydell@xxxxxxxxxx> Date: Mon Sep 14 16:13:16 2015 +0100 Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging * Support for jemalloc * qemu_mutex_lock_iothread "No such process" fix * cutils: qemu_strto* wrappers * iohandler.c simplification * Many other fixes and misc patches. And some MTTCG work (with Emilio's fixes squashed): * Signal-free TCG kick * Removing spinlock in favor of QemuMutex * User-mode emulation multi-threading fixes/docs # gpg: Signature made Thu 10 Sep 2015 09:03:07 BST using RSA key ID 78C7AE83 # gpg: Good signature from "Paolo Bonzini <bonzini@xxxxxxx>" # gpg: aka "Paolo Bonzini <pbonzini@xxxxxxxxxx>" * remotes/bonzini/tags/for-upstream: (44 commits) cutils: work around platform differences in strto{l,ul,ll,ull} cpu-exec: fix lock hierarchy for user-mode emulation exec: make mmap_lock/mmap_unlock globally available tcg: comment on which functions have to be called with mmap_lock held tcg: add memory barriers in page_find_alloc accesses remove unused spinlock. replace spinlock by QemuMutex. cpus: remove tcg_halt_cond and tcg_cpu_thread globals cpus: protect work list with work_mutex scripts/dump-guest-memory.py: fix after RAMBlock change configure: Add support for jemalloc add macro file for coccinelle configure: factor out adding disas configure vhost-scsi: fix wrong vhost-scsi firmware path checkpatch: remove tests that are not relevant outside the kernel checkpatch: adapt some tests to QEMU CODING_STYLE: update mixed declaration rules qmp: Add example usage of strto*l() qemu wrapper cutils: Add qemu_strtoull() wrapper cutils: Add qemu_strtoll() wrapper ... Signed-off-by: Peter Maydell <peter.maydell@xxxxxxxxxx> commit 47d4be12c3997343e436c6cca89aefbbbeb70863 Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Thu Sep 10 10:02:00 2015 +0200 cutils: work around platform differences in strto{l,ul,ll,ull} Linux returns 0 if no conversion was made, while OS X and presumably the BSDs return EINVAL. The OS X convention rejects more invalid inputs, so convert to it and adjust the test case. Windows returns 1 from strtoul and strtoull (instead of -1) for negative out-of-range input; fix it up. Reported-by: Peter Maydell <peter.maydell@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 9fd1a94888cd6a559f95c3596ec1ac28b74838c1 Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Tue Aug 11 11:33:24 2015 +0200 cpu-exec: fix lock hierarchy for user-mode emulation tb_lock has to be taken inside the mmap_lock (example: tb_invalidate_phys_range is called by target_mmap), but tb_link_page is taking the mmap_lock and it is called with the tb_lock held. To fix this, take the mmap_lock in tb_find_slow, not in tb_link_page. Reviewed-by: Peter Maydell <peter.maydell@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 8fd19e6cfd5b6cdf028c6ac2ff4157ed831ea3a6 Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Tue Aug 11 10:57:52 2015 +0200 exec: make mmap_lock/mmap_unlock globally available There is some iffy lock hierarchy going on in translate-all.c. To fix it, we need to take the mmap_lock in cpu-exec.c. Make the functions globally available. Reviewed-by: Peter Maydell <peter.maydell@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 756920876f60829fad0d15df4f3fa205077a8131 Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Tue Aug 11 10:59:50 2015 +0200 tcg: comment on which functions have to be called with mmap_lock held Reviewed-by: Peter Maydell <peter.maydell@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 6940fab84b826175cf90d48d0e3da1b76518f5b4 Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Wed Aug 12 09:41:40 2015 +0200 tcg: add memory barriers in page_find_alloc accesses page_find is reading the radix tree outside all locks, so it has to use the RCU primitives. It does not need RCU critical sections because the PageDescs are never removed, so there is never a need to wait for the end of code sections that use a PageDesc. Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 2496ff1311283480f9de3614080b8842d838ade4 Author: KONRAD Frederic <fred.konrad@xxxxxxxxxxxxx> Date: Mon Aug 10 17:27:03 2015 +0200 remove unused spinlock. This just removes spinlock as it is not used anymore. Signed-off-by: KONRAD Frederic <fred.konrad@xxxxxxxxxxxxx> Message-Id: <1439220437-23957-6-git-send-email-fred.konrad@xxxxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 677ef6230b603571ae05125db469f7b4c8912a77 Author: KONRAD Frederic <fred.konrad@xxxxxxxxxxxxx> Date: Mon Aug 10 17:27:02 2015 +0200 replace spinlock by QemuMutex. spinlock is only used in two cases: * cpu-exec.c: to protect TranslationBlock * mem_helper.c: for lock helper in target-i386 (which seems broken). It's a pthread_mutex_t in user-mode, so we can use QemuMutex directly, with an #ifdef. The #ifdef will be removed when multithreaded TCG will need the mutex as well. Signed-off-by: KONRAD Frederic <fred.konrad@xxxxxxxxxxxxx> Message-Id: <1439220437-23957-5-git-send-email-fred.konrad@xxxxxxxxxxxxx> Signed-off-by: Emilio G. Cota <cota@xxxxxxxxx> [Merge Emilio G. Cota's patch to remove volatile. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit d5f8d61390de8f2acc0da93f184e421a709cb503 Author: KONRAD Frederic <fred.konrad@xxxxxxxxxxxxx> Date: Mon Aug 10 17:27:06 2015 +0200 cpus: remove tcg_halt_cond and tcg_cpu_thread globals This hides the tcg_halt_cond and tcg_cpu_thread global variables inside qemu_tcg_init_vcpu. Multi-threaded TCG will need one QemuCond and one QemuThread per virtual cpu, so it's preferrable to use cpu->halt_cond and cpu->thread. Signed-off-by: KONRAD Frederic <fred.konrad@xxxxxxxxxxxxx> Message-Id: <1439220437-23957-9-git-send-email-fred.konrad@xxxxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 376692b9dc6f02303ee07a4146d08d8727d79c0c Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Fri Jul 10 12:32:32 2015 +0200 cpus: protect work list with work_mutex Protect the list of queued work items with something other than the BQL, as a preparation for running the work items outside it. Reviewed-by: Peter Maydell <peter.maydell@xxxxxxxxxx> Signed-off-by: KONRAD Frederic <fred.konrad@xxxxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 0c71d41e2aa3c7356500ae624166f3bb8c201aee Author: Michael S. Tsirkin <mst@xxxxxxxxxx> Date: Thu Aug 27 12:06:23 2015 +0300 scripts/dump-guest-memory.py: fix after RAMBlock change commit 9b8424d5735278ca382f11adc7c63072b632ab83 "exec: split length -> used_length/max_length" changed field names in struct RAMBlock It turns out that scripts/dump-guest-memory.py was poking at this field, update it accordingly. Cc: qemu-stable@xxxxxxxxxx Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx> Signed-off-by: Michael S. Tsirkin <mst@xxxxxxxxxx> Message-Id: <1440666378-3152-1-git-send-email-mst@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 7b01cb974f1093885c40bf4d0d3e78e27e531363 Author: Alexandre Derumier <aderumier@xxxxxxxxx> Date: Fri Jun 19 12:56:58 2015 +0200 configure: Add support for jemalloc This adds "--enable-jemalloc" and "--disable-jemalloc" to allow linking to jemalloc memory allocator. We have already tcmalloc support, but it seem to not working well with a lot of iothreads/disks. The main problem is that tcmalloc use a shared thread cache of 16MB by default. With more threads, this cache is shared, and some bad garbage collections can occur if the cache is too low. It's possible to tcmalloc cache increase it with a env var: TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES=256MB With default 16MB, performances are really bad with more than 2 disks. Increasing to 256MB, it's helping but still have problem with 16 disks/iothreads. Jemalloc don't have performance problem with default configuration. Here the benchmark results in iops of 1 qemu vm randread 4K iodepth=32, with rbd block backend (librbd is doing a lot of memory allocation), 1 iothread by disk glibc malloc ------------ 1 disk 29052 2 disks 55878 4 disks 127899 8 disks 240566 15 disks 269976 jemalloc -------- 1 disk 41278 2 disks 75781 4 disks 195351 8 disks 294241 15 disks 298199 tcmalloc 2.2.1 default 16M cache -------------------------------- 1 disk 37911 2 disks 67698 4 disks 41076 8 disks 43312 15 disks 37569 tcmalloc : 256M cache --------------------------- 1 disk 33914 2 disks 58839 4 disks 148205 8 disks 213298 15 disks 218383 Signed-off-by: Alexandre Derumier <aderumier@xxxxxxxxx> Message-Id: <1434711418-20429-1-git-send-email-aderumier@xxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 3f7a899ff4e0681ed148b1cea07dc65550114fdb Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Mon Sep 7 09:50:09 2015 +0200 add macro file for coccinelle Coccinelle chokes on some idioms from compiler.h and queue.h. Extract those in a macro file, to be used with "--macro-file scripts/cocci-macro-file.h". Reviewed-by: Markus Armbruster <armbru@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit c765fcac96e111199225c7387c01694fe076b341 Author: Peter Crosthwaite <crosthwaitepeter@xxxxxxxxx> Date: Sat Aug 29 03:33:59 2015 -0700 configure: factor out adding disas configure Every arch adds its disas configury to both its own config as well config_disas_all. Make a small function do to both at once. Signed-off-by: Peter Crosthwaite <crosthwaite.peter@xxxxxxxxx> Message-Id: <1440844439-19391-1-git-send-email-crosthwaite.peter@xxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit f42bf6a262ab5923a1a3bc8f731b830396937c47 Author: Gonglei <arei.gonglei@xxxxxxxxxx> Date: Wed Aug 26 09:52:51 2015 +0800 vhost-scsi: fix wrong vhost-scsi firmware path vhost-scsi bootindex does't work because Qemu passes wrong fireware path to seabios. before: /pci@i0cf8/scsi@7channel@0/vhost-scsi@0,0 after applying the patch: /pci@i0cf8/scsi@7/channel@0/vhost-scsi@0,0 Reported-by: Subo <subo7@xxxxxxxxxx> Signed-off-by: Gonglei <arei.gonglei@xxxxxxxxxx> Message-Id: <1440553971-11108-1-git-send-email-arei.gonglei@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit f1e155bbf863ade457019c6f09d4cba06b2d6bb4 Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Sun Aug 16 23:01:19 2015 +0200 checkpatch: remove tests that are not relevant outside the kernel Fully removing Sparse support requires more invasive changes. Only remove the really kernel-specific parts such as address space names. Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 71c47b01ca0df34d6b41e0975be6e0633c5254cf Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Sun Aug 16 23:15:46 2015 +0200 checkpatch: adapt some tests to QEMU Mostly change severity levels, but some tests can also be adjusted to refer to QEMU APIs or data structures. Reviewed-by: Stefan Hajnoczi <stefanha@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 690a35e1f2acf4ccd0501b18228bc6fba8f9c768 Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Fri Jun 19 09:28:13 2015 +0200 CODING_STYLE: update mixed declaration rules Mixed declarations do come in handy at the top of #ifdef blocks. Reluctantly allow this particular usage and suggest an alternative. Reviewed-by: Stefan Hajnoczi <stefanha@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit d4ba8cb0a17e7de54753ff1bdeee4428118bb9ab Author: Carlos L. Torres <carlos.torres@xxxxxxxxxxxxx> Date: Sun Jul 19 18:02:21 2015 -0500 qmp: Add example usage of strto*l() qemu wrapper Signed-off-by: Carlos L. Torres <carlos.torres@xxxxxxxxxxxxx> Message-Id: <11ac63e95d88551f1c2c9b1216b15d3cb8ba4468.1437346779.git.carlos.torres@xxxxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 3904e6bf042391abc749d717465022e96e276fc7 Author: Carlos L. Torres <carlos.torres@xxxxxxxxxxxxx> Date: Sun Jul 19 18:02:20 2015 -0500 cutils: Add qemu_strtoull() wrapper Add wrapper for strtoull() function. Include unit tests. Signed-off-by: Carlos L. Torres <carlos.torres@xxxxxxxxxxxxx> Message-Id: <e0f0f611c9a81f3c29f451d0b17d755dfab1e90a.1437346779.git.carlos.torres@xxxxxxxxxxxxx> [Use uint64_t in prototype. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 8ac4df40cc5de606a8ac9174e2340c21093b4e3b Author: Carlos L. Torres <carlos.torres@xxxxxxxxxxxxx> Date: Sun Jul 19 18:02:19 2015 -0500 cutils: Add qemu_strtoll() wrapper Add wrapper for strtoll() function. Include unit tests. Signed-off-by: Carlos L. Torres <carlos.torres@xxxxxxxxxxxxx> Message-Id: <7454a6bb9ec03b629e8beb4f109dd30dc2c9804c.1437346779.git.carlos.torres@xxxxxxxxxxxxx> [Use int64_t in prototype, since that's what QEMU uses. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit c817c01548b1500753d0bea3852938d919161778 Author: Carlos L. Torres <carlos.torres@xxxxxxxxxxxxx> Date: Sun Jul 19 18:02:18 2015 -0500 cutils: Add qemu_strtoul() wrapper Add wrapper for strtoul() function. Include unit tests. Signed-off-by: Carlos L. Torres <carlos.torres@xxxxxxxxxxxxx> Message-Id: <9621b4ae8e35fded31c715c2ae2a98f904f07ad0.1437346779.git.carlos.torres@xxxxxxxxxxxxx> [Fix tests for 32-bit build. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 764e0fa497ff5bbc9c9d7c116da2f00f34e71716 Author: Carlos L. Torres <carlos.torres@xxxxxxxxxxxxx> Date: Sun Jul 19 18:02:17 2015 -0500 cutils: Add qemu_strtol() wrapper Add wrapper for strtol() function. Include unit tests. Signed-off-by: Carlos L. Torres <carlos.torres@xxxxxxxxxxxxx> Message-Id: <07199f1c0ff3892790c6322123aee1e92f580550.1437346779.git.carlos.torres@xxxxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit d1142fb83efdcf8a6c2dee825569892203e16d2c Author: Emilio G. Cota <cota@xxxxxxxxx> Date: Sun Aug 23 20:23:39 2015 -0400 translate-all: remove obsolete comment about l1_map l1_map is based on physical addresses in full-system mode, as pointed out in an earlier comment. Said comment also mentions that virtual addresses are only used in l1_map in user-only mode. Signed-off-by: Emilio G. Cota <cota@xxxxxxxxx> Message-Id: <1440375847-17603-11-git-send-email-cota@xxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 709037636992e9289ce9147e59d56fb35d90b140 Author: Emilio G. Cota <cota@xxxxxxxxx> Date: Sun Aug 23 20:23:41 2015 -0400 linux-user: call rcu_(un)register_thread on pthread_(exit|create) Signed-off-by: Emilio G. Cota <cota@xxxxxxxxx> Message-Id: <1440375847-17603-13-git-send-email-cota@xxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 492e1ca9bd3f43ba417a5cf918e6c769aa2478b9 Author: Emilio G. Cota <cota@xxxxxxxxx> Date: Sun Aug 23 20:23:38 2015 -0400 rcu: fix comment with s/rcu_gp_lock/rcu_registry_lock/ Signed-off-by: Emilio G. Cota <cota@xxxxxxxxx> Message-Id: <1440375847-17603-10-git-send-email-cota@xxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 5243722376873a48e9852a58b91f4d4101ee66e4 Author: Emilio G. Cota <cota@xxxxxxxxx> Date: Sun Aug 23 20:23:37 2015 -0400 rcu: init rcu_registry_lock after fork We were unlocking this lock after fork, which is wrong since only the thread that holds a mutex is allowed to unlock it. Signed-off-by: Emilio G. Cota <cota@xxxxxxxxx> Message-Id: <1440375847-17603-9-git-send-email-cota@xxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 12a1ddc160cb6a73e8a6c319f3962a20da2cd22f Author: Michael Marineau <michael.marineau@xxxxxxxxxx> Date: Sun Aug 9 00:02:55 2015 -0700 Makefile.target: include top level build dir in vpath Using ccache with CCACHE_BASEDIR set to $(SRC_PATH) or a parent will rewrite all absolute paths to relative paths. This interacts poorly with QEMU's two-level build directory scheme. For example, lets say BUILD_DIR=$(SRC_PATH)/build so build/blockdev.d will contain: blockdev.o: ../blockdev.c ../include/sysemu/block-backend.h \ Now the target build under build/x86_64-softmmu or similar will depend on ../blockdev.o which in turn will get make to source ../blockdev.d to check its dependencies. Since make always considers paths relative to the current working directory rather than the makefile the path appeared in the relative path to ../blockdev.c is useless. This change simply adds the top level build directory to vpath so paths relative to the source directory, top build directory, and target build directory all work just fine. Signed-off-by: Michael Marineau <michael.marineau@xxxxxxxxxx> Message-Id: <1439103775-11836-1-git-send-email-michael.marineau@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 3c9589e180d98cdadb143bd2a792fb9d19d9aec6 Author: Dr. David Alan Gilbert <dgilbert@xxxxxxxxxx> Date: Fri Aug 14 11:25:14 2015 +0100 Move RAMBlock and ram_list to ram_addr.h Signed-off-by: Dr. David Alan Gilbert <dgilbert@xxxxxxxxxx> Message-Id: <1439547914-18249-1-git-send-email-dgilbert@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit e0c382113f768cc375a0d61b7cb3692f1b4bba58 Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Wed Aug 26 00:19:19 2015 +0200 tcg: signal-free qemu_cpu_kick Signals are slow and do not exist on Win32. The previous patches have done most of the legwork to introduce memory barriers (some of them were even there already for the sake of Windows!) and we can now set the flags directly in the iothread. qemu_cpu_kick_thread is not used anymore on TCG, since the TCG thread is never outside usermode while the CPU is running (not halted). Instead run the content of the signal handler (now in qemu_cpu_kick_no_halt) directly. qemu_cpu_kick_no_halt is also used in qemu_mutex_lock_iothread to avoid the overhead of qemu_cond_broadcast. Reviewed-by: Richard Henderson <rth@xxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 9102dedaa1ee1e89ce4a81283c403ff4928e9ef9 Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Tue Aug 18 06:52:09 2015 -0700 use qemu_cpu_kick instead of cpu_exit or qemu_cpu_kick_thread Use the same API to trigger interruption of a CPU, no matter if under TCG or KVM. There is no difference: these calls come from the CPU thread, so the qemu_cpu_kick calls will send a signal to the running thread and it will be processed synchronously, just like a call to cpu_exit. The only difference is in the overhead, but neither call to cpu_exit (now qemu_cpu_kick) is in a hot path. Reviewed-by: Richard Henderson <rth@xxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit aed807c8e2bf009b2c6a35490d4fd4383887221d Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Tue Aug 18 06:43:15 2015 -0700 tcg: synchronize exit_request and tcg_current_cpu accesses Synchronize the remaining pair of accesses in cpu_signal. These should be necessary on Windows as well, at least in theory. Probably SuspendProcess and ResumeProcess introduce some implicit memory barrier. Reviewed-by: Richard Henderson <rth@xxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit ab096a75cd626dcd4ad34b2a11652df0269bee0d Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Tue Aug 18 06:34:19 2015 -0700 tcg: synchronize cpu->exit_request and cpu->tcg_exit_req accesses Reviewed-by: Richard Henderson <rth@xxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit b0a46fa796504c7334202877a68c857e49f7c96c Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Tue Aug 18 06:32:02 2015 -0700 tcg: assign cpu->current_tb in a simpler place TCG has not been reading cpu->current_tb from signal handlers for years. The code that synchronized cpu_exec with the signal handler is not needed anymore. Reviewed-by: Richard Henderson <rth@xxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit f240eb6fdcf63a5600e15fb44c6960586459a97f Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Wed Aug 26 00:17:58 2015 +0200 remove qemu/tls.h TLS is now required on all platforms, so DECLARE_TLS/DEFINE_TLS is not needed anymore. Removing it does not break Windows because of the previous patch. Reviewed-by: Richard Henderson <rth@xxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 9373e63297c43752f9cf085feb7f5aed57d959f8 Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Tue Aug 18 06:24:34 2015 -0700 tcg: introduce tcg_current_cpu This is already useful on Windows in order to remove tls.h, because accesses to current_cpu are done from a different thread on that platform. It will be used on POSIX platforms as soon TCG stops using signals to interrupt the execution of translated code. Reviewed-by: Richard Henderson <rth@xxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 5039d6e23586fe6bbedc5e4fe302b48a66890ade Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Mon Feb 16 14:13:11 2015 +0100 i8257: remove cpu_request_exit irq This is unused. cpu_exit now is almost exclusively an internal function to the CPU execution loop. In a few patches, we'll change the remaining occurrences to qemu_cpu_kick, making it truly internal. Reviewed-by: Richard henderson <rth@xxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 19d2b5e6ff7202c2bf45c547efa85ae6c2d76bbd Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Mon Feb 16 14:08:22 2015 +0100 i8257: rewrite DMA_schedule to avoid hooking into the CPU loop The i8257 DMA controller uses an idle bottom half, which by default does not cause the main loop to exit. Therefore, the DMA_schedule function is there to ensure that the CPU relinquishes the iothread mutex to the iothread. However, this is not enough since the iothread will call aio_compute_timeout() and go to sleep again. In the iothread world, forcing execution of the idle bottom half is much simpler, and only requires a call to qemu_notify_event(). Do it, removing the need for the "cpu_request_exit" pseudo-irq. The next patch will remove it. Reviewed-by: Richard Henderson <rth@xxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 5f5b5942d56a138baad0ae01458d5d0e62d5be68 Author: Andrey Smetanin <asmetanin@xxxxxxxxxxxxx> Date: Fri Jul 3 15:01:42 2015 +0300 Added generic panic handler qemu_system_guest_panicked() There are pieces of guest panic handling code that can be shared in one generic function. These code replaced by call qemu_system_guest_panicked(). Signed-off-by: Andrey Smetanin <asmetanin@xxxxxxxxxxxxx> Signed-off-by: Denis V. Lunev <den@xxxxxxxxxx> CC: Paolo Bonzini <pbonzini@xxxxxxxxxx> CC: Andreas FÃ?¤rber <afaerber@xxxxxxx> Message-Id: <1435924905-8926-10-git-send-email-den@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 6d1f252d8c1ba73bf6ed9af28731a9c9c3d473a2 Author: Peter Lieven <pl@xxxxxxx> Date: Fri Aug 14 13:33:36 2015 +0200 block/iscsi: validate block size returned from target It has been reported that at least tgtd returns a block size of 0 for LUN 0. To avoid running into divide by zero later on and protect against other problematic block sizes validate the block size right at connection time. Cc: qemu-stable@xxxxxxxxxx Reported-by: Andrey Korolyov <andrey@xxxxxxx> Signed-off-by: Peter Lieven <pl@xxxxxxx> Message-Id: <1439552016-8557-1-git-send-email-pl@xxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit f3926945c85689e8af324c0db0b39be771dbbebb Author: Fam Zheng <famz@xxxxxxxxxx> Date: Mon Sep 7 11:28:58 2015 +0800 iohandler: Use aio API iohandler.c shares the same interface with aio, but with duplicated code. It's better to rebase iohandler, also because that aio is a more friendly interface to multi-threads. Create a global AioContext instance and let its GSource handle the iohandler events. Signed-off-by: Fam Zheng <famz@xxxxxxxxxx> Message-Id: <1441596538-4412-1-git-send-email-famz@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 46036b2462c7ff56c0af6466ea6b9248197a38a8 Author: AnÃbal Limón <anibal.limon@xxxxxxxxxxxxxxx> Date: Thu Sep 3 15:48:33 2015 -0500 cpus.c: qemu_mutex_lock_iothread fix race condition at cpu thread init When QEMU starts the RCU thread executes qemu_mutex_lock_thread causing error "qemu:qemu_cpu_kick_thread: No such process" and exits. This isn't occur frequently but in glibc the thread id can exist and this not guarantee that the thread is on active/running state. If is inserted a sleep(1) after newthread assignment [1] the issue appears. So not make assumption that thread exist if first_cpu->thread is set then change the validation of cpu to created that is set into cpu threads (kvm, tcg, dummy). [1] https://sourceware.org/git/?p=glibc.git;a=blob;f=nptl/pthread_create.c;h=d10f4ea8004e1d8f3a268b95cc0f8d93b8d89867;hb=HEAD#l621 Cc: qemu-stable@xxxxxxxxxx Signed-off-by: AnÃbal Limón <anibal.limon@xxxxxxxxxxxxxxx> Message-Id: <1441313313-3040-1-git-send-email-anibal.limon@xxxxxxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit d12f7309483e20d1bae9304f4b812bf53a8e6510 Author: Emilio G. Cota <cota@xxxxxxxxx> Date: Sun Aug 23 20:23:36 2015 -0400 seqlock: read sequence number atomically With this change we make sure that the compiler will not optimise the read of the sequence number in any way. Signed-off-by: Emilio G. Cota <cota@xxxxxxxxx> Message-Id: <1440375847-17603-8-git-send-email-cota@xxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 123fdbac9b8f1e394fbe92e8b5359193e94ba5bf Author: Emilio G. Cota <cota@xxxxxxxxx> Date: Sun Aug 23 20:23:35 2015 -0400 seqlock: add missing 'inline' to seqlock_read_retry Signed-off-by: Emilio G. Cota <cota@xxxxxxxxx> Message-Id: <1440375847-17603-7-git-send-email-cota@xxxxxxxxx> Reviewed-by: Alex Bennée <alex.bennee@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 16ef9d0252318d7e32e445fd7474af55dbaab7db Author: Emilio G. Cota <cota@xxxxxxxxx> Date: Sun Aug 23 20:23:40 2015 -0400 qemu-thread: handle spurious futex_wait wakeups Signed-off-by: Emilio G. Cota <cota@xxxxxxxxx> Message-Id: <1440375847-17603-12-git-send-email-cota@xxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> For bisection revision-tuple graph see: http://logs.test-lab.xenproject.org/osstest/results/bisect/qemu-mainline/test-armhf-armhf-xl-raw.xen-boot.html Revision IDs in each graph node refer, respectively, to the Trees above. ---------------------------------------- Running cs-bisection-step --graph-out=/home/logs/results/bisect/qemu-mainline/test-armhf-armhf-xl-raw.xen-boot --summary-out=tmp/62264.bisection-summary --basis-template=61666 --blessings=real,real-bisect qemu-mainline test-armhf-armhf-xl-raw xen-boot Searching for failure / basis pass: 62028 fail [host=cubietruck-braque] / 61883 ok. Failure / basis pass flights: 62028 / 61883 Tree: linux git://xenbits.xen.org/linux-pvops.git Tree: linuxfirmware git://xenbits.xen.org/osstest/linux-firmware.git Tree: qemuu git://git.qemu.org/qemu.git Tree: xen git://xenbits.xen.org/xen.git Latest 64972ceb0b0cafc91a09764bc731e1b7f0503b5c c530a75c1e6a472b0eb9558310b518f0dfcd8860 2752e5bedb26fa0c7291f810f9f534b688b2f1d2 a7b39c8bd6cba3fe1c8012987b9e28bdbac7e92d Basis pass 64972ceb0b0cafc91a09764bc731e1b7f0503b5c c530a75c1e6a472b0eb9558310b518f0dfcd8860 30c38c90bd3f1bb105ebc069ac1821067c980b7c a7b39c8bd6cba3fe1c8012987b9e28bdbac7e92d Generating revisions with ./adhoc-revtuple-generator git://xenbits.xen.org/linux-pvops.git#64972ceb0b0cafc91a09764bc731e1b7f0503b5c-64972ceb0b0cafc91a09764bc731e1b7f0503b5c git://xenbits.xen.org/osstest/linux-firmware.git#c530a75c1e6a472b0eb9558310b518f0dfcd8860-c530a75c1e6a472b0eb9558310b518f0dfcd8860 git://git.qemu.org/qemu.git#30c38c90bd3f1bb105ebc069ac1821067c980b7c-2752e5bedb26fa0c7291f810f9f534b688b2f1d2 git://xenbits.xen.org/xen.git#a7b39c8bd6cba3fe1c8012987b9e28bdbac7e92d-a7b39c8bd6cba3fe1c8012987b9e28bdbac7e92d Loaded 1003 nodes in revision graph Searching for test results: 61883 pass 64972ceb0b0cafc91a09764bc731e1b7f0503b5c c530a75c1e6a472b0eb9558310b518f0dfcd8860 30c38c90bd3f1bb105ebc069ac1821067c980b7c a7b39c8bd6cba3fe1c8012987b9e28bdbac7e92d 62028 fail 64972ceb0b0cafc91a09764bc731e1b7f0503b5c c530a75c1e6a472b0eb9558310b518f0dfcd8860 2752e5bedb26fa0c7291f810f9f534b688b2f1d2 a7b39c8bd6cba3fe1c8012987b9e28bdbac7e92d 62222 pass 64972ceb0b0cafc91a09764bc731e1b7f0503b5c c530a75c1e6a472b0eb9558310b518f0dfcd8860 30c38c90bd3f1bb105ebc069ac1821067c980b7c a7b39c8bd6cba3fe1c8012987b9e28bdbac7e92d 62230 pass 64972ceb0b0cafc91a09764bc731e1b7f0503b5c c530a75c1e6a472b0eb9558310b518f0dfcd8860 f0d574d63f4603ec431f16ad535a555bf7548b94 a7b39c8bd6cba3fe1c8012987b9e28bdbac7e92d 62223 fail 64972ceb0b0cafc91a09764bc731e1b7f0503b5c c530a75c1e6a472b0eb9558310b518f0dfcd8860 2752e5bedb26fa0c7291f810f9f534b688b2f1d2 a7b39c8bd6cba3fe1c8012987b9e28bdbac7e92d 62234 pass 64972ceb0b0cafc91a09764bc731e1b7f0503b5c c530a75c1e6a472b0eb9558310b518f0dfcd8860 2b750d9d261bda7f75b39dfc1e1e5f22502929d5 a7b39c8bd6cba3fe1c8012987b9e28bdbac7e92d 62225 pass 64972ceb0b0cafc91a09764bc731e1b7f0503b5c c530a75c1e6a472b0eb9558310b518f0dfcd8860 7cb36e18b2f1c1f971ebdc2121de22a8c2e94fd6 a7b39c8bd6cba3fe1c8012987b9e28bdbac7e92d 62228 pass 64972ceb0b0cafc91a09764bc731e1b7f0503b5c c530a75c1e6a472b0eb9558310b518f0dfcd8860 0c5fbf3b4c1e5210354de71a3dc2ebc8c8a01f31 a7b39c8bd6cba3fe1c8012987b9e28bdbac7e92d 62251 pass 64972ceb0b0cafc91a09764bc731e1b7f0503b5c c530a75c1e6a472b0eb9558310b518f0dfcd8860 7e4804dafd4689312ef1172b549927a973bb5414 a7b39c8bd6cba3fe1c8012987b9e28bdbac7e92d 62236 pass 64972ceb0b0cafc91a09764bc731e1b7f0503b5c c530a75c1e6a472b0eb9558310b518f0dfcd8860 7e4804dafd4689312ef1172b549927a973bb5414 a7b39c8bd6cba3fe1c8012987b9e28bdbac7e92d 62239 fail 64972ceb0b0cafc91a09764bc731e1b7f0503b5c c530a75c1e6a472b0eb9558310b518f0dfcd8860 a2aa09e18186801931763fbd40a751fa39971b18 a7b39c8bd6cba3fe1c8012987b9e28bdbac7e92d 62255 fail 64972ceb0b0cafc91a09764bc731e1b7f0503b5c c530a75c1e6a472b0eb9558310b518f0dfcd8860 a2aa09e18186801931763fbd40a751fa39971b18 a7b39c8bd6cba3fe1c8012987b9e28bdbac7e92d 62262 pass 64972ceb0b0cafc91a09764bc731e1b7f0503b5c c530a75c1e6a472b0eb9558310b518f0dfcd8860 7e4804dafd4689312ef1172b549927a973bb5414 a7b39c8bd6cba3fe1c8012987b9e28bdbac7e92d 62264 fail 64972ceb0b0cafc91a09764bc731e1b7f0503b5c c530a75c1e6a472b0eb9558310b518f0dfcd8860 a2aa09e18186801931763fbd40a751fa39971b18 a7b39c8bd6cba3fe1c8012987b9e28bdbac7e92d Searching for interesting versions Result found: flight 61883 (pass), for basis pass Result found: flight 62028 (fail), for basis failure Repro found: flight 62222 (pass), for basis pass Repro found: flight 62223 (fail), for basis failure 0 revisions at 64972ceb0b0cafc91a09764bc731e1b7f0503b5c c530a75c1e6a472b0eb9558310b518f0dfcd8860 7e4804dafd4689312ef1172b549927a973bb5414 a7b39c8bd6cba3fe1c8012987b9e28bdbac7e92d No revisions left to test, checking graph state. Result found: flight 62236 (pass), for last pass Result found: flight 62239 (fail), for first failure Repro found: flight 62251 (pass), for last pass Repro found: flight 62255 (fail), for first failure Repro found: flight 62262 (pass), for last pass Repro found: flight 62264 (fail), for first failure *** Found and reproduced problem changeset *** Bug is in tree: qemuu git://git.qemu.org/qemu.git Bug introduced: a2aa09e18186801931763fbd40a751fa39971b18 Bug not present: 7e4804dafd4689312ef1172b549927a973bb5414 commit a2aa09e18186801931763fbd40a751fa39971b18 Merge: 7e4804d 47d4be1 Author: Peter Maydell <peter.maydell@xxxxxxxxxx> Date: Mon Sep 14 16:13:16 2015 +0100 Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging * Support for jemalloc * qemu_mutex_lock_iothread "No such process" fix * cutils: qemu_strto* wrappers * iohandler.c simplification * Many other fixes and misc patches. And some MTTCG work (with Emilio's fixes squashed): * Signal-free TCG kick * Removing spinlock in favor of QemuMutex * User-mode emulation multi-threading fixes/docs # gpg: Signature made Thu 10 Sep 2015 09:03:07 BST using RSA key ID 78C7AE83 # gpg: Good signature from "Paolo Bonzini <bonzini@xxxxxxx>" # gpg: aka "Paolo Bonzini <pbonzini@xxxxxxxxxx>" * remotes/bonzini/tags/for-upstream: (44 commits) cutils: work around platform differences in strto{l,ul,ll,ull} cpu-exec: fix lock hierarchy for user-mode emulation exec: make mmap_lock/mmap_unlock globally available tcg: comment on which functions have to be called with mmap_lock held tcg: add memory barriers in page_find_alloc accesses remove unused spinlock. replace spinlock by QemuMutex. cpus: remove tcg_halt_cond and tcg_cpu_thread globals cpus: protect work list with work_mutex scripts/dump-guest-memory.py: fix after RAMBlock change configure: Add support for jemalloc add macro file for coccinelle configure: factor out adding disas configure vhost-scsi: fix wrong vhost-scsi firmware path checkpatch: remove tests that are not relevant outside the kernel checkpatch: adapt some tests to QEMU CODING_STYLE: update mixed declaration rules qmp: Add example usage of strto*l() qemu wrapper cutils: Add qemu_strtoull() wrapper cutils: Add qemu_strtoll() wrapper ... Signed-off-by: Peter Maydell <peter.maydell@xxxxxxxxxx> commit 47d4be12c3997343e436c6cca89aefbbbeb70863 Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Thu Sep 10 10:02:00 2015 +0200 cutils: work around platform differences in strto{l,ul,ll,ull} Linux returns 0 if no conversion was made, while OS X and presumably the BSDs return EINVAL. The OS X convention rejects more invalid inputs, so convert to it and adjust the test case. Windows returns 1 from strtoul and strtoull (instead of -1) for negative out-of-range input; fix it up. Reported-by: Peter Maydell <peter.maydell@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 9fd1a94888cd6a559f95c3596ec1ac28b74838c1 Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Tue Aug 11 11:33:24 2015 +0200 cpu-exec: fix lock hierarchy for user-mode emulation tb_lock has to be taken inside the mmap_lock (example: tb_invalidate_phys_range is called by target_mmap), but tb_link_page is taking the mmap_lock and it is called with the tb_lock held. To fix this, take the mmap_lock in tb_find_slow, not in tb_link_page. Reviewed-by: Peter Maydell <peter.maydell@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 8fd19e6cfd5b6cdf028c6ac2ff4157ed831ea3a6 Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Tue Aug 11 10:57:52 2015 +0200 exec: make mmap_lock/mmap_unlock globally available There is some iffy lock hierarchy going on in translate-all.c. To fix it, we need to take the mmap_lock in cpu-exec.c. Make the functions globally available. Reviewed-by: Peter Maydell <peter.maydell@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 756920876f60829fad0d15df4f3fa205077a8131 Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Tue Aug 11 10:59:50 2015 +0200 tcg: comment on which functions have to be called with mmap_lock held Reviewed-by: Peter Maydell <peter.maydell@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 6940fab84b826175cf90d48d0e3da1b76518f5b4 Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Wed Aug 12 09:41:40 2015 +0200 tcg: add memory barriers in page_find_alloc accesses page_find is reading the radix tree outside all locks, so it has to use the RCU primitives. It does not need RCU critical sections because the PageDescs are never removed, so there is never a need to wait for the end of code sections that use a PageDesc. Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 2496ff1311283480f9de3614080b8842d838ade4 Author: KONRAD Frederic <fred.konrad@xxxxxxxxxxxxx> Date: Mon Aug 10 17:27:03 2015 +0200 remove unused spinlock. This just removes spinlock as it is not used anymore. Signed-off-by: KONRAD Frederic <fred.konrad@xxxxxxxxxxxxx> Message-Id: <1439220437-23957-6-git-send-email-fred.konrad@xxxxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 677ef6230b603571ae05125db469f7b4c8912a77 Author: KONRAD Frederic <fred.konrad@xxxxxxxxxxxxx> Date: Mon Aug 10 17:27:02 2015 +0200 replace spinlock by QemuMutex. spinlock is only used in two cases: * cpu-exec.c: to protect TranslationBlock * mem_helper.c: for lock helper in target-i386 (which seems broken). It's a pthread_mutex_t in user-mode, so we can use QemuMutex directly, with an #ifdef. The #ifdef will be removed when multithreaded TCG will need the mutex as well. Signed-off-by: KONRAD Frederic <fred.konrad@xxxxxxxxxxxxx> Message-Id: <1439220437-23957-5-git-send-email-fred.konrad@xxxxxxxxxxxxx> Signed-off-by: Emilio G. Cota <cota@xxxxxxxxx> [Merge Emilio G. Cota's patch to remove volatile. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit d5f8d61390de8f2acc0da93f184e421a709cb503 Author: KONRAD Frederic <fred.konrad@xxxxxxxxxxxxx> Date: Mon Aug 10 17:27:06 2015 +0200 cpus: remove tcg_halt_cond and tcg_cpu_thread globals This hides the tcg_halt_cond and tcg_cpu_thread global variables inside qemu_tcg_init_vcpu. Multi-threaded TCG will need one QemuCond and one QemuThread per virtual cpu, so it's preferrable to use cpu->halt_cond and cpu->thread. Signed-off-by: KONRAD Frederic <fred.konrad@xxxxxxxxxxxxx> Message-Id: <1439220437-23957-9-git-send-email-fred.konrad@xxxxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 376692b9dc6f02303ee07a4146d08d8727d79c0c Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Fri Jul 10 12:32:32 2015 +0200 cpus: protect work list with work_mutex Protect the list of queued work items with something other than the BQL, as a preparation for running the work items outside it. Reviewed-by: Peter Maydell <peter.maydell@xxxxxxxxxx> Signed-off-by: KONRAD Frederic <fred.konrad@xxxxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 0c71d41e2aa3c7356500ae624166f3bb8c201aee Author: Michael S. Tsirkin <mst@xxxxxxxxxx> Date: Thu Aug 27 12:06:23 2015 +0300 scripts/dump-guest-memory.py: fix after RAMBlock change commit 9b8424d5735278ca382f11adc7c63072b632ab83 "exec: split length -> used_length/max_length" changed field names in struct RAMBlock It turns out that scripts/dump-guest-memory.py was poking at this field, update it accordingly. Cc: qemu-stable@xxxxxxxxxx Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx> Signed-off-by: Michael S. Tsirkin <mst@xxxxxxxxxx> Message-Id: <1440666378-3152-1-git-send-email-mst@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 7b01cb974f1093885c40bf4d0d3e78e27e531363 Author: Alexandre Derumier <aderumier@xxxxxxxxx> Date: Fri Jun 19 12:56:58 2015 +0200 configure: Add support for jemalloc This adds "--enable-jemalloc" and "--disable-jemalloc" to allow linking to jemalloc memory allocator. We have already tcmalloc support, but it seem to not working well with a lot of iothreads/disks. The main problem is that tcmalloc use a shared thread cache of 16MB by default. With more threads, this cache is shared, and some bad garbage collections can occur if the cache is too low. It's possible to tcmalloc cache increase it with a env var: TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES=256MB With default 16MB, performances are really bad with more than 2 disks. Increasing to 256MB, it's helping but still have problem with 16 disks/iothreads. Jemalloc don't have performance problem with default configuration. Here the benchmark results in iops of 1 qemu vm randread 4K iodepth=32, with rbd block backend (librbd is doing a lot of memory allocation), 1 iothread by disk glibc malloc ------------ 1 disk 29052 2 disks 55878 4 disks 127899 8 disks 240566 15 disks 269976 jemalloc -------- 1 disk 41278 2 disks 75781 4 disks 195351 8 disks 294241 15 disks 298199 tcmalloc 2.2.1 default 16M cache -------------------------------- 1 disk 37911 2 disks 67698 4 disks 41076 8 disks 43312 15 disks 37569 tcmalloc : 256M cache --------------------------- 1 disk 33914 2 disks 58839 4 disks 148205 8 disks 213298 15 disks 218383 Signed-off-by: Alexandre Derumier <aderumier@xxxxxxxxx> Message-Id: <1434711418-20429-1-git-send-email-aderumier@xxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 3f7a899ff4e0681ed148b1cea07dc65550114fdb Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Mon Sep 7 09:50:09 2015 +0200 add macro file for coccinelle Coccinelle chokes on some idioms from compiler.h and queue.h. Extract those in a macro file, to be used with "--macro-file scripts/cocci-macro-file.h". Reviewed-by: Markus Armbruster <armbru@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit c765fcac96e111199225c7387c01694fe076b341 Author: Peter Crosthwaite <crosthwaitepeter@xxxxxxxxx> Date: Sat Aug 29 03:33:59 2015 -0700 configure: factor out adding disas configure Every arch adds its disas configury to both its own config as well config_disas_all. Make a small function do to both at once. Signed-off-by: Peter Crosthwaite <crosthwaite.peter@xxxxxxxxx> Message-Id: <1440844439-19391-1-git-send-email-crosthwaite.peter@xxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit f42bf6a262ab5923a1a3bc8f731b830396937c47 Author: Gonglei <arei.gonglei@xxxxxxxxxx> Date: Wed Aug 26 09:52:51 2015 +0800 vhost-scsi: fix wrong vhost-scsi firmware path vhost-scsi bootindex does't work because Qemu passes wrong fireware path to seabios. before: /pci@i0cf8/scsi@7channel@0/vhost-scsi@0,0 after applying the patch: /pci@i0cf8/scsi@7/channel@0/vhost-scsi@0,0 Reported-by: Subo <subo7@xxxxxxxxxx> Signed-off-by: Gonglei <arei.gonglei@xxxxxxxxxx> Message-Id: <1440553971-11108-1-git-send-email-arei.gonglei@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit f1e155bbf863ade457019c6f09d4cba06b2d6bb4 Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Sun Aug 16 23:01:19 2015 +0200 checkpatch: remove tests that are not relevant outside the kernel Fully removing Sparse support requires more invasive changes. Only remove the really kernel-specific parts such as address space names. Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 71c47b01ca0df34d6b41e0975be6e0633c5254cf Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Sun Aug 16 23:15:46 2015 +0200 checkpatch: adapt some tests to QEMU Mostly change severity levels, but some tests can also be adjusted to refer to QEMU APIs or data structures. Reviewed-by: Stefan Hajnoczi <stefanha@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 690a35e1f2acf4ccd0501b18228bc6fba8f9c768 Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Fri Jun 19 09:28:13 2015 +0200 CODING_STYLE: update mixed declaration rules Mixed declarations do come in handy at the top of #ifdef blocks. Reluctantly allow this particular usage and suggest an alternative. Reviewed-by: Stefan Hajnoczi <stefanha@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit d4ba8cb0a17e7de54753ff1bdeee4428118bb9ab Author: Carlos L. Torres <carlos.torres@xxxxxxxxxxxxx> Date: Sun Jul 19 18:02:21 2015 -0500 qmp: Add example usage of strto*l() qemu wrapper Signed-off-by: Carlos L. Torres <carlos.torres@xxxxxxxxxxxxx> Message-Id: <11ac63e95d88551f1c2c9b1216b15d3cb8ba4468.1437346779.git.carlos.torres@xxxxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 3904e6bf042391abc749d717465022e96e276fc7 Author: Carlos L. Torres <carlos.torres@xxxxxxxxxxxxx> Date: Sun Jul 19 18:02:20 2015 -0500 cutils: Add qemu_strtoull() wrapper Add wrapper for strtoull() function. Include unit tests. Signed-off-by: Carlos L. Torres <carlos.torres@xxxxxxxxxxxxx> Message-Id: <e0f0f611c9a81f3c29f451d0b17d755dfab1e90a.1437346779.git.carlos.torres@xxxxxxxxxxxxx> [Use uint64_t in prototype. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 8ac4df40cc5de606a8ac9174e2340c21093b4e3b Author: Carlos L. Torres <carlos.torres@xxxxxxxxxxxxx> Date: Sun Jul 19 18:02:19 2015 -0500 cutils: Add qemu_strtoll() wrapper Add wrapper for strtoll() function. Include unit tests. Signed-off-by: Carlos L. Torres <carlos.torres@xxxxxxxxxxxxx> Message-Id: <7454a6bb9ec03b629e8beb4f109dd30dc2c9804c.1437346779.git.carlos.torres@xxxxxxxxxxxxx> [Use int64_t in prototype, since that's what QEMU uses. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit c817c01548b1500753d0bea3852938d919161778 Author: Carlos L. Torres <carlos.torres@xxxxxxxxxxxxx> Date: Sun Jul 19 18:02:18 2015 -0500 cutils: Add qemu_strtoul() wrapper Add wrapper for strtoul() function. Include unit tests. Signed-off-by: Carlos L. Torres <carlos.torres@xxxxxxxxxxxxx> Message-Id: <9621b4ae8e35fded31c715c2ae2a98f904f07ad0.1437346779.git.carlos.torres@xxxxxxxxxxxxx> [Fix tests for 32-bit build. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 764e0fa497ff5bbc9c9d7c116da2f00f34e71716 Author: Carlos L. Torres <carlos.torres@xxxxxxxxxxxxx> Date: Sun Jul 19 18:02:17 2015 -0500 cutils: Add qemu_strtol() wrapper Add wrapper for strtol() function. Include unit tests. Signed-off-by: Carlos L. Torres <carlos.torres@xxxxxxxxxxxxx> Message-Id: <07199f1c0ff3892790c6322123aee1e92f580550.1437346779.git.carlos.torres@xxxxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit d1142fb83efdcf8a6c2dee825569892203e16d2c Author: Emilio G. Cota <cota@xxxxxxxxx> Date: Sun Aug 23 20:23:39 2015 -0400 translate-all: remove obsolete comment about l1_map l1_map is based on physical addresses in full-system mode, as pointed out in an earlier comment. Said comment also mentions that virtual addresses are only used in l1_map in user-only mode. Signed-off-by: Emilio G. Cota <cota@xxxxxxxxx> Message-Id: <1440375847-17603-11-git-send-email-cota@xxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 709037636992e9289ce9147e59d56fb35d90b140 Author: Emilio G. Cota <cota@xxxxxxxxx> Date: Sun Aug 23 20:23:41 2015 -0400 linux-user: call rcu_(un)register_thread on pthread_(exit|create) Signed-off-by: Emilio G. Cota <cota@xxxxxxxxx> Message-Id: <1440375847-17603-13-git-send-email-cota@xxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 492e1ca9bd3f43ba417a5cf918e6c769aa2478b9 Author: Emilio G. Cota <cota@xxxxxxxxx> Date: Sun Aug 23 20:23:38 2015 -0400 rcu: fix comment with s/rcu_gp_lock/rcu_registry_lock/ Signed-off-by: Emilio G. Cota <cota@xxxxxxxxx> Message-Id: <1440375847-17603-10-git-send-email-cota@xxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 5243722376873a48e9852a58b91f4d4101ee66e4 Author: Emilio G. Cota <cota@xxxxxxxxx> Date: Sun Aug 23 20:23:37 2015 -0400 rcu: init rcu_registry_lock after fork We were unlocking this lock after fork, which is wrong since only the thread that holds a mutex is allowed to unlock it. Signed-off-by: Emilio G. Cota <cota@xxxxxxxxx> Message-Id: <1440375847-17603-9-git-send-email-cota@xxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 12a1ddc160cb6a73e8a6c319f3962a20da2cd22f Author: Michael Marineau <michael.marineau@xxxxxxxxxx> Date: Sun Aug 9 00:02:55 2015 -0700 Makefile.target: include top level build dir in vpath Using ccache with CCACHE_BASEDIR set to $(SRC_PATH) or a parent will rewrite all absolute paths to relative paths. This interacts poorly with QEMU's two-level build directory scheme. For example, lets say BUILD_DIR=$(SRC_PATH)/build so build/blockdev.d will contain: blockdev.o: ../blockdev.c ../include/sysemu/block-backend.h \ Now the target build under build/x86_64-softmmu or similar will depend on ../blockdev.o which in turn will get make to source ../blockdev.d to check its dependencies. Since make always considers paths relative to the current working directory rather than the makefile the path appeared in the relative path to ../blockdev.c is useless. This change simply adds the top level build directory to vpath so paths relative to the source directory, top build directory, and target build directory all work just fine. Signed-off-by: Michael Marineau <michael.marineau@xxxxxxxxxx> Message-Id: <1439103775-11836-1-git-send-email-michael.marineau@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 3c9589e180d98cdadb143bd2a792fb9d19d9aec6 Author: Dr. David Alan Gilbert <dgilbert@xxxxxxxxxx> Date: Fri Aug 14 11:25:14 2015 +0100 Move RAMBlock and ram_list to ram_addr.h Signed-off-by: Dr. David Alan Gilbert <dgilbert@xxxxxxxxxx> Message-Id: <1439547914-18249-1-git-send-email-dgilbert@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit e0c382113f768cc375a0d61b7cb3692f1b4bba58 Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Wed Aug 26 00:19:19 2015 +0200 tcg: signal-free qemu_cpu_kick Signals are slow and do not exist on Win32. The previous patches have done most of the legwork to introduce memory barriers (some of them were even there already for the sake of Windows!) and we can now set the flags directly in the iothread. qemu_cpu_kick_thread is not used anymore on TCG, since the TCG thread is never outside usermode while the CPU is running (not halted). Instead run the content of the signal handler (now in qemu_cpu_kick_no_halt) directly. qemu_cpu_kick_no_halt is also used in qemu_mutex_lock_iothread to avoid the overhead of qemu_cond_broadcast. Reviewed-by: Richard Henderson <rth@xxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 9102dedaa1ee1e89ce4a81283c403ff4928e9ef9 Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Tue Aug 18 06:52:09 2015 -0700 use qemu_cpu_kick instead of cpu_exit or qemu_cpu_kick_thread Use the same API to trigger interruption of a CPU, no matter if under TCG or KVM. There is no difference: these calls come from the CPU thread, so the qemu_cpu_kick calls will send a signal to the running thread and it will be processed synchronously, just like a call to cpu_exit. The only difference is in the overhead, but neither call to cpu_exit (now qemu_cpu_kick) is in a hot path. Reviewed-by: Richard Henderson <rth@xxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit aed807c8e2bf009b2c6a35490d4fd4383887221d Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Tue Aug 18 06:43:15 2015 -0700 tcg: synchronize exit_request and tcg_current_cpu accesses Synchronize the remaining pair of accesses in cpu_signal. These should be necessary on Windows as well, at least in theory. Probably SuspendProcess and ResumeProcess introduce some implicit memory barrier. Reviewed-by: Richard Henderson <rth@xxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit ab096a75cd626dcd4ad34b2a11652df0269bee0d Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Tue Aug 18 06:34:19 2015 -0700 tcg: synchronize cpu->exit_request and cpu->tcg_exit_req accesses Reviewed-by: Richard Henderson <rth@xxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit b0a46fa796504c7334202877a68c857e49f7c96c Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Tue Aug 18 06:32:02 2015 -0700 tcg: assign cpu->current_tb in a simpler place TCG has not been reading cpu->current_tb from signal handlers for years. The code that synchronized cpu_exec with the signal handler is not needed anymore. Reviewed-by: Richard Henderson <rth@xxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit f240eb6fdcf63a5600e15fb44c6960586459a97f Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Wed Aug 26 00:17:58 2015 +0200 remove qemu/tls.h TLS is now required on all platforms, so DECLARE_TLS/DEFINE_TLS is not needed anymore. Removing it does not break Windows because of the previous patch. Reviewed-by: Richard Henderson <rth@xxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 9373e63297c43752f9cf085feb7f5aed57d959f8 Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Tue Aug 18 06:24:34 2015 -0700 tcg: introduce tcg_current_cpu This is already useful on Windows in order to remove tls.h, because accesses to current_cpu are done from a different thread on that platform. It will be used on POSIX platforms as soon TCG stops using signals to interrupt the execution of translated code. Reviewed-by: Richard Henderson <rth@xxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 5039d6e23586fe6bbedc5e4fe302b48a66890ade Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Mon Feb 16 14:13:11 2015 +0100 i8257: remove cpu_request_exit irq This is unused. cpu_exit now is almost exclusively an internal function to the CPU execution loop. In a few patches, we'll change the remaining occurrences to qemu_cpu_kick, making it truly internal. Reviewed-by: Richard henderson <rth@xxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 19d2b5e6ff7202c2bf45c547efa85ae6c2d76bbd Author: Paolo Bonzini <pbonzini@xxxxxxxxxx> Date: Mon Feb 16 14:08:22 2015 +0100 i8257: rewrite DMA_schedule to avoid hooking into the CPU loop The i8257 DMA controller uses an idle bottom half, which by default does not cause the main loop to exit. Therefore, the DMA_schedule function is there to ensure that the CPU relinquishes the iothread mutex to the iothread. However, this is not enough since the iothread will call aio_compute_timeout() and go to sleep again. In the iothread world, forcing execution of the idle bottom half is much simpler, and only requires a call to qemu_notify_event(). Do it, removing the need for the "cpu_request_exit" pseudo-irq. The next patch will remove it. Reviewed-by: Richard Henderson <rth@xxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 5f5b5942d56a138baad0ae01458d5d0e62d5be68 Author: Andrey Smetanin <asmetanin@xxxxxxxxxxxxx> Date: Fri Jul 3 15:01:42 2015 +0300 Added generic panic handler qemu_system_guest_panicked() There are pieces of guest panic handling code that can be shared in one generic function. These code replaced by call qemu_system_guest_panicked(). Signed-off-by: Andrey Smetanin <asmetanin@xxxxxxxxxxxxx> Signed-off-by: Denis V. Lunev <den@xxxxxxxxxx> CC: Paolo Bonzini <pbonzini@xxxxxxxxxx> CC: Andreas FÃ?¤rber <afaerber@xxxxxxx> Message-Id: <1435924905-8926-10-git-send-email-den@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 6d1f252d8c1ba73bf6ed9af28731a9c9c3d473a2 Author: Peter Lieven <pl@xxxxxxx> Date: Fri Aug 14 13:33:36 2015 +0200 block/iscsi: validate block size returned from target It has been reported that at least tgtd returns a block size of 0 for LUN 0. To avoid running into divide by zero later on and protect against other problematic block sizes validate the block size right at connection time. Cc: qemu-stable@xxxxxxxxxx Reported-by: Andrey Korolyov <andrey@xxxxxxx> Signed-off-by: Peter Lieven <pl@xxxxxxx> Message-Id: <1439552016-8557-1-git-send-email-pl@xxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit f3926945c85689e8af324c0db0b39be771dbbebb Author: Fam Zheng <famz@xxxxxxxxxx> Date: Mon Sep 7 11:28:58 2015 +0800 iohandler: Use aio API iohandler.c shares the same interface with aio, but with duplicated code. It's better to rebase iohandler, also because that aio is a more friendly interface to multi-threads. Create a global AioContext instance and let its GSource handle the iohandler events. Signed-off-by: Fam Zheng <famz@xxxxxxxxxx> Message-Id: <1441596538-4412-1-git-send-email-famz@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 46036b2462c7ff56c0af6466ea6b9248197a38a8 Author: AnÃbal Limón <anibal.limon@xxxxxxxxxxxxxxx> Date: Thu Sep 3 15:48:33 2015 -0500 cpus.c: qemu_mutex_lock_iothread fix race condition at cpu thread init When QEMU starts the RCU thread executes qemu_mutex_lock_thread causing error "qemu:qemu_cpu_kick_thread: No such process" and exits. This isn't occur frequently but in glibc the thread id can exist and this not guarantee that the thread is on active/running state. If is inserted a sleep(1) after newthread assignment [1] the issue appears. So not make assumption that thread exist if first_cpu->thread is set then change the validation of cpu to created that is set into cpu threads (kvm, tcg, dummy). [1] https://sourceware.org/git/?p=glibc.git;a=blob;f=nptl/pthread_create.c;h=d10f4ea8004e1d8f3a268b95cc0f8d93b8d89867;hb=HEAD#l621 Cc: qemu-stable@xxxxxxxxxx Signed-off-by: AnÃbal Limón <anibal.limon@xxxxxxxxxxxxxxx> Message-Id: <1441313313-3040-1-git-send-email-anibal.limon@xxxxxxxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit d12f7309483e20d1bae9304f4b812bf53a8e6510 Author: Emilio G. Cota <cota@xxxxxxxxx> Date: Sun Aug 23 20:23:36 2015 -0400 seqlock: read sequence number atomically With this change we make sure that the compiler will not optimise the read of the sequence number in any way. Signed-off-by: Emilio G. Cota <cota@xxxxxxxxx> Message-Id: <1440375847-17603-8-git-send-email-cota@xxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 123fdbac9b8f1e394fbe92e8b5359193e94ba5bf Author: Emilio G. Cota <cota@xxxxxxxxx> Date: Sun Aug 23 20:23:35 2015 -0400 seqlock: add missing 'inline' to seqlock_read_retry Signed-off-by: Emilio G. Cota <cota@xxxxxxxxx> Message-Id: <1440375847-17603-7-git-send-email-cota@xxxxxxxxx> Reviewed-by: Alex Bennée <alex.bennee@xxxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> commit 16ef9d0252318d7e32e445fd7474af55dbaab7db Author: Emilio G. Cota <cota@xxxxxxxxx> Date: Sun Aug 23 20:23:40 2015 -0400 qemu-thread: handle spurious futex_wait wakeups Signed-off-by: Emilio G. Cota <cota@xxxxxxxxx> Message-Id: <1440375847-17603-12-git-send-email-cota@xxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> Revision graph left in /home/logs/results/bisect/qemu-mainline/test-armhf-armhf-xl-raw.xen-boot.{dot,ps,png,html}. ---------------------------------------- 62264: tolerable ALL FAIL flight 62264 qemu-mainline real-bisect [real] http://logs.test-lab.xenproject.org/osstest/logs/62264/ Failures :-/ but no regressions. Tests which did not succeed, including tests which could not be run: test-armhf-armhf-xl-raw 6 xen-boot fail baseline untested jobs: test-armhf-armhf-xl-raw fail ------------------------------------------------------------ sg-report-flight on osstest.test-lab.xenproject.org logs: /home/logs/logs images: /home/logs/images Logs, config files, etc. are available at http://logs.test-lab.xenproject.org/osstest/logs Explanation of these reports, and of osstest in general, is at http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master Test harness code can be found at http://xenbits.xen.org/gitweb?p=osstest.git;a=summary _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |