From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pavel Fedin Subject: [PATCH v5 0/7] KVM: arm64: Implement API for vGICv3 live migration Date: Mon, 12 Oct 2015 11:29:32 +0300 Message-ID: Cc: Christoffer Dall , Marc Zyngier , Andre Przywara To: kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org Return-path: Received: from mailout2.w1.samsung.com ([210.118.77.12]:49751 "EHLO mailout2.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751330AbbJLI3v (ORCPT ); Mon, 12 Oct 2015 04:29:51 -0400 Received: from eucpsbgm1.samsung.com (unknown [203.254.199.244]) by mailout2.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0NW3009WLM9OQA30@mailout2.w1.samsung.com> for kvm@vger.kernel.org; Mon, 12 Oct 2015 09:29:48 +0100 (BST) Sender: kvm-owner@vger.kernel.org List-ID: This patchset adds necessary userspace API in order to support vGICv3 live migration. GICv3 registers are accessed using device attribute ioctls, similar to GICv2. Whoever wants to test it, please note that this version is not binary-compatible with previous one, the API has been seriously changed. qemu patchess will be posted in some time. v4 => v5: - Adapted to new API by Peter Maydell, Marc Zyngier and Christoffer Dall. Acked-by's on the documentation were dropped, just in case, because i slightly adjusted it. Additionally, i merged all doc updates into one patch. v3 => v4: - Split pure refactoring from anything else - Documentation brought up to date - Cleaned up 'mmio' structure usage in vgic_attr_regs_access(), use call_range_handler() for 64-bit access handling - Rebased on new linux-next v2 => v3: - KVM_DEV_ARM_VGIC_CPUID_MASK enlarged to 20 bits, allowing more than 256 CPUs. - Bug fix: Correctly set mmio->private, necessary for redistributor access. - Added accessors for ICC_AP0R and ICC_AP1R registers - Rebased on new linux-next v1 => v2: - Do not use generic register get/set API for CPU interface, use only device attributes. - Introduce size specifier for distributor and redistributor register accesses, do not assume size any more. - Lots of refactor and reusable code extraction. - Added forgotten documentation Christoffer Dall (1): KVM: arm/arm64: Update API documentation Pavel Fedin (6): KVM: arm/arm64: Move endianess conversion out of vgic_attr_regs_access() KVM: arm/arm64: Refactor vGIC attributes handling code KVM: arm64: Implement vGICv3 distributor and redistributor access from userspace KVM: arm64: Refactor system register handlers KVM: arm64: Introduce find_reg_by_id() KVM: arm64: Implement vGICv3 CPU interface access Documentation/virtual/kvm/devices/arm-vgic-v3.txt | 117 ++++++++ Documentation/virtual/kvm/devices/arm-vgic.txt | 41 +-- arch/arm64/include/uapi/asm/kvm.h | 17 +- arch/arm64/kvm/sys_regs.c | 83 +++--- arch/arm64/kvm/sys_regs.h | 8 +- arch/arm64/kvm/sys_regs_generic_v8.c | 2 +- include/linux/irqchip/arm-gic-v3.h | 19 +- virt/kvm/arm/vgic-v2-emul.c | 124 ++------ virt/kvm/arm/vgic-v3-emul.c | 343 +++++++++++++++++++++- virt/kvm/arm/vgic.c | 57 ++++ virt/kvm/arm/vgic.h | 3 + 11 files changed, 630 insertions(+), 184 deletions(-) create mode 100644 Documentation/virtual/kvm/devices/arm-vgic-v3.txt -- 2.4.4