From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Jones Subject: Re: [PATCH v3 0/3] arm/arm64: KVM: Random selection of cache related fixes Date: Mon, 26 Jan 2015 18:09:45 +0100 Message-ID: <20150126170945.GC3536@hawk.usersys.redhat.com> References: <1421865588-19761-1-git-send-email-marc.zyngier@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Christoffer Dall , kvm@vger.kernel.org, kvmarm@lists.cs.columbia.edu To: Marc Zyngier Return-path: Received: from mx1.redhat.com ([209.132.183.28]:48243 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754131AbbAZRJ5 (ORCPT ); Mon, 26 Jan 2015 12:09:57 -0500 Content-Disposition: inline In-Reply-To: <1421865588-19761-1-git-send-email-marc.zyngier@arm.com> Sender: kvm-owner@vger.kernel.org List-ID: On Wed, Jan 21, 2015 at 06:39:45PM +0000, Marc Zyngier wrote: > 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 > > _______________________________________________ > kvmarm mailing list > kvmarm@lists.cs.columbia.edu > https://lists.cs.columbia.edu/mailman/listinfo/kvmarm Hi Marc, checkpatch found some whitespace issues (not just the false alarms that trace.h files generate). Also a loosing vs. losing typo in 2/3's commit message. Thanks, Drew (trivial comments) Jones