Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755385AbcLOF6y (ORCPT ); Thu, 15 Dec 2016 00:58:54 -0500 Received: from ozlabs.org ([103.22.144.67]:58395 "EHLO ozlabs.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755201AbcLOF6v (ORCPT ); Thu, 15 Dec 2016 00:58:51 -0500 From: David Gibson To: paulus@samba.org Cc: michael@ellerman.id.au, benh@kernel.crashing.org, sjitindarsingh@gmail.com, thuth@redhat.com, lvivier@redhat.com, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, David Gibson Subject: [PATCH 00/11] KVM implementation of PAPR HPT resizing extension Date: Thu, 15 Dec 2016 16:53:53 +1100 Message-Id: <20161215055404.29351-1-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2298 Lines: 49 Here is the KVM implementation for the proposed PAPR extension which allows the runtime resizing of a PAPR guest's Hashed Page Table (HPT). Using this requires a guest kernel with support for the extension. Patches for guest side support in Linux were posted earlier: https://lists.ozlabs.org/pipermail/linuxppc-dev/2016-December/152164.html It also requires userspace (i.e. qemu) to intercept the HPT resizing hypercalls and invoke the KVM ioctl()s to implement them. This is done instead of having KVM direclty intercept the hypercalls, so that userspace can, if useful, impose additional restrictions on resizes: for example it could refuse them entirely if policy for the VM precludes resizing, or it could limit the size of HPT the guest can request to meet resource limits. Patches to implement the userspace part of HPT resizing are proposed for qemu-2.9, and can be found at: https://github.com/dgibson/qemu/tree/upstream/hpt-resize I'm posting these now, in the hopes that both these and the corresponding guest side patches can be staged and merged for the 4.11 window. David Gibson (11): powerpc/kvm: Reserve capabilities and ioctls for HPT resizing powerpc/kvm: Rename kvm_alloc_hpt() for clarity powerpc/kvm: Gather HPT related variables into sub-structure powerpc/kvm: Don't store values derivable from HPT order powerpc/kvm: Split HPT allocation from activation powerpc/kvm: Allow KVM_PPC_ALLOCATE_HTAB ioctl() to change HPT size powerpc/kvm: Create kvmppc_unmap_hpte_helper() powerpc/kvm: KVM-HV HPT resizing stub implementation powerpc/kvm: Outline of KVM-HV HPT resizing implementation powerpc/kvm: KVM-HV HPT resizing implementation powerpc/kvm: Advertise availablity of HPT resizing on KVM HV arch/powerpc/include/asm/kvm_book3s_64.h | 15 + arch/powerpc/include/asm/kvm_host.h | 17 +- arch/powerpc/include/asm/kvm_ppc.h | 15 +- arch/powerpc/kvm/book3s_64_mmu_hv.c | 629 +++++++++++++++++++++++++------ arch/powerpc/kvm/book3s_hv.c | 50 ++- arch/powerpc/kvm/book3s_hv_builtin.c | 8 +- arch/powerpc/kvm/book3s_hv_rm_mmu.c | 62 +-- arch/powerpc/kvm/powerpc.c | 6 + include/uapi/linux/kvm.h | 10 + 9 files changed, 637 insertions(+), 175 deletions(-) -- 2.9.3