From: "Emilio G. Cota" <cota@braap.org>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: mttcg@greensocs.com, "Peter Maydell" <peter.maydell@linaro.org>,
"Jan Kiszka" <jan.kiszka@siemens.com>,
"Mark Burton" <mark.burton@greensocs.com>,
"QEMU Developers" <qemu-devel@nongnu.org>,
"Alexander Graf" <agraf@suse.de>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Frederic Konrad" <fred.konrad@greensocs.com>
Subject: Re: [Qemu-devel] [RFC 00/10] MultiThread TCG.
Date: Tue, 28 Apr 2015 13:49:14 -0400 [thread overview]
Message-ID: <20150428174914.GA4586@flamenco> (raw)
In-Reply-To: <553F4D9D.4040901@redhat.com>
On Tue, Apr 28, 2015 at 11:06:37 +0200, Paolo Bonzini wrote:
> On 27/04/2015 19:06, Emilio G. Cota wrote:
> > Note that I'm running with -smp 1. My guess is that the iothread
> > is starved, since patch 472f4003 "Drop global lock during TCG code execution"
> > removes from the iothread the ability to kick CPU threads.
>
> In theory that shouldn't be necessary anymore. The CPU thread should
> only hold the global lock for very small periods of time, similar to KVM.
You're right.
I added printouts around qemu_global_mutex_lock/unlock
and also added printouts around the cond_wait's that take the
BQL. The vcpu goes quiet after a while:
[...]
softmmu_template.h:io_writel:387 UNLO tid 17633
qemu/cputlb.c:tlb_protect_code:196 LOCK tid 17633
cputlb.c:tlb_protect_code:199 UNLO tid 17633
cputlb.c:tlb_protect_code:196 LOCK tid 17633
cputlb.c:tlb_protect_code:199 UNLO tid 17633
cputlb.c:tlb_protect_code:196 LOCK tid 17633
cputlb.c:tlb_protect_code:199 UNLO tid 17633
softmmu_template.h:io_readl:160 LOCK tid 17633
softmmu_template.h:io_readl:165 UNLO tid 17633
main-loop.c:os_host_main_loop_wait:242 LOCK tid 17630
main-loop.c:os_host_main_loop_wait:234 UNLO tid 17630
.. And at this point the last pair of LOCK/UNLO goes indefinitely.
> Can you post a backtrace?
$ sudo gdb --pid=8919
(gdb) info threads
Id Target Id Frame
3 Thread 0x7ffff596b700 (LWP 16204) "qemu-system-arm" syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
2 Thread 0x7ffff0f69700 (LWP 16206) "qemu-system-arm" 0x00007ffff33179fe in ?? ()
* 1 Thread 0x7ffff7fe4a80 (LWP 16203) "qemu-system-arm" 0x00007ffff5e9b1ef in __GI_ppoll (fds=0x5555569b8f70, nfds=4,
timeout=<optimized out>, sigmask=0x0) at ../sysdeps/unix/sysv/linux/ppoll.c:56
(gdb) bt
#0 0x00007ffff5e9b1ef in __GI_ppoll (fds=0x5555569b8f70, nfds=4, timeout=<optimized out>, sigmask=0x0)
at ../sysdeps/unix/sysv/linux/ppoll.c:56
#1 0x00005555559a9e26 in qemu_poll_ns (fds=0x5555569b8f70, nfds=4, timeout=9689027) at qemu-timer.c:326
#2 0x00005555559a8abb in os_host_main_loop_wait (timeout=9689027) at main-loop.c:239
#3 0x00005555559a8bef in main_loop_wait (nonblocking=0) at main-loop.c:494
#4 0x000055555578c8c5 in main_loop () at vl.c:1803
#5 0x0000555555794634 in main (argc=16, argv=0x7fffffffe828, envp=0x7fffffffe8b0) at vl.c:4371
(gdb) thread 3
[Switching to thread 3 (Thread 0x7ffff596b700 (LWP 16204))]
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
38 ../sysdeps/unix/sysv/linux/x86_64/syscall.S: No such file or directory.
(gdb) bt
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x0000555555a3a061 in futex_wait (ev=0x555556392724 <rcu_call_ready_event>, val=4294967295) at util/qemu-thread-posix.c:305
#2 0x0000555555a3a20b in qemu_event_wait (ev=0x555556392724 <rcu_call_ready_event>) at util/qemu-thread-posix.c:401
#3 0x0000555555a5011d in call_rcu_thread (opaque=0x0) at util/rcu.c:231
#4 0x00007ffff617b182 in start_thread (arg=0x7ffff596b700) at pthread_create.c:312
#5 0x00007ffff5ea847d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
(gdb) thread 2
[Switching to thread 2 (Thread 0x7ffff0f69700 (LWP 16206))]
#0 0x00007ffff33179fe in ?? ()
(gdb) bt
#0 0x00007ffff33179fe in ?? ()
#1 0x0000555555f0c200 in ?? ()
#2 0x00007fffd40029a0 in ?? ()
#3 0x00007fffd40029c0 in ?? ()
#4 0x13b33d1714a74c00 in ?? ()
#5 0x00007ffff0f685c0 in ?? ()
#6 0x00005555555f9da7 in tcg_out_reloc (s=<error reading variable: Cannot access memory at address 0xffff8ab1>,
code_ptr=<error reading variable: Cannot access memory at address 0xffff8aa9>,
type=<error reading variable: Cannot access memory at address 0xffff8aa5>,
label_index=<error reading variable: Cannot access memory at address 0xffff8aa1>,
addend=<error reading variable: Cannot access memory at address 0xffff8a99>) at /local/home/cota/src/qemu/tcg/tcg.c:224
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb) q
So it seems that the vcpu thread doesn't come out of the execution loop
from which that last io_readl was performed.
Emilio
prev parent reply other threads:[~2015-04-28 17:48 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-16 17:19 [Qemu-devel] [RFC 00/10] MultiThread TCG fred.konrad
2015-01-16 17:19 ` [Qemu-devel] [RFC 01/10] target-arm: protect cpu_exclusive_* fred.konrad
2015-01-27 14:36 ` Alex Bennée
2015-01-29 15:17 ` Peter Maydell
2015-02-02 8:31 ` Frederic Konrad
2015-02-02 8:36 ` Peter Maydell
2015-02-26 18:09 ` Frederic Konrad
2015-02-26 20:36 ` Alexander Graf
2015-02-26 22:56 ` Peter Maydell
2015-02-27 7:54 ` Mark Burton
2015-03-02 12:27 ` Peter Maydell
2015-03-03 15:29 ` Mark Burton
2015-03-03 15:32 ` Paolo Bonzini
2015-03-03 15:33 ` Mark Burton
2015-03-03 15:34 ` Paolo Bonzini
2015-03-03 15:41 ` Mark Burton
2015-03-03 15:47 ` Dr. David Alan Gilbert
2015-03-13 19:38 ` Richard Henderson
2015-03-13 20:04 ` Dr. David Alan Gilbert
2015-01-16 17:19 ` [Qemu-devel] [RFC 02/10] use a different translation block list for each cpu fred.konrad
2015-01-27 14:45 ` Alex Bennée
2015-01-27 15:16 ` Frederic Konrad
2015-01-29 15:24 ` Peter Maydell
2015-01-29 15:33 ` Mark Burton
2015-02-02 8:39 ` Frederic Konrad
2015-02-02 8:49 ` Peter Maydell
2015-02-03 16:17 ` Richard Henderson
2015-02-03 16:33 ` Paolo Bonzini
2015-01-16 17:19 ` [Qemu-devel] [RFC 03/10] replace spinlock by QemuMutex fred.konrad
2015-01-29 15:25 ` Peter Maydell
2015-02-02 8:45 ` Frederic Konrad
2015-01-16 17:19 ` [Qemu-devel] [RFC 04/10] remove unused spinlock fred.konrad
2015-01-16 17:19 ` [Qemu-devel] [RFC 05/10] extract TBContext from TCGContext fred.konrad
2015-01-29 15:44 ` Peter Maydell
2015-02-03 16:30 ` Richard Henderson
2015-01-16 17:19 ` [Qemu-devel] [RFC 06/10] protect TBContext with tb_lock fred.konrad
2015-01-16 17:19 ` [Qemu-devel] [RFC 07/10] tcg: remove tcg_halt_cond global variable fred.konrad
2015-01-16 17:19 ` [Qemu-devel] [RFC 08/10] Drop global lock during TCG code execution fred.konrad
2015-01-16 17:19 ` [Qemu-devel] [RFC 09/10] cpu: remove exit_request global fred.konrad
2015-01-29 15:52 ` Peter Maydell
2015-02-02 10:03 ` Paolo Bonzini
2015-02-02 13:12 ` Peter Maydell
2015-02-02 13:14 ` Paolo Bonzini
2015-02-03 9:37 ` Frederic Konrad
2015-02-03 10:29 ` Peter Maydell
2015-01-16 17:19 ` [Qemu-devel] [RFC 10/10] tcg: switch on multithread fred.konrad
2015-03-27 10:08 ` [Qemu-devel] [RFC 00/10] MultiThread TCG Alex Bennée
2015-03-27 10:37 ` Frederic Konrad
2015-03-30 6:52 ` Mark Burton
2015-03-30 21:46 ` Peter Maydell
2015-03-31 6:41 ` Mark Burton
2015-04-10 16:03 ` Frederic Konrad
2015-04-22 12:26 ` Frederic Konrad
2015-04-22 13:18 ` Peter Maydell
2015-04-23 7:38 ` Frederic Konrad
2015-04-23 15:44 ` Alex Bennée
2015-04-23 15:46 ` Alex Bennée
2015-04-27 7:37 ` Frederic Konrad
2015-04-27 17:06 ` Emilio G. Cota
2015-04-28 8:17 ` Frederic Konrad
2015-04-28 9:06 ` Paolo Bonzini
2015-04-28 17:49 ` Emilio G. Cota [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150428174914.GA4586@flamenco \
--to=cota@braap.org \
--cc=agraf@suse.de \
--cc=alex.bennee@linaro.org \
--cc=fred.konrad@greensocs.com \
--cc=jan.kiszka@siemens.com \
--cc=mark.burton@greensocs.com \
--cc=mttcg@greensocs.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).