From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935536AbeD0OSZ (ORCPT ); Fri, 27 Apr 2018 10:18:25 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:59338 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S935339AbeD0OSX (ORCPT ); Fri, 27 Apr 2018 10:18:23 -0400 Subject: Re: [PATCH v4 00/12] KVM: arm/arm64: Allow multiple GICv3 redistributor regions To: eric.auger.pro@gmail.com, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvmarm@lists.cs.columbia.edu, marc.zyngier@arm.com, cdall@kernel.org, peter.maydell@linaro.org References: <1524837993-23396-1-git-send-email-eric.auger@redhat.com> Cc: andre.przywara@arm.com, drjones@redhat.com, wei@redhat.com From: Auger Eric Message-ID: <7a4742d7-cae3-0e90-42a9-42d469ffddb2@redhat.com> Date: Fri, 27 Apr 2018 16:18:19 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <1524837993-23396-1-git-send-email-eric.auger@redhat.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On 04/27/2018 04:06 PM, Eric Auger wrote: > At the moment the KVM VGICv3 only supports a single redistributor > region (whose base address is set through the GICv3 kvm device > KVM_DEV_ARM_VGIC_GRP_ADDR/KVM_VGIC_V3_ADDR_TYPE_REDIST). There, > all the redistributors are laid out contiguously. The size of this > single redistributor region is not set explicitly but instead > induced at a late stage by the number of online vcpus. > > The GIC specification does not mandate all redistributors to be > contiguous. Moreover DT and ACPI were specified so that multiple > redistributors regions can be defined. > > The current interface brings a limitation on QEMU where ARM > virt machine available GPA holes only allowed to assign a > redistributor region fitting a max of 123 vcpus. Overcoming this > limitation would force either to create a new machine or relocate > the single rdist region or allow the allocation of multiple rdist > regions. > > This series enables this last alternative. A new GICv3 KVM device > KVM_DEV_ARM_VGIC_GRP_ADDR/KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION allows > to register individual redistributor regions whose size is defined > explicitly. Those rdist regions then are filled by vcpu rdist frames > according to the need. The vgic init and related base address checks > are impacted. For some unknown reason I got a timeout on the git send-email command, hence this isolated cover letter. The series was fully resent. Sorry for the inconvenience. Thanks Eric > > Best Regards > > Eric > > Git: complete series available at > https://github.com/eauger/linux/tree/v4.17-rc2-rdist-regions-v4 > Previous version: > https://github.com/eauger/linux/tree/v4.16-rdist-regions-v3 > > History: > > v3 -> v4: > - Collected Christoffer's R-b > - reworked vgic_v3_rdist_overlap and introduced vgic_dist_overlap > - vgic_v3_insert_redist_region cleanup > - inverse order for patches 6 and 7 > > v2 -> v3: > - Add details to the user API documentation > - early exit if vgic_v3_rdist_region_from_index() fails > - return -EINVAL if legacy and new redist region API are mixed > > v1 -> v2: > - Rework the uapi. Only bits [51:16] of the redist region are > exposed. Also a new flags field was introduced > - Do not store the last bit in the vgic_cpu struct anymore > - remove dist->spis check in 1st patch > - add last patch to bump VGIC_V3_MAX_CPUS to 512 > - advertise the new attribute > > Eric Auger (12): > KVM: arm/arm64: Set dist->spis to NULL after kfree > KVM: arm/arm64: Document KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION > KVM: arm/arm64: Replace the single rdist region by a list > KVM: arm/arm64: Helper to locate free rdist index > KVM: arm/arm64: Revisit Redistributor TYPER last bit computation > KVM: arm/arm64: Adapt vgic_v3_check_base to multiple rdist regions > KVM: arm/arm64: Helper to register a new redistributor region > KVM: arm/arm64: Check vcpu redist base before registering an iodev > KVM: arm/arm64: Check all vcpu redistributors are set on map_resources > KVM: arm/arm64: Add KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION > KVM: arm/arm64: Implement KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION > KVM: arm/arm64: Bump VGIC_V3_MAX_CPUS to 512 > > Documentation/virtual/kvm/devices/arm-vgic-v3.txt | 25 ++++- > arch/arm/include/uapi/asm/kvm.h | 1 + > arch/arm64/include/uapi/asm/kvm.h | 1 + > include/kvm/arm_vgic.h | 16 ++- > virt/kvm/arm/vgic/vgic-init.c | 20 +++- > virt/kvm/arm/vgic/vgic-kvm-device.c | 55 ++++++++++- > virt/kvm/arm/vgic/vgic-mmio-v3.c | 114 +++++++++++++++++++--- > virt/kvm/arm/vgic/vgic-v3.c | 101 +++++++++++++++---- > virt/kvm/arm/vgic/vgic.h | 42 +++++++- > 9 files changed, 330 insertions(+), 45 deletions(-) >