From: Marc Zyngier <marc.zyngier@arm.com>
To: Jan Kiszka <jan.kiszka@web.de>
Cc: "Alex Bennée" <alex.bennee@linaro.org>,
"Christoffer Dall" <christoffer.dall@linaro.org>,
kvmarm <kvmarm@lists.cs.columbia.edu>, kvm <kvm@vger.kernel.org>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Wei Huang" <wei@redhat.com>
Subject: Re: arm: warning at virt/kvm/arm/vgic.c:1468
Date: Mon, 16 Feb 2015 08:57:50 +0000 [thread overview]
Message-ID: <54E1B10E.8000402@arm.com> (raw)
In-Reply-To: <54E0ED9C.1000208@web.de>
On 15/02/15 19:03, Jan Kiszka wrote:
> On 2015-02-15 19:01, Jan Kiszka wrote:
>> On 2015-02-15 16:30, Marc Zyngier wrote:
>>> On Sun, Feb 15 2015 at 3:07:50 pm GMT, Jan Kiszka
>>> <jan.kiszka@web.de> wrote:
>>>> On 2015-02-15 15:59, Marc Zyngier wrote:
>>>>> On Sun, Feb 15 2015 at 2:40:40 pm GMT, Jan Kiszka
>>>>> <jan.kiszka@web.de> wrote:
>>>>>> On 2015-02-15 14:37, Marc Zyngier wrote:
>>>>>>> On Sun, Feb 15 2015 at 8:53:30 am GMT, Jan Kiszka
>>>>>>> <jan.kiszka@web.de> wrote:
>>>>>>>> I'm now throwing trace_printk at my broken KVM. Already
>>>>>>>> found out that I get ARM_EXCEPTION_IRQ every few 10 µs.
>>>>>>>> Not seeing any irq_* traces, though. Weird.
>>>>>>>
>>>>>>> This very much looks like a screaming interrupt. At such
>>>>>>> a rate, no wonder your VM make much progress. Can you
>>>>>>> find out which interrupt is screaming like this? Looking
>>>>>>> at GICC_HPPIR should help, but you'll have to map the CPU
>>>>>>> interface in HYP before being able to access it there.
>>>>>>
>>>>>> OK... let me figure this out. I had this suspect as well -
>>>>>> the host gets a VM exit for each injected guest IRQ?
>>>>>
>>>>> Not exactly. There is a VM exit for each physical interrupt
>>>>> that fires while the guest is running. Injecting an interrupt
>>>>> also causes a VM exit, as we force the vcpu to reload its
>>>>> context.
>>>>
>>>> Ah, GICC != GICV - you are referring to host-side pending IRQs.
>>>> Any hints on how to get access to that register would
>>>> accelerate the analysis (ARM KVM code is still new to me).
>>>
>>> Map the GICC region in HYP using create_hyp_io_mapping (see
>>> vgic_v2_probe for an example of how we map GICH), and stash the
>>> read of GICC_HPPIR before leaving HYP mode (and before saving the
>>> guest timer).
>
>> Hacked on it until it started to work. The result delivered
>> initially are 0x002 or 0x01e. Then, when the guest gets stuck, I
>> have 0x01b most of the time (a few 0x01e arrive when there is a
>> real host irq). The virtual timer on speed?
>
>> Wait, there is also early printk for ARM, but it was off in my
>> guest! Turning it on confirms we have some problems here:
>
>> Architected timer frequency not available Division by zero in
>> kernel.
>
>> When in emulation mode, I get:
>
>> Architected cp15 timer(s) running at 62.50MHz (virt).
>
>> Digging deeper.
>
> U-Boot didn't initialize CNTFRQ on cores 1..3. Fixing this, the guest
> passes early boot reliably, now hangs much later (RCU stalls are
> detected by the guest).
Right, that explains a lot of things. Can you describe a bit more what
you're seeing now?
thanks,
M.
--
Jazz is not dead. It just smells funny...
next prev parent reply other threads:[~2015-02-16 8:57 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-08 7:48 arm: warning at virt/kvm/arm/vgic.c:1468 Jan Kiszka
2015-02-13 4:46 ` Christoffer Dall
2015-02-13 6:21 ` Jan Kiszka
2015-02-13 6:31 ` Christoffer Dall
2015-02-13 6:28 ` Alex Bennée
2015-02-13 6:53 ` Alex Bennée
2015-02-15 8:53 ` Jan Kiszka
2015-02-15 13:37 ` Marc Zyngier
2015-02-15 14:40 ` Jan Kiszka
2015-02-15 14:59 ` Marc Zyngier
2015-02-15 15:07 ` Jan Kiszka
2015-02-15 15:30 ` Marc Zyngier
2015-02-15 15:35 ` Jan Kiszka
2015-02-15 15:59 ` Christoffer Dall
2015-02-15 16:10 ` Jan Kiszka
2015-02-15 18:01 ` Jan Kiszka
2015-02-15 19:03 ` Jan Kiszka
2015-02-16 8:57 ` Marc Zyngier [this message]
2015-02-16 9:00 ` Jan Kiszka
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=54E1B10E.8000402@arm.com \
--to=marc.zyngier@arm.com \
--cc=alex.bennee@linaro.org \
--cc=christoffer.dall@linaro.org \
--cc=jan.kiszka@web.de \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=pbonzini@redhat.com \
--cc=wei@redhat.com \
/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.