From: Alex Zuepke <alexander.zuepke@hs-rm.de>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] QEMU ARM SMP: IPI delivery delayed until next main loop event // how to improve IPI latency?
Date: Mon, 15 Jun 2015 22:03:24 +0200 [thread overview]
Message-ID: <557F2F8C.8090708@hs-rm.de> (raw)
In-Reply-To: <CAFEAcA_RXFYeaFTVwauNxRzGZV1gp6h-P8OEj4dhF6vawrwGSA@mail.gmail.com>
Am 15.06.2015 um 20:58 schrieb Peter Maydell:
> On 15 June 2015 at 16:05, Alex Züpke <alexander.zuepke@hs-rm.de> wrote:
>> Am 15.06.2015 um 16:51 schrieb Peter Maydell:
>>> On 15 June 2015 at 15:44, Alex Züpke <alexander.zuepke@hs-rm.de> wrote:
>>>> Am 12.06.2015 um 20:03 schrieb Peter Maydell:
>>>>> Probably the best approach would be to have something in
>>>>> arm_cpu_set_irq() which says "if we are CPU X and we've
>>>>> just caused an interrupt to be set for CPU Y, then we
>>>>> should ourselves yield back to the main loop".
>>>>>
>>>>> Something like this, maybe, though I have done no more testing
>>>>> than checking it doesn't actively break kernel booting :-)
>>>>
>>>>
>>>> Thanks! One more check for "level" is needed to get it work:
>>>
>>> What happens without that? It's reasonable to have it,
>>> but extra cpu_exit()s shouldn't cause a problem beyond
>>> being a bit inefficient...
>>
>> The emulation get's stuck, for whatever reason I don't understand.
>
> I'm beginning to suspect that your guest code has a race
> condition in it, such that if the other CPU runs at a
> point you weren't expecting it to then you end up
> deadlocking or otherwise running into a bug in your guest.
>
> In particular, I see the emulation getting stuck even without
> this patch to arm_cpu_set_irq().
>
> -- PMM
Yes, it's a bug, sorry for that. I removed too much code to get a simple
testcase. It's stuck in the first spinlock where CPU#1 is waiting for
CPU#0 to initialize the rest of the system, and I need to WFE or YIELD
here as well.
But this is showing the original problem again: the emulation get's
stuck spinning on CPU #1 forever, because the main loop doesn't switch
to CPU #0 voluntarily. Just press a key on the console/emulated serial
line to trigger an event to QEMU's main loop, and the testcase should
continue.
Best regards
Alex
next prev parent reply other threads:[~2015-06-15 20:03 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-12 16:38 [Qemu-devel] QEMU ARM SMP: IPI delivery delayed until next main loop event // how to improve IPI latency? Alex Züpke
2015-06-12 18:03 ` Peter Maydell
2015-06-15 14:44 ` Alex Züpke
2015-06-15 14:51 ` Peter Maydell
2015-06-15 15:05 ` Alex Züpke
2015-06-15 18:41 ` Peter Maydell
2015-06-15 18:58 ` Peter Maydell
2015-06-15 20:03 ` Alex Zuepke [this message]
2015-06-16 10:33 ` Peter Maydell
2015-06-16 10:59 ` Peter Maydell
2015-06-16 11:11 ` Alex Züpke
2015-06-16 11:53 ` Peter Maydell
2015-06-16 12:21 ` Alex Züpke
2015-06-19 15:53 ` Peter Maydell
2015-06-23 7:31 ` Frederic Konrad
2015-06-23 8:09 ` Peter Maydell
2015-06-23 8:33 ` Frederic Konrad
2015-06-23 18:15 ` Peter Maydell
2015-06-25 17:13 ` Peter Maydell
2015-06-15 15:04 ` Peter Maydell
2015-06-15 15:07 ` Alex Züpke
2015-06-15 15:18 ` Peter Maydell
2015-06-15 15:36 ` Alex Züpke
2015-06-15 15:49 ` Peter Maydell
2015-06-15 16:12 ` Alex Züpke
2015-06-15 21:39 ` Peter Crosthwaite
2015-06-19 16:57 ` Paolo Bonzini
2015-06-19 17:25 ` Peter Maydell
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=557F2F8C.8090708@hs-rm.de \
--to=alexander.zuepke@hs-rm.de \
--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 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.