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

[XEN v1] GICv3: Emulate GICD_IGRPMODR as RAZ / WI


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Ayan Kumar Halder <ayankuma@xxxxxxx>
  • Date: Wed, 19 Oct 2022 15:36:20 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=9MOdIhXTWf3IsGbVG4GdVVi8MySn/L+Duw9Q6uZ3MKU=; b=I4O83/O1kAAZzhD11XYLqYPf3U5subrTlyCyNVXFUwWW0zsTbieBQdSmLSV/fctjDr528pq/N2ShjdRi41UVHS64T5CSv4lIQvfeTUXBvdBXJ11+qKVfqveD3s5pvXUZRjKvmb9IJshlCqilDnvdVZ3/V+kY63nT6P/WwtTjYkuzNa2IhbeAJSPSJCw4XYGGaX0mN3oPVhHngTwkElqBj5Q7czPbNlgUVwtMsoMbMrHet29l2URwkm8mVY+JKRgSe2jpy+RlbYQlU9dWRRt8YVR92RU+Ah6YIsOMF0UPXbl773g5puOsR8goHi8aRxjnY7kcjkDFxw/Qe7SVKw8ggQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BHeIn4N/MSSJIX0M0y/BnhXkHnDZSUmuehI5vuIESaa81n1dWPJb5CyX4UhqEaesTDSHwo305ZFCwOvszm7b2i4Ey7PVEpVDoQ7FWtyxO/CL7nMQf0znu8Sg1DUUNEPfAMvA3nWk7ZxXgqBrHPq//ek71dpfuKbzsi8lh06NutAhpv7Ic4bwEY5O+mUjmAkiz28rKBxyH/y0s+g/034RQXeZOthxhd+u/XjBwSBSkWO+/N+LGse4XMXfxZzJ1BnKlfKhqfJB/PxYxMUuvPjIfWN9uj0okqN1vKwVJ0DFBZjoAl+KgsJcw+LHmDC13ieXfcioOG05pRaZg8leABHk2w==
  • Cc: <sstabellini@xxxxxxxxxx>, <stefanos@xxxxxxxxxx>, <julien@xxxxxxx>, <Volodymyr_Babchuk@xxxxxxxx>, <bertrand.marquis@xxxxxxx>, Ayan Kumar Halder <ayankuma@xxxxxxx>
  • Delivery-date: Wed, 19 Oct 2022 14:37:08 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Refer GIC v3 specification (Arm IHI 0069H ID020922), IGRPMODR (similar to
IGROUPR) is relevant only when the guests run in secure/non-secure mode.
As Xen does not implement security extensions for guests, so the registers
are emulated as read as zero/write ignore.

Signed-off-by: Ayan Kumar Halder <ayankuma@xxxxxxx>
---

Observed the issue while running Zephyr on R52.
Also, found that KVM has similar behaviour.

 xen/arch/arm/include/asm/gic.h | 2 ++
 xen/arch/arm/vgic-v3.c         | 4 ++++
 2 files changed, 6 insertions(+)

diff --git a/xen/arch/arm/include/asm/gic.h b/xen/arch/arm/include/asm/gic.h
index 76e3fa5dc4..998dd62651 100644
--- a/xen/arch/arm/include/asm/gic.h
+++ b/xen/arch/arm/include/asm/gic.h
@@ -48,6 +48,8 @@
 #define GICD_ICFGR1     (0xC04)
 #define GICD_ICFGR2     (0xC08)
 #define GICD_ICFGRN     (0xCFC)
+#define GICD_IGRPMODR   (0xD00)
+#define GICD_IGRPMODRN  (0xD7C)
 #define GICD_NSACR      (0xE00)
 #define GICD_NSACRN     (0xEFC)
 #define GICD_SGIR       (0xF00)
diff --git a/xen/arch/arm/vgic-v3.c b/xen/arch/arm/vgic-v3.c
index 7fb99a9ff2..0c23f6df9d 100644
--- a/xen/arch/arm/vgic-v3.c
+++ b/xen/arch/arm/vgic-v3.c
@@ -685,6 +685,7 @@ static int __vgic_v3_distr_common_mmio_read(const char 
*name, struct vcpu *v,
     switch ( reg )
     {
     case VRANGE32(GICD_IGROUPR, GICD_IGROUPRN):
+    case VRANGE32(GICD_IGRPMODR, GICD_IGRPMODRN):
         /* We do not implement security extensions for guests, read zero */
         if ( dabt.size != DABT_WORD ) goto bad_width;
         goto read_as_zero;
@@ -781,6 +782,7 @@ static int __vgic_v3_distr_common_mmio_write(const char 
*name, struct vcpu *v,
     switch ( reg )
     {
     case VRANGE32(GICD_IGROUPR, GICD_IGROUPRN):
+    case VRANGE32(GICD_IGRPMODR, GICD_IGRPMODRN):
         /* We do not implement security extensions for guests, write ignore */
         goto write_ignore_32;
 
@@ -1192,6 +1194,7 @@ static int vgic_v3_distr_mmio_read(struct vcpu *v, 
mmio_info_t *info,
     case VRANGE32(GICD_ICACTIVER, GICD_ICACTIVERN):
     case VRANGE32(GICD_IPRIORITYR, GICD_IPRIORITYRN):
     case VRANGE32(GICD_ICFGR, GICD_ICFGRN):
+    case VRANGE32(GICD_IGRPMODR, GICD_IGRPMODRN):
         /*
          * Above all register are common with GICR and GICD
          * Manage in common
@@ -1379,6 +1382,7 @@ static int vgic_v3_distr_mmio_write(struct vcpu *v, 
mmio_info_t *info,
     case VRANGE32(GICD_ICACTIVER, GICD_ICACTIVERN):
     case VRANGE32(GICD_IPRIORITYR, GICD_IPRIORITYRN):
     case VRANGE32(GICD_ICFGR, GICD_ICFGRN):
+    case VRANGE32(GICD_IGRPMODR, GICD_IGRPMODRN):
         /* Above registers are common with GICR and GICD
          * Manage in common */
         return __vgic_v3_distr_common_mmio_write("vGICD", v, info,
-- 
2.17.1




 


Rackspace

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