Thread (55 messages) 55 messages, 10 authors, 2015-03-09
STALE4150d

[RFC/RFT PATCH 0/3] arm64: KVM: work around incoherency with uncached guest mappings

From: Andrew Jones <hidden>
Date: 2015-03-04 14:12:12
Also in: kvm, kvmarm

On Wed, Mar 04, 2015 at 01:43:02PM +0100, Ard Biesheuvel wrote:
On 4 March 2015 at 13:29, Catalin Marinas [off-list ref] wrote:
quoted
On Wed, Mar 04, 2015 at 12:50:57PM +0100, Ard Biesheuvel wrote:
quoted
On 4 March 2015 at 12:35, Catalin Marinas [off-list ref] wrote:
quoted
On Mon, Mar 02, 2015 at 06:20:19PM -0800, Mario Smarduch wrote:
quoted
On 03/02/2015 08:31 AM, Christoffer Dall wrote:
quoted
However, my concern with these patches are on two points:

1. It's not a fix-all.  We still have the case where the guest expects
the behavior of device memory (for strong ordering for example) on a RAM
region, which we now break.  Similiarly this doesn't support the
non-coherent DMA to RAM region case.

2. While the code is probably as nice as this kind of stuff gets, it
is non-trivial and extremely difficult to debug.  The counter-point here
is that we may end up handling other stuff at EL2 for performanc reasons
in the future.

Mainly because of point 1 above, I am leaning to thinking userspace
should do the invalidation when it knows it needs to, either through KVM
via a memslot flag or through some other syscall mechanism.
I expressed my concerns as well, I'm definitely against merging this
series.
Don't worry, that was never the intention, at least not as-is :-)
I wasn't worried, just wanted to make my position clearer ;).
quoted
I think we have established that the performance hit is not the
problem but the correctness is.
I haven't looked at the performance figures but has anyone assessed the
hit caused by doing cache maintenance in Qemu vs cacheable guest
accesses (and no maintenance)?
I'm working on a PoC of a QEMU/KVM cache maintenance approach now.
Hopefully I'll send it out this evening. Tomorrow at the latest.
Getting numbers of that approach vs. a guest's use of cached memory
for devices would take a decent amount of additional work, so won't
be part of that post. I'm actually not sure we should care about
the numbers for a guest using normal mem attributes for device
memory - other than out of curiosity. For correctness this issue
really needs to be solved 100% host-side. We can't rely on a
guest to do different/weird things, just because it's a guest.
Ideally guests don't even know that they're guests. (Even if we
describe the memory as cache-able to the guest, I don't think we
can rely on the guest believing us.)

drew
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help