From: Christoffer Dall <christoffer.dall@linaro.org>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Marc Zyngier <marc.zyngier@arm.com>,
kvm-devel <kvm@vger.kernel.org>,
"kvmarm@lists.cs.columbia.edu" <kvmarm@lists.cs.columbia.edu>
Subject: Re: [PATCH 4/4] arm/arm64: KVM: use kernel mapping to perform invalidation on page fault
Date: Sun, 11 Jan 2015 13:33:47 +0100 [thread overview]
Message-ID: <20150111123347.GV21092@cbox> (raw)
In-Reply-To: <CAFEAcA-vi7BAqzrR7UeMSDzvXNrOzs2FuO5sTYC2dv6a62=ykw@mail.gmail.com>
On Fri, Jan 09, 2015 at 03:28:58PM +0000, Peter Maydell wrote:
> On 9 January 2015 at 14:16, Marc Zyngier <marc.zyngier@arm.com> wrote:
> > On 09/01/15 13:03, Peter Maydell wrote:
> >> When we reset a cpu by re-calling KVM_ARM_VCPU_INIT, that doesn't
> >> mean we get a new VMID for it, though, does it? I thought that
> >> what causes the icache flush to happen for the reset guest is
> >> that we unmap all of stage 2 and then fault it back in, via
> >> this code. That works for PIPT (we flush the range) and for
> >> VIPT (we do a full icache flush), but at the moment for VIVT
> >> ASID tagged we assume we can do nothing, and I don't think that's
> >> right for this case (though it is right for "faulted because
> >> page was swapped out" and OK for "page was written by DMA").
> >
> > When we reset the guest, we also turn both its Icache off. Before
> > turning it back on, the guest has to invalidate it (the ARM ARM doesn't
> > seem to define the state of the cache out of reset).
>
> But implementations are allowed to hit in the cache even
> when the cache is disabled. In particular, setting the guest
But how can it hit anything when the icache for the used VMID is
guaranteed to be clear (maybe that requires another full icache
invalidate for that VMID for PSCI reset)?
-Christoffer
> SCTLR_EL1.I to 0 means "iside accesses are Normal Noncacheable
> for stage 1 attributes" and (v8 ARM ARM D3.4.6) these can
> be held in the instruction cache. So the guest is required
> to do an icache-invalidate for any instructions that it writes
> *itself* (or DMAs in) even with the icache off. But it cannot
> possibly do so for its own initial startup code, and it must
> be the job of KVM to do that for it. (You can think of this as
> "the VCPU provided by KVM always invalidates the icache on reset
> and does not require an impdef magic cache-init routine as
> described by D3.4.4" if you like.)
>
next prev parent reply other threads:[~2015-01-11 12:33 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-08 11:59 [PATCH 0/4] arm/arm64: KVM: Random selection of MM related fixes Marc Zyngier
2015-01-08 11:59 ` [PATCH 1/4] mm: Correct ordering of *_clear_flush_young_notify Marc Zyngier
2015-01-08 13:12 ` Paolo Bonzini
2015-01-08 19:00 ` Andrea Arcangeli
2015-01-12 10:15 ` Steve Capper
2015-01-08 11:59 ` [PATCH 2/4] arm/arm64: KVM: Use set/way op trapping to track the state of the caches Marc Zyngier
2015-01-09 11:19 ` Christoffer Dall
2015-01-09 11:38 ` Marc Zyngier
2015-01-09 12:12 ` Christoffer Dall
2015-01-08 11:59 ` [PATCH 3/4] arm/arm64: KVM: Flush caches to memory on unmap Marc Zyngier
2015-01-09 12:30 ` Christoffer Dall
2015-01-09 14:35 ` Marc Zyngier
2015-01-11 12:30 ` Christoffer Dall
2015-01-12 11:15 ` Marc Zyngier
2015-01-12 20:13 ` Christoffer Dall
2015-01-13 13:47 ` Christoffer Dall
2015-01-13 13:57 ` Marc Zyngier
2015-01-08 11:59 ` [PATCH 4/4] arm/arm64: KVM: use kernel mapping to perform invalidation on page fault Marc Zyngier
2015-01-08 12:30 ` Peter Maydell
2015-01-08 13:07 ` Marc Zyngier
2015-01-08 13:16 ` Peter Maydell
2015-01-08 15:06 ` Marc Zyngier
2015-01-08 15:21 ` Peter Maydell
2015-01-09 12:50 ` Christoffer Dall
2015-01-09 13:03 ` Peter Maydell
2015-01-09 14:16 ` Marc Zyngier
2015-01-09 15:28 ` Peter Maydell
2015-01-09 17:18 ` Marc Zyngier
2015-01-11 12:33 ` Christoffer Dall [this message]
2015-01-11 17:37 ` Peter Maydell
2015-01-11 17:58 ` Christoffer Dall
2015-01-11 18:27 ` Peter Maydell
2015-01-11 18:38 ` Christoffer Dall
2015-01-12 9:58 ` Marc Zyngier
2015-01-12 20:10 ` Christoffer Dall
2015-01-13 11:38 ` Marc Zyngier
2015-01-13 12:04 ` Christoffer Dall
2015-01-13 12:12 ` Peter Maydell
2015-01-13 13:35 ` Christoffer Dall
2015-01-13 13:41 ` Peter Maydell
2015-01-13 13:49 ` Christoffer Dall
2015-01-15 12:00 ` Mark Rutland
2015-01-15 13:00 ` Christoffer Dall
2015-01-15 15:47 ` Mark Rutland
2015-01-09 12:51 ` 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=20150111123347.GV21092@cbox \
--to=christoffer.dall@linaro.org \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=marc.zyngier@arm.com \
--cc=peter.maydell@linaro.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).