From: andre.przywara@linaro.org (Andre Przywara)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: KVM: iterate over all CPUs for CPU compatibility check
Date: Mon, 22 Apr 2013 16:35:42 +0200 [thread overview]
Message-ID: <51754ABE.7030802@linaro.org> (raw)
In-Reply-To: <0d25b7378e6e13be4e3c599c4325f2b4@localhost>
On 04/22/2013 01:14 PM, Marc Zyngier wrote:
> On Mon, 22 Apr 2013 12:02:59 +0100, Marc Zyngier <marc.zyngier@arm.com>
> wrote:
>> On 22/04/13 11:36, Andre Przywara wrote:
>>> On 04/19/2013 06:13 PM, Christoffer Dall wrote:
>>>> On Fri, Apr 19, 2013 at 5:58 AM, Andre Przywara
>>>> <andre.przywara@linaro.org> wrote:
>>>>> On 04/17/2013 11:12 AM, Christoffer Dall wrote:
>>>>>>
>>>>>> ...
>>>>>>
>>>>>> You could also try installing a vector handler early and detect
>>>>>> faults,
>>>>>> and add an alternative return path from the init function with some
>>>>>> error reporting value in r0 or something like that, just for
>>>>>> debugging,
>>>>>> naturally, but that could be a way to detect if we really are taking
>>>>>> recursive faults here.
>>>>>
>>>>>
>>>>> OK, I added code to return earlier on CPUs not from cluster 0.
>>>>> Indeed it hangs in the HSCR write. The two A15s pass this
> instruction,
>>>>> writing 0x30c5187F into the register.
>>>>> This means all the fixed bits for A15 correctly, C,A,M and I set and
>>>>> WXN,
>>>>> EE, TE cleared. FI was also cleared
>>>>> The A7 wanted to write the very same value. I tried to set bit 21,
>>>>> which
>>>>> kind of the A7 TRM hints to do: but no change.
>>>>> Before the HSCLTR write, the register reads 0x30c50878, with SCTLR
>>>>> being
>>>>> 0x30c5387d.
>>>>> So the code wants to set M, A, C and I in HSCLTR. Interestingly SCTLR
>>>>> has
>>>>> the V bits set, could that be an issue?
>>>>>
>>>> Can you try writing 0x30c50879 into the register instead? Basically
>>>> check to see if enabling caches or alignment checks causes the issue,
>>>> or if it is indeed enabling the MMU that's the issue... If that works,
>>>> start a bisect on the remaining bits. Also, just for fun, could you
>>>> try flushing the entire I-cache before writing into the HSCLTR?
>>>
>>> OK, both clearing the I-bit and doing an "isb; ICIALLU" before the
> "isb;
>>> write HSCLTR; isb" worked, the kernel boots on and KVM is enabled.
>>>
Arrgh! While cleaning up the code I saw that I had left a debug exit
point early in init.S, so the HSCTLR write was not executed. Fixing this
I can now say that cleaning the I-cache and even disabling it does not
help. Sorry for the premature hooray!
In fact the only thing that makes the kernel boot is cleaning the M bit
(disabling the MMU), which is a debug hint, but by no means a useful
workaround :-(
So the problem still persists.
>>> I could easily make a patch, but I am not sure how to proceed from
> here:
>>>
>>> 1.) At least I don't have an understanding why this is only a problem
> on
>>> A7 and not on A15. I would feel better if we have an explanation for
>>> this. Mark, Will, Peter: any ideas?
>>
>> Blink!
>>
>> Can you check your board.txt config file? It should have a line that
>> starts with "SCC: 0x400 ..."
>>
>> If not, can you add a line that reads:
>> SCC: 0x400 0x00000000
>
> Actually you, may want to try:
> SCC: 0x400 0x3330c00
>
> instead, as Peter pointed out that some bits are flagged as reserved in
> the TRM...
I tried to play with SCC 0x400 for two boots, but it didn't change
anything. Didn't do the full scale of possible HSCLTR bits with and
without this, though. Does that make sense to do this, or was SCC 0x400
only for cache problems?
Regards,
Andre.
next prev parent reply other threads:[~2013-04-22 14:35 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-12 13:04 [PATCH] ARM: KVM: iterate over all CPUs for CPU compatibility check Andre Przywara
2013-04-12 13:24 ` Marc Zyngier
2013-04-12 13:40 ` Peter Maydell
2013-04-12 13:49 ` Marc Zyngier
2013-04-17 10:19 ` Russell King - ARM Linux
2013-04-17 10:35 ` Marc Zyngier
2013-04-17 11:07 ` Christoffer Dall
2013-04-17 11:30 ` Marc Zyngier
2013-04-17 11:38 ` Peter Maydell
2013-04-17 11:42 ` Alexander Graf
2013-04-17 11:45 ` Christoffer Dall
2013-04-17 12:24 ` Marc Zyngier
2013-04-17 12:25 ` Peter Maydell
2013-04-17 12:28 ` Marc Zyngier
2013-04-17 12:38 ` Peter Maydell
2013-04-17 13:00 ` Marc Zyngier
2013-04-17 19:28 ` Christoffer Dall
2013-04-17 11:38 ` Christoffer Dall
2013-04-12 13:58 ` Andre Przywara
2013-04-12 14:14 ` Marc Zyngier
2013-04-15 4:57 ` Christoffer Dall
2013-04-15 7:50 ` Marc Zyngier
2013-04-15 8:28 ` Christoffer Dall
2013-04-15 8:43 ` Marc Zyngier
2013-04-15 8:54 ` Christoffer Dall
2013-04-15 9:14 ` Peter Maydell
2013-04-15 9:39 ` Andre Przywara
2013-04-15 9:45 ` Peter Maydell
[not found] ` <CAJRNFKJoBzgt4UhxsH65_LyhcGXPnzB_pg3q-zeYT2OVv59q4A@mail.gmail.com>
2013-04-15 13:13 ` Andre Przywara
2013-04-15 13:48 ` Will Deacon
2013-04-15 14:26 ` Andre Przywara
2013-04-15 14:39 ` Peter Maydell
2013-04-15 14:53 ` Alexander Spyridakis
2013-04-16 16:26 ` Christoffer Dall
2013-04-16 16:33 ` Marc Zyngier
2013-04-17 8:08 ` Andre Przywara
2013-04-17 8:16 ` Marc Zyngier
[not found] ` <CAEDV+g+3nkdvbLdj0m-ZdDKt0JY2vgzhP2AQA2nf=R3h4yTQmQ@mail.gmail.com>
2013-04-19 12:58 ` Andre Przywara
2013-04-19 16:13 ` Christoffer Dall
2013-04-22 10:36 ` Andre Przywara
2013-04-22 11:02 ` Marc Zyngier
2013-04-22 11:14 ` Marc Zyngier
2013-04-22 14:35 ` Andre Przywara [this message]
2013-04-16 15:59 ` Christoffer Dall
2013-04-16 16:03 ` Christoffer Dall
2013-04-16 18:37 ` Alexander Spyridakis
2013-04-16 18:43 ` Alexander Spyridakis
2013-04-16 23:13 ` Christoffer Dall
2013-04-16 0:26 ` Geoff Levand
2013-04-16 16:24 ` Christoffer Dall
2013-04-16 16:40 ` Marc Zyngier
2013-04-17 8:01 ` Andre Przywara
-- strict thread matches above, loose matches on Subject: below --
2013-04-17 10:52 Andre Przywara
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=51754ABE.7030802@linaro.org \
--to=andre.przywara@linaro.org \
--cc=linux-arm-kernel@lists.infradead.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).