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

[XEN v2 04/12] xen/Arm: vGICv3: Adapt emulation of GICR_TYPER for AArch32


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Ayan Kumar Halder <ayankuma@xxxxxxx>
  • Date: Mon, 31 Oct 2022 15:13:18 +0000
  • 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=uduyDw2PWmugpgiAKKjLksIGjdch+A8RUHeYeJYCGgw=; b=mlR0TTZniMcgoeP7M6KxhIj3qVj2jjW8Jn4dAQQbE8w7o7Hv0ilUTMdttMEF5AyQ7UUhEzP/OYHCCsX6V8IZaUnv6PkpOtAUYzqWX4acjBIuqK3/ouB3AEdzuNxOs8fAEnKWmbty+owbmLsZ1lJaItG6ixrCupUM18VBwPJRWovqcn/fHRmS2CYJpnW5c0uXqyllnbA1xQyuuvPgYXP+sl4/nHXlcZYHOirE8WR644zPJOkBHW56SSGwxg+7toCkpH8yjZKkfuA4qPW4UkhprUWowNtdukWM/C6vYZyNRCGGsIfnxRv2uykVgPmGEnit35+vdz9QVqelh+90braqMQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lIlUhA9nPeUbK08Ns3YM7B4uXNSF8nxw7/7t1MpeUVU8EjQDUEVrPOPvLl3M3/2I8TOISZQaFA2ZtbPkeN9o09VUOPQXiTrlLuo2c+r1Vx3TKjOg0VMjuhPOJyxGc8mgEUvnbU4e6XnKi7/JlZ7dBnulzSFqx+kjFdh5owZOT7e1mxdnF4KNLYECyN2O//W4ImwT51jy2IZMMk0c5p8HGAzxm0SLvIa2/gZWYrhxUqdZVkjogZfGKcKVoDrQ5bQ9CWci9iNERHanZweLr10Fk1Jl1cpas9c6l7/GdDBdq0IAL17PFygz+05dBweJvoFYTp/1w7ahc6E9lPOf9MBg+g==
  • Cc: <sstabellini@xxxxxxxxxx>, <stefanos@xxxxxxxxxx>, <julien@xxxxxxx>, <Volodymyr_Babchuk@xxxxxxxx>, <bertrand.marquis@xxxxxxx>, <burzalodowa@xxxxxxxxx>, Ayan Kumar Halder <ayankuma@xxxxxxx>
  • Delivery-date: Mon, 31 Oct 2022 15:14:11 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

v->arch.vmpidr is assigned to uint64_t variable. This is to enable left shifts
for Aarch32 so that one can extract affinity bits.
This is then assigned to 'typer' so that the affinity bits form the upper 32 
bits.

Refer Arm IHI 0069H ID020922,
The upper 32 bits of GICR_TYPER represent the affinity
whereas the lower 32 bits represent the other bits (eg processor
number, etc).

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

Changes from :-
1. v1 - Assigned v->arch.vmpidr to "uint64_t vmpdir". Then, we can use 
MPIDR_AFFINITY_LEVEL macros to extract the affinity value.

 xen/arch/arm/vgic-v3.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/vgic-v3.c b/xen/arch/arm/vgic-v3.c
index 3f4509dcd3..e5e6f2c573 100644
--- a/xen/arch/arm/vgic-v3.c
+++ b/xen/arch/arm/vgic-v3.c
@@ -191,13 +191,15 @@ static int __vgic_v3_rdistr_rd_mmio_read(struct vcpu *v, 
mmio_info_t *info,
     case VREG64(GICR_TYPER):
     {
         uint64_t typer, aff;
+        uint64_t vmpidr = v->arch.vmpidr;
 
         if ( !vgic_reg64_check_access(dabt) ) goto bad_width;
-        aff = (MPIDR_AFFINITY_LEVEL(v->arch.vmpidr, 3) << 56 |
-               MPIDR_AFFINITY_LEVEL(v->arch.vmpidr, 2) << 48 |
-               MPIDR_AFFINITY_LEVEL(v->arch.vmpidr, 1) << 40 |
-               MPIDR_AFFINITY_LEVEL(v->arch.vmpidr, 0) << 32);
+        aff = (MPIDR_AFFINITY_LEVEL(vmpidr, 3) << 56 |
+               MPIDR_AFFINITY_LEVEL(vmpidr, 2) << 48 |
+               MPIDR_AFFINITY_LEVEL(vmpidr, 1) << 40 |
+               MPIDR_AFFINITY_LEVEL(vmpidr, 0) << 32);
         typer = aff;
+
         /* We use the VCPU ID as the redistributor ID in bits[23:8] */
         typer |= v->vcpu_id << GICR_TYPER_PROC_NUM_SHIFT;
 
-- 
2.17.1




 


Rackspace

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