From nobody Tue Feb 10 13:34:16 2026 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org ARC-Seal: i=1; a=rsa-sha256; t=1573848715; cv=none; d=zoho.com; s=zohoarc; b=DPxsK8OutqtvNGPfuinrCPNpblXGMbCdwKyuFbQh/4vvGfEoQdclMU3Y4vxL9PmKitVPKj48ASKkssINPx3AgfdPAbREZpVkBrZEoO/8L3JE4JA2h0xfDgp/BmoqETr1D3FXX7NpEjPcD23Qza/xFS0DXxf7C9Tn7U+acEQ9yhI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573848715; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=9oCpd9XmwSCcU16Gw2EzJ0z3ladx1xf38lbH+dw+A4c=; b=mA58aa4zsnEFIiF9USRd/3NlFFPUDn4Hx7XkJFaqwICklycA/qB5mmUar2KIW7Rdj2XJeVcyp5S2vgN5gjQmWM8/4nByW4TWRv4TX5A02KZYy/YV7f1fUwcj80QGnVi3raVjt/meZ19g3psQMFV5Yf4TsVcLBCvysKAItKUSyJ4= ARC-Authentication-Results: i=1; mx.zoho.com; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1573848715747546.1038656738189; Fri, 15 Nov 2019 12:11:55 -0800 (PST) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iVhvm-0006un-1L; Fri, 15 Nov 2019 20:10:58 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iVhvl-0006uQ-0S for xen-devel@lists.xenproject.org; Fri, 15 Nov 2019 20:10:57 +0000 Received: from webmail.dornerworks.com (unknown [12.207.209.150]) by us1-rack-iad1.inumbo.com (Halon) with ESMTP id 035e0738-07e4-11ea-b678-bc764e2007e4; Fri, 15 Nov 2019 20:10:48 +0000 (UTC) X-Inumbo-ID: 035e0738-07e4-11ea-b678-bc764e2007e4 From: Stewart Hildebrand To: Date: Fri, 15 Nov 2019 15:10:33 -0500 Message-ID: <20191115201037.44982-3-stewart.hildebrand@dornerworks.com> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191115200115.44890-1-stewart.hildebrand@dornerworks.com> References: <20191115200115.44890-1-stewart.hildebrand@dornerworks.com> MIME-Version: 1.0 X-Originating-IP: [172.27.14.58] X-ClientProxiedBy: Mcbain.dw.local (172.27.1.45) To Mcbain.dw.local (172.27.1.45) X-spam-status: No, score=-2.9 required=3.5 tests=ALL_TRUSTED, BAYES_00, MAILSHELL_SCORE_0_4 X-Spam-Flag: NO Subject: [Xen-devel] [XEN PATCH v3 07/11] xen: arm: vgic: allow delivery of PPIs to guests X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Volodymyr Babchuk , Stefano Stabellini , Julien Grall Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Allow vgic_get_hw_irq_desc to be called with a vcpu argument. Use vcpu argument in vgic_connect_hw_irq. vgic_connect_hw_irq is called for PPIs and SPIs, not SGIs. Enforce with ASSERTs. Signed-off-by: Stewart Hildebrand --- v3: new patch --- Note: I have only modified the old vgic to allow delivery of PPIs. --- xen/arch/arm/gic-vgic.c | 24 ++++++++++++++++-------- xen/arch/arm/vgic.c | 6 +++--- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/xen/arch/arm/gic-vgic.c b/xen/arch/arm/gic-vgic.c index 98c021f1a8..2c66a8fa92 100644 --- a/xen/arch/arm/gic-vgic.c +++ b/xen/arch/arm/gic-vgic.c @@ -418,7 +418,7 @@ struct irq_desc *vgic_get_hw_irq_desc(struct domain *d,= struct vcpu *v, { struct pending_irq *p; =20 - ASSERT(!v && virq >=3D 32); + ASSERT((!v && (virq >=3D 32)) || (!d && v && (virq >=3D 16) && (virq <= 32))); =20 if ( !v ) v =3D d->vcpu[0]; @@ -434,15 +434,23 @@ int vgic_connect_hw_irq(struct domain *d, struct vcpu= *v, unsigned int virq, struct irq_desc *desc, bool connect) { unsigned long flags; - /* - * Use vcpu0 to retrieve the pending_irq struct. Given that we only - * route SPIs to guests, it doesn't make any difference. - */ - struct vcpu *v_target =3D vgic_get_target_vcpu(d->vcpu[0], virq); - struct vgic_irq_rank *rank =3D vgic_rank_irq(v_target, virq); - struct pending_irq *p =3D irq_to_pending(v_target, virq); + struct vcpu *v_target; + struct vgic_irq_rank *rank; + struct pending_irq *p; int ret =3D 0; =20 + if (v) + v_target =3D v; + else + /* Use vcpu0 to retrieve the pending_irq struct. */ + v_target =3D vgic_get_target_vcpu(d->vcpu[0], virq); + + rank =3D vgic_rank_irq(v_target, virq); + p =3D irq_to_pending(v_target, virq); + + ASSERT(virq >=3D NR_SGIS); + ASSERT(p->irq >=3D NR_SGIS); + /* "desc" is optional when we disconnect an IRQ. */ ASSERT(!connect || desc); =20 diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c index 82f524a35c..c3933c2687 100644 --- a/xen/arch/arm/vgic.c +++ b/xen/arch/arm/vgic.c @@ -410,10 +410,10 @@ void vgic_enable_irqs(struct vcpu *v, uint32_t r, int= n) irq_set_affinity(p->desc, cpumask_of(v_target->processor)); spin_lock_irqsave(&p->desc->lock, flags); /* - * The irq cannot be a PPI, we only support delivery of SPIs - * to guests. + * The irq cannot be a SGI, we only support delivery of SPIs + * and PPIs to guests. */ - ASSERT(irq >=3D 32); + ASSERT(irq >=3D NR_SGIS); if ( irq_type_set_by_domain(d) ) gic_set_irq_type(p->desc, vgic_get_virq_type(v, n, i)); p->desc->handler->enable(p->desc); --=20 2.24.0 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel