From: Joel Schopp <joel.schopp@amd.com>
To: Will Deacon <will.deacon@arm.com>
Cc: Peter Maydell <peter.maydell@linaro.org>,
Paolo Bonzini <pbonzini@redhat.com>,
"gleb@kernel.org" <gleb@kernel.org>,
"kvmarm@lists.cs.columbia.edu" <kvmarm@lists.cs.columbia.edu>,
kvm-devel <kvm@vger.kernel.org>,
Christoffer Dall <christoffer.dall@linaro.org>,
"Marc Zyngier" <Marc.Zyngier@arm.com>,
Don Dutile <ddutile@redhat.com>,
"stable@vger.kernel.org" <stable@vger.kernel.org>
Subject: Re: [PATCH] kvm: arm64: vgic: fix hyp panic with 64k pages on juno platform
Date: Fri, 25 Jul 2014 09:59:04 -0500 [thread overview]
Message-ID: <53D270B8.9050807@amd.com> (raw)
In-Reply-To: <20140725142351.GK5269@arm.com>
On 07/25/2014 09:23 AM, Will Deacon wrote:
> On Fri, Jul 25, 2014 at 03:16:15PM +0100, Joel Schopp wrote:
>> On 07/25/2014 09:08 AM, Will Deacon wrote:
>>>> This would break with my SOC device tree which looks like this. Note
>>>> this device tree works just fine without checks.
>>>>
>>>> gic: interrupt-controller@e1101000 {
>>>> compatible = "arm,gic-400-v2m";
>>>> #interrupt-cells = <3>;
>>>> #address-cells = <0>;
>>>> interrupt-controller;
>>>> msi-controller;
>>>> reg = <0x0 0xe1110000 0 0x1000>, /* gic dist */
>>>> <0x0 0xe112f000 0 0x2000>, /* gic cpu */
>>>> <0x0 0xe114f000 0 0x2000>, /* gic virtual ic*/
>>>> <0x0 0xe116f000 0 0x2000>, /* gic virtual cpu*/
>>>> <0x0 0xe1180000 0 0x1000>; /* gic msi */
>>>> interrupts = <1 8 0xf04>;
>>>> };
>>> I appreciate it may work, but that's only because the kernel is actually
>>> using an alias of GICV at 0xe1160000 by accident. I would say that you're
>>> getting away with passing an incorrect description.
>> The problem is that by the spec the size is 0x2000 and was never
>> properly rearchitected from 4K to variable page size support. The
>> workaround is that each of the 4K in the 64K page (16 of them) are
>> really mapped to the same location in hardware. So the contents of
>> 0xe1160000 is the same as the contents of 0xe116f000. See “Appendix F:
>> GIC-400 and 64KB Translation Granule” in v2.1 of the ARM _Server Base
>> System Architecture_ specification.
> I've read that document, but it's not mandated and I don't think I have a
> single piece of hardware that actually follows it. Even the CPUs don't seem
> to perform the aliasing suggesting there (take a look at the A57 and A53
> TRMs -- there are reserved regions in there).
Not mandated, but it is obviously highly encouraged, and at a minimum
valid. The SOC sitting under my desk follows it.
>
>> Now if we were to change the entry to <0x0 0xe1160000 0 0x2000> it would
>> be obviously broken because the second half would map to a duplicate of
>> the first half.
> I think you'd need something like <0x0 0xe1160000 0 0x20000> and we'd have
> to change the GIC driver to do the right thing. What we currently have is
> unsafe on most hardware, yet happens to work on your system.
If you change the GIC driver,kvm, kvmtool, and qemu to do the right
thing I'd be happy to change the device tree entry to <0x0 0xe1160000 0
0x20000> or any other value of your choosing. I really have no opinion
here on how it should be done other than what is there now currently
works and I'd like to have whatever we do in the future continue to work.
next prev parent reply other threads:[~2014-07-25 15:01 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-24 19:27 [PATCH] kvm: arm64: vgic: fix hyp panic with 64k pages on juno platform Will Deacon
2014-07-24 19:47 ` Peter Maydell
2014-07-24 19:55 ` Will Deacon
2014-07-24 20:01 ` Joel Schopp
2014-07-24 20:05 ` Peter Maydell
2014-07-25 9:31 ` Will Deacon
2014-07-25 10:06 ` Peter Maydell
2014-07-25 14:02 ` Joel Schopp
2014-07-25 14:08 ` Will Deacon
2014-07-25 14:16 ` Joel Schopp
2014-07-25 14:23 ` Will Deacon
2014-07-25 14:59 ` Joel Schopp [this message]
2014-07-25 14:08 ` Peter Maydell
2014-07-24 19:59 ` Joel Schopp
-- strict thread matches above, loose matches on Subject: below --
2014-07-30 12:55 [GIT PULL] KVM/ARM Urgent fix for 3.16 Christoffer Dall
2014-07-30 12:55 ` [PATCH] kvm: arm64: vgic: fix hyp panic with 64k pages on juno platform Christoffer Dall
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=53D270B8.9050807@amd.com \
--to=joel.schopp@amd.com \
--cc=Marc.Zyngier@arm.com \
--cc=christoffer.dall@linaro.org \
--cc=ddutile@redhat.com \
--cc=gleb@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=stable@vger.kernel.org \
--cc=will.deacon@arm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox