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

[PATCH 3/4] xen/arm: traps: enter the SP_EL0 vector group for an exception at EL1t


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Stefano Stabellini <stefano.stabellini@xxxxxxx>
  • Date: Fri, 6 Nov 2026 18:14:40 -0800
  • 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 (0)
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=cXWPjtC47JOAhS/1FwfOO4rezzkfX6QRL375FvELi68=; b=bSOdAoVNuvLZiHcFjbTA4MTP/a7KvijdArzwm7O7+++yJSdI7Y6BA9+eh4diFFx6okB6QSkCi3FuNINj4bk+/CMBodbhtJAxg8wXlBjLflFW8JldEZQFxc9PNFrkWPfXwcBoDgrEqVETKSxQpjUYOKIfdk1tUvFf6LkxBLh3oO+ZCQi9+6b1ceQwVhVW41IAC4gzopsnI1R4Lt9kPyKGZ7ybw98qg65IR+FocnAYL8qnYfbqoLphqfEK3fucUtBoI3Qw5DVZltChlI1recTGRTqYbosH6sd6NQc8xewmLf/rJ4nao/FmEAyXu0X3PLLg6VkgOyW2eCbI5ZY7Uq+t+w==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ulcB5grcaFFaufz3atQ9iE43Ola6RpZVjOGIRYzGopp8zbf/3kAyJ7f0pB0C9ZYenHg01WDJUiO7jgGZGWF2dLynZdRGha0UkF5/u3jCaEtZm7G7wOTIH2eWlkNQ5Cprbg4sjjiembPFazLkCooeutZq7qZbKo3z+n5ewaasBN71t82QFoQ0M1C8f7WT6cZ/RH8Ns8U4hU+OH7it8kTsP/VjJd2wiV26VSGKqW2+aEiK3z8u1HiLISZwbJqPAdFg6bhDjux4g+G+KtRuLR5EgCoa99HDLMT3r1TiUdJLembxp8vGcr18JDFGcPzV+iM/OO6dHXXQSkUVVfJK0WnSdQ==
  • Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=amd.com header.i="@amd.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
  • Cc: <stefano.stabellini@xxxxxxx>, Julien Grall <julien@xxxxxxx>, "Bertrand Marquis" <bertrand.marquis@xxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Delivery-date: Sat, 07 Nov 2026 02:15:11 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

An exception taken from the current level is delivered to the SP_EL0
vector group (offset 0x000) when the guest was at EL1t, and to the
SP_ELx group (0x200) only at EL1h (ARM DDI 0487A.k D1.10.2, Table
D1-7). exception_handler64() used 0x200 for both.

Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxx>
Cc: Julien Grall <julien@xxxxxxx>
Cc: Bertrand Marquis <bertrand.marquis@xxxxxxx>
Cc: Michal Orzel <michal.orzel@xxxxxxx>
Cc: Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
---
 xen/arch/arm/traps.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
index 6a5dcef2aa..f6abe25f74 100644
--- a/xen/arch/arm/traps.c
+++ b/xen/arch/arm/traps.c
@@ -532,7 +532,13 @@ static vaddr_t exception_handler64(struct cpu_user_regs 
*regs, vaddr_t offset)
         base += VECTOR64_LOWER32_BASE;
     else if ( psr_mode(regs->cpsr,PSR_MODE_EL0t) )
         base += VECTOR64_LOWER64_BASE;
-    else /* Otherwise must be from kernel mode */
+    /*
+     * Otherwise must be from kernel mode. The current EL group is chosen by
+     * the stack pointer in use (ARM DDI 0487A.k D1.10.2, Table D1-7).
+     */
+    else if ( psr_mode(regs->cpsr,PSR_MODE_EL1t) )
+        base += VECTOR64_CURRENT_SP0_BASE;
+    else
         base += VECTOR64_CURRENT_SPx_BASE;
 
     return base + offset;
-- 
2.43.0




 


Rackspace

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