From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christoffer Dall Subject: [PATCH v2 0/3] KVM: ARM: Get rid of hardcoded VGIC addresses Date: Sat, 20 Oct 2012 10:14:12 -0400 Message-ID: <20121020141255.24046.20020.stgit@ubuntu> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org To: kvmarm@lists.cs.columbia.edu Return-path: Received: from mail-vc0-f174.google.com ([209.85.220.174]:52888 "EHLO mail-vc0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754780Ab2JTOOE (ORCPT ); Sat, 20 Oct 2012 10:14:04 -0400 Received: by mail-vc0-f174.google.com with SMTP id fk26so1480447vcb.19 for ; Sat, 20 Oct 2012 07:14:02 -0700 (PDT) Sender: kvm-owner@vger.kernel.org List-ID: We need a way to specify the address at which we expect VMs to access the interrupt controller (both the emulated distributor and the hardware interface supporting virtualization). User space should decide on this address as user space decides on an emulated board and loads a device tree describing these details directly to the guest. We introduce a new ioctl, KVM_SET_DEVICE_ADDRESS, that lets user space provide a base address for a device based on exported device ids. For now, this is only supported for the ARM vgic. User space provides this address after creating the IRQ chip and KVM performs the required mappings for a VM on the first execution of a VCPU. To avoid users mistakenly supplying overlapping io address ranges we check for existing mappings at io mappings for guests and explicitly raise an error if address space conflicts occur. Changelog[2]: - Check for page aligned addresses on vgic_set_devic_address - Move vgic_cpu_base for host to vgic_hyp_init - Fix irqchip_in_kernel to be VM-specific --- Christoffer Dall (3): KVM: ARM: Check for overlaps of mapped io addresses KVM: ARM: Introduce KVM_SET_DEVICE_ADDRESS ioctl KVM: ARM: Defer parts of the vgic init until first KVM_RUN Documentation/virtual/kvm/api.txt | 37 +++++++++++ arch/arm/include/asm/kvm.h | 13 ++++ arch/arm/include/asm/kvm_mmu.h | 2 + arch/arm/include/asm/kvm_vgic.h | 28 +++++++-- arch/arm/kvm/arm.c | 41 ++++++++++++- arch/arm/kvm/mmu.c | 11 ++- arch/arm/kvm/vgic.c | 121 +++++++++++++++++++++++++++++++------ include/linux/kvm.h | 8 ++ 8 files changed, 231 insertions(+), 30 deletions(-) -- Signature