From: "Alex Bennée" <alex.bennee@linaro.org>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: "Cédric Le Goater" <clg@kaod.org>,
"Nikunj A Dadhania" <nikunj@linux.vnet.ibm.com>,
qemu-ppc@nongnu.org, david@gibson.dropbear.id.au,
rth@twiddle.net, programmingkidx@gmail.com,
qemu-devel@nongnu.org, bharata@linux.vnet.ibm.com
Subject: Re: [Qemu-devel] [Qemu-ppc] [PATCH RFC v1 0/3] Enable MTTCG on PPC64
Date: Tue, 11 Apr 2017 15:04:15 +0100 [thread overview]
Message-ID: <87h91vjb1c.fsf@linaro.org> (raw)
In-Reply-To: <1491917167.7236.1.camel@kernel.crashing.org>
Benjamin Herrenschmidt <benh@kernel.crashing.org> writes:
> On Tue, 2017-04-11 at 14:28 +0200, Cédric Le Goater wrote:
>> I really don't know.
>>
>> Ben, now that we have mttcg activated by default on ppc, it takes
>> a while for the linux kernel to do the early setup. I think we are
>> in the code section where we spin loop the secondaries. Most of the
>> time is spent in skiboot under cpu_idle/relax.
>>
>> Any idea where that could come from ?
>>
>> > See c22edfebff29f63d793032e4fbd42a035bb73e27 for an example.
>>
>> Thanks for the hint.
>
> They are spinning, but they have smt_low instructions in the loop,
> maybe that causes us to do some kind of synchronization as we exit
> the emulation loop on these ? I added that to force relinguish time
> to other threads on the pre-MT TCG...
Yeah you need a tweak the approach when running with MTTCG as otherwise
you end up causing exits for one vCPUs loop to yield to vCPUs that are
already running in other threads.
> There isn't really such a "pause" instruction. At least not yet.... P9
> has a wait that is meant to wait for special AS_Notify cycles but will
> also wait for interrupts. We don't have an mwait at this point.
They are worth implementing. FWIW on ARM we only really handle WFI
(Wait-for-interrupt) which will cause the EXCP_HALT and that will put
the vCPU into a halted state which can be woken up next interrupt.
For the other cases YIELD and WFE (wait-for-event) we just treat them as
NOPs when MTTCG is enabled (test parallel_cpus). So they will busy-wait
spin around the guests wfe code but don't trigger expensive longjmps out
of the execution loop. This was all done in:
c22edfebff target-arm: don't generate WFE/YIELD calls for MTTCG
One other thing I noticed while looking through the PPC stuff is I
couldn't see any handling of cpu_reset/powering on. There is a potential
race here which ThreadSanitizer will complain about if you start loading
up your about-to-be-powered-on-vCPU from another thread. The fix here is
to defer the setup with async work. See:
062ba099e0 target-arm/powerctl: defer cpu reset work to CPU context
--
Alex Bennée
prev parent reply other threads:[~2017-04-11 14:04 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-06 10:22 [Qemu-devel] [PATCH RFC v1 0/3] Enable MTTCG on PPC64 Nikunj A Dadhania
2017-04-06 10:22 ` [Qemu-devel] [PATCH RFC v1 1/3] target/ppc: Emulate LL/SC using cmpxchg helpers Nikunj A Dadhania
2017-04-06 15:51 ` Richard Henderson
2017-04-07 5:12 ` Nikunj A Dadhania
2017-04-06 15:53 ` Richard Henderson
2017-04-07 5:14 ` Nikunj A Dadhania
2017-04-07 5:23 ` David Gibson
2017-04-07 5:42 ` Nikunj A Dadhania
2017-04-06 10:22 ` [Qemu-devel] [PATCH RFC v1 2/3] cputlb: handle first atomic write to the page Nikunj A Dadhania
2017-04-06 15:54 ` Richard Henderson
2017-04-06 10:22 ` [Qemu-devel] [PATCH RFC v1 3/3] target/ppc: Generate fence operations Nikunj A Dadhania
2017-04-06 16:15 ` Richard Henderson
2017-04-07 5:21 ` Nikunj A Dadhania
2017-04-07 18:19 ` Richard Henderson
2017-04-06 13:26 ` [Qemu-devel] [Qemu-ppc] [PATCH RFC v1 0/3] Enable MTTCG on PPC64 Cédric Le Goater
2017-04-06 13:28 ` G 3
2017-04-06 13:32 ` Cédric Le Goater
2017-04-06 13:47 ` G 3
2017-04-06 17:08 ` luigi burdo
2017-04-06 18:06 ` G 3
2017-04-07 5:24 ` Nikunj A Dadhania
2017-04-07 6:07 ` Cédric Le Goater
2017-04-10 16:41 ` Cédric Le Goater
2017-04-10 16:44 ` Nikunj A Dadhania
2017-04-10 16:59 ` Cédric Le Goater
2017-04-10 17:07 ` Nikunj A Dadhania
2017-04-10 17:20 ` Alex Bennée
2017-04-11 12:28 ` Cédric Le Goater
2017-04-11 13:26 ` Benjamin Herrenschmidt
2017-04-11 14:04 ` Alex Bennée [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=87h91vjb1c.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=benh@kernel.crashing.org \
--cc=bharata@linux.vnet.ibm.com \
--cc=clg@kaod.org \
--cc=david@gibson.dropbear.id.au \
--cc=nikunj@linux.vnet.ibm.com \
--cc=programmingkidx@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@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.