From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51646) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X484i-0007II-NB for qemu-devel@nongnu.org; Mon, 07 Jul 2014 08:31:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1X484c-00063W-7C for qemu-devel@nongnu.org; Mon, 07 Jul 2014 08:31:16 -0400 Received: from mail-wg0-f46.google.com ([74.125.82.46]:44020) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X484c-00063I-0j for qemu-devel@nongnu.org; Mon, 07 Jul 2014 08:31:10 -0400 Received: by mail-wg0-f46.google.com with SMTP id l18so892585wgh.17 for ; Mon, 07 Jul 2014 05:31:07 -0700 (PDT) From: Eric Auger Date: Mon, 7 Jul 2014 13:27:20 +0100 Message-Id: <1404736043-22900-11-git-send-email-eric.auger@linaro.org> In-Reply-To: <1404736043-22900-1-git-send-email-eric.auger@linaro.org> References: <1404736043-22900-1-git-send-email-eric.auger@linaro.org> Subject: [Qemu-devel] [RFC v4 10/13] hw/intc/arm_gic_kvm: enable irqfd and set routing table List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: eric.auger@st.com, christoffer.dall@linaro.org, qemu-devel@nongnu.org, kim.phillips@freescale.com, a.rigo@virtualopensystems.com Cc: peter.maydell@linaro.org, eric.auger@linaro.org, patches@linaro.org, will.deacon@arm.com, agraf@suse.de, stuart.yoder@freescale.com, Bharat.Bhushan@freescale.com, alex.williamson@redhat.com, a.motakis@virtualopensystems.com, kvmarm@lists.cs.columbia.edu Makes possible to use KVM irqfd. An identity GSI routing table is defined so that virtual IRQ injection can happen. Signed-off-by: Eric Auger --- hw/intc/arm_gic_kvm.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/hw/intc/arm_gic_kvm.c b/hw/intc/arm_gic_kvm.c index 5038885..29b9236 100644 --- a/hw/intc/arm_gic_kvm.c +++ b/hw/intc/arm_gic_kvm.c @@ -576,6 +576,17 @@ static void kvm_arm_gic_realize(DeviceState *dev, Error **errp) KVM_DEV_ARM_VGIC_GRP_ADDR, KVM_VGIC_V2_ADDR_TYPE_CPU, s->dev_fd); + + /* set up irq routing */ + kvm_init_irq_routing(kvm_state); + for (i = 0; i < s->num_irq - GIC_INTERNAL; ++i) { + kvm_irqchip_add_irq_route(kvm_state, i, 0, i); + } + + kvm_irqfds_allowed = true; + kvm_gsi_routing_allowed = true; + + kvm_irqchip_commit_routes(kvm_state); } static void kvm_arm_gic_class_init(ObjectClass *klass, void *data) -- 1.8.3.2