From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marc Zyngier Subject: [PATCH v3 0/3] arm/arm64: KVM: Random selection of cache related fixes Date: Wed, 21 Jan 2015 18:39:45 +0000 Message-ID: <1421865588-19761-1-git-send-email-marc.zyngier@arm.com> Cc: Peter Maydell , Steve Capper To: Christoffer Dall , kvm@vger.kernel.org, kvmarm@lists.cs.columbia.edu Return-path: Received: from foss-mx-na.foss.arm.com ([217.140.108.86]:40409 "EHLO foss-mx-na.foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752339AbbAUSj4 (ORCPT ); Wed, 21 Jan 2015 13:39:56 -0500 Sender: kvm-owner@vger.kernel.org List-ID: This small series fixes a number of issues that Christoffer and I have been trying to nail down for a while, having to do with the host dying under load (swapping), and also with the way we deal with caches in general (and with set/way operation in particular): - The first one changes the way we handle cache ops by set/way, basically turning them into VA ops for the whole memory. This allows platforms with system caches to boot a 32bit zImage, for example. - The second one fixes a corner case that could happen if the guest used an uncached mapping (or had its caches off) while the host was swapping it out (and using a cache-coherent IO subsystem). - Finally, the last one fixes this stability issue when the host was swapping, by using a kernel mapping for cache maintenance instead of the userspace one. With these patches (and both the TLB invalidation and HCR fixes that are on their way to mainline), the APM platform seems much more robust than it previously was. Fingers crossed. The first round of review has generated a lot of traffic about ASID-tagged icache management for guests, but I've decided not to address this issue as part of this series. The code is broken already, and there isn't any virtualization capable, ASID-tagged icache core in the wild, AFAIK. I'll try to revisit this in another series, once I have wrapped my head around it (or someone beats me to it). Based on 3.19-rc5, tested on Juno, X-Gene, TC-2 and Cubietruck. Also at git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git kvm-arm64/mm-fixes-3.19 * From v2: [2] - Reworked the algorithm that tracks the state of the guest's caches, as there is some cases I didn't anticipate. In the end, the algorithm is simpler. * From v1: [1] - Dropped Steve's patch after discussion with Andrea - Refactor set/way support to avoid code duplication, better comments - Much improved comments in patch #2, courtesy of Christoffer [1]: http://www.spinics.net/lists/kvm-arm/msg13008.html [2]: http://www.spinics.net/lists/kvm-arm/msg13161.html Marc Zyngier (3): arm/arm64: KVM: Use set/way op trapping to track the state of the caches arm/arm64: KVM: Invalidate data cache on unmap arm/arm64: KVM: Use kernel mapping to perform invalidation on page fault arch/arm/include/asm/kvm_emulate.h | 10 +++ arch/arm/include/asm/kvm_host.h | 3 - arch/arm/include/asm/kvm_mmu.h | 77 +++++++++++++--- arch/arm/kvm/arm.c | 10 --- arch/arm/kvm/coproc.c | 64 +++----------- arch/arm/kvm/coproc_a15.c | 2 +- arch/arm/kvm/coproc_a7.c | 2 +- arch/arm/kvm/mmu.c | 164 ++++++++++++++++++++++++++++++----- arch/arm/kvm/trace.h | 39 +++++++++ arch/arm64/include/asm/kvm_emulate.h | 10 +++ arch/arm64/include/asm/kvm_host.h | 3 - arch/arm64/include/asm/kvm_mmu.h | 34 ++++++-- arch/arm64/kvm/sys_regs.c | 75 +++------------- 13 files changed, 321 insertions(+), 172 deletions(-) -- 2.1.4