From: Paolo Bonzini <pbonzini@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: mttcg@greensocs.com, QEMU Developers <qemu-devel@nongnu.org>,
Pavel Dovgaluk <Pavel.Dovgaluk@ispras.ru>,
Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] when does a target frontend need to use gen_io_start()/gen_io_end() ?
Date: Wed, 13 May 2015 10:42:18 +0200 [thread overview]
Message-ID: <55530E6A.6060202@redhat.com> (raw)
In-Reply-To: <CAFEAcA-OnNXt9O1AX6ht4k11VhDcgRT96+x38P6rWannp-tzAQ@mail.gmail.com>
On 12/05/2015 21:41, Peter Maydell wrote:
>> > It's any instruction that can cause an icount read, typically through
>> > QEMU_CLOCK_VIRTUAL or cpu_get_ticks().
> Also anything that can cause a CPU interrupt, since tcg_handle_interrupt()
> will call cpu_abort() if the CPU gets an interrupt while it's not
> in a 'can do IO' state.
>
> Anything else?
>
> [How are -icount and multi-threaded TCG going to interact? Do we
> just say "you get one or the other but not both" ?]
For -icount and SMP, yes. I even posted a patch to that end once.
You can get -icount and multi-threaded TCG (which for UP is simply TCG
with execution out of the BQL) together I think. For example you could
handle cpu->icount_decr.u16.low == 0 like cpu->halted, hanging the CPU
thread until QEMU_CLOCK_VIRTUAL timers have been processed. The I/O
thread would have to kick the CPU after processing QEMU_CLOCK_VIRTUAL
timers---not hard to do.
In fact, I suspect cpu->halted should become a kind of bitmap, and "wait
for interrupt" should be just one bit in there. Any operation that
requires synchronization with other VCPUs should use cpu->halted so that
VCPUs can still run foreign code with run_on_vcpu. This was the plan I
outlined to Frederic and Mark for flushing TLB remotely, at least.
Paolo
next prev parent reply other threads:[~2015-05-13 8:42 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-12 15:32 [Qemu-devel] when does a target frontend need to use gen_io_start()/gen_io_end() ? Peter Maydell
2015-05-12 15:43 ` Richard Henderson
2015-05-12 15:54 ` Peter Maydell
2015-05-12 18:17 ` Paolo Bonzini
2015-05-12 19:41 ` Peter Maydell
2015-05-13 8:42 ` Paolo Bonzini [this message]
2015-05-13 9:41 ` Peter Maydell
2015-05-13 10:03 ` Paolo Bonzini
2015-05-13 12:30 ` Frederic Konrad
2015-05-13 6:57 ` Pavel Dovgaluk
[not found] ` <16201.3286528692$1431500273@news.gmane.org>
2015-05-13 8:32 ` Paolo Bonzini
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=55530E6A.6060202@redhat.com \
--to=pbonzini@redhat.com \
--cc=Pavel.Dovgaluk@ispras.ru \
--cc=mttcg@greensocs.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.