[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [XEN PATCH 2/4] arm/vgic: Move get/put irq to a wider scope


  • To: Mykyta Poturai <Mykyta_Poturai@xxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Wei Chen <Wei.Chen@xxxxxxx>
  • Date: Thu, 26 Oct 2023 17:25:49 +0800
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+OUpcsAy2JZcZRdBT4rBrPntr+IJg2TYEjU6YJU+mVs=; b=dNvOBoH8K5wFl3byThasiWlmTCSKXOv8LghQYRMeBK0HskNMwnV/ay1Z9mYl1J00Zk3GyLazLDBJThVSJJ6SQCakY8G3SFCoQJ3SAmcAdRV0kI31eh0fHsu6k2zNKrZfDILRb96R9lQSVRksd76Hkc2m1rZl/tnD6jdKWv52GVo7MrAMExYjcEJMycpvCz3UMvkeNBseKAqHqh9KYNRWaZMs+HiceBXq5TPEziIiJ9kHgCc3jRliKp2o5rtDrWBsVoEcQ/h1CpsLcRKtxl5ltGi1XhArNyrlNLGUi74AjWkZhRRTEVOKMjX2mkhy2aWIlMpwMRdwCu8InVVZD9OZMQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kSBhBazPp6SM+ie5rOr+vBBCR9U90PC6y1Vub14+CjrA5gfU8HpD7rEQBdCv0/E3RkhgjlW71FtoDROYfiq8aorlWDLrFxu7fQS3ayrT9D2vazakGA8xcyBfWozyz0fScsGv+GipriSZJQjABcmS53Ue5tpon+FEM6o0txyYtdKg2xg0D0HP2zs4nelCbcZI6lSOVXC8alakKtC+gtURcI8P4JnXbvs3ENuuHHzyjv4yhOUX1+MwxA5qJPb0wVX0hW1vSfnl/bLphIW52lBVNyW+MctlRgN+MiJftvf6lAqfrFztEyl11rq1h+jtwR382V+nA+ay/12OCYhX8r9fxw==
  • Authentication-results-original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com;
  • Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Delivery-date: Thu, 26 Oct 2023 09:26:40 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Nodisclaimer: true
  • Original-authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com;

Hi Mykyta,


On 2023/10/25 18:13, Mykyta Poturai wrote:
We will need GICv3 code to access get/put irq to inject LPIs for new
VGIC similar to how the old one uses irq_to_pending now. So move
get/put irq to the same header file.

Signed-off-by: Mykyta Poturai <mykyta_poturai@xxxxxxxx>
---
  xen/arch/arm/include/asm/vgic.h | 6 ++++++
  xen/arch/arm/vgic/vgic.h        | 3 ---
  2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/xen/arch/arm/include/asm/vgic.h b/xen/arch/arm/include/asm/vgic.h
index 922779ce14..7216ce82b7 100644
--- a/xen/arch/arm/include/asm/vgic.h
+++ b/xen/arch/arm/include/asm/vgic.h
@@ -387,6 +387,12 @@ void vgic_sync_from_lrs(struct vcpu *v);
int vgic_vcpu_pending_irq(struct vcpu *v); +#ifdef CONFIG_NEW_VGIC
+struct vgic_irq *vgic_get_irq(struct domain *d, struct vcpu *vcpu,
+                              uint32_t intid);
+void vgic_put_irq(struct domain *d, struct vgic_irq *irq);
+#endif
+

When we move the put/get here and protect it with the CONFIG_NEW_VGIC, will the irq_to_pending also become invalid?
Similar to:
#if CONFIG_NEW_VGIC
struct vgic_irq *vgic_get_irq(struct domain *d, struct vcpu *vcpu,
                              uint32_t intid);
void vgic_put_irq(struct domain *d, struct vgic_irq *irq);
#else
extern struct pending_irq *irq_to_pending(struct vcpu *v, unsigned int irq);
#endif

If so, subsequent changes to this file will be confusing. Can we add a wrapper header file and include the specific vgic implementation header file through the CONFIG_NEW_VGIC macro?

Cheers,
Wei Chen

  #endif /* __ASM_ARM_VGIC_H__ */
/*
diff --git a/xen/arch/arm/vgic/vgic.h b/xen/arch/arm/vgic/vgic.h
index 534b24bcd3..c6bc3509a5 100644
--- a/xen/arch/arm/vgic/vgic.h
+++ b/xen/arch/arm/vgic/vgic.h
@@ -45,9 +45,6 @@ static inline bool vgic_irq_is_mapped_level(struct vgic_irq 
*irq)
      return irq->config == VGIC_CONFIG_LEVEL && irq->hw;
  }
-struct vgic_irq *vgic_get_irq(struct domain *d, struct vcpu *vcpu,
-                              uint32_t intid);
-void vgic_put_irq(struct domain *d, struct vgic_irq *irq);
  void vgic_queue_irq_unlock(struct domain *d, struct vgic_irq *irq,
                             unsigned long flags);
  void vgic_kick_vcpus(struct domain *d);



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.