From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0DEA239DBC7 for ; Fri, 17 Apr 2026 15:08:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776438531; cv=none; b=X1vmAIKhWU1UxIPZzqKCeyiPiGWeS0QcXZ3ksQTQFeHRqkMH1mMfFHrP4cFfAivQ3v6N0eKQv//rBOYMJ9zE4yViyv1RbrsSBUSWnDq5IkqKdwIr/FTvFc/fAz/kGeQiuZArJs1MlZ3eJ5iLtp+Q9/20JOPwd8IfZ/TZaCwNffk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776438531; c=relaxed/simple; bh=1yJGH5kQWk/DYxeD4JVEyqHz0zzZPkB5Dq3w54vSzHg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PbWSr5G+ld24dxfPHLowQLdGMLcx/wa5KDll4m37fPAfPefAxGM1Qr/ZhEC1ePv+E39V4MT7mw161pnZ13c43IIMkHREm6ABYZh1Ely5ADY+ISE+9HOnMLjRgqPr5JHY17KRCnuJ45Dd7jL/Ilhlr11JK72y24j2zQJ1HlmMKhk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=S/Sokx9B; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="S/Sokx9B" Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63HDdOH61842914; Fri, 17 Apr 2026 15:08:35 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=D+8lIijQhG6N6RcEp GO5kMYNzpa3Tr+MHEu9UN5CrDU=; b=S/Sokx9BBw2YRJBjcAxlBUDYJ5VO/6zKD Op46RHP0Y1ygyrMBASAGbvLp3py715Gs2hjxAcFLR0La8JkNCkaAIJ2SXp7RzfX9 vy1H4SaXJFRgFkEa4HRhmEX5DBMVjzyPADdqpDUvUM2RcG8m1AAagKxHs81QisfI Gj0GO9yD3CGtFTXy4BDIkuYqKuc2LPWs9dvzeXNFvzaYypU6i3/Yz7g3imVImnVt XqbhBP7BszzulpFC1TRn8zjVcTQVSDbwLWlYxaX50gukopAokinxd0WOu/1vtta2 0o7zZq4lCEaGHyr74l4Lc9M2O22lFQCaKvw74TVLfRxTeSPviVMeQ== Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4dh89n36da-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 17 Apr 2026 15:08:34 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 63HE2bCa026284; Fri, 17 Apr 2026 15:08:33 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4dg2ujyg5b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 17 Apr 2026 15:08:33 +0000 Received: from smtpav03.fra02v.mail.ibm.com (smtpav03.fra02v.mail.ibm.com [10.20.54.102]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 63HF8TKL6685086 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 17 Apr 2026 15:08:30 GMT Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CB2C420043; Fri, 17 Apr 2026 15:08:29 +0000 (GMT) Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 96FD72004D; Fri, 17 Apr 2026 15:08:29 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav03.fra02v.mail.ibm.com (Postfix) with ESMTP; Fri, 17 Apr 2026 15:08:29 +0000 (GMT) From: Jens Remus To: Catalin Marinas , Will Deacon , Steven Rostedt , Josh Poimboeuf , Indu Bhagat , Peter Zijlstra , Dylan Hatch , Weinan Liu Cc: Jens Remus , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Heiko Carstens , Ilya Leoshkevich Subject: [PATCH v1 1/4] arm64/unwind_user/fp: Enable HAVE_UNWIND_USER_FP Date: Fri, 17 Apr 2026 17:08:24 +0200 Message-ID: <20260417150827.1183376-2-jremus@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260417150827.1183376-1-jremus@linux.ibm.com> References: <20260417150827.1183376-1-jremus@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDE3MDE0OSBTYWx0ZWRfXyL+AaX4sW4c1 IztvbvVAcInJEcSMTLTanbumNJLLsJiBjUgjAmn8ghNfyA/+AouV2PHxMofVcMIDkm2HU4nY0cm tlanb96m53gZggVYlfy20dZ6a40ihAVdxCBz/Y2XuVfNEm0w6Dh18etXo9KmMMz2EmPfi9tsGiW FFHJmOuAUzJxsm0n/FJSC/qTY3326BZ0lQpZDMan6Z2r3U8UFDkInqNJqS48b1WODPCvGulSi0l d99ESZkNkbMAN+bthqbsL91qnUGEXT2E53OstsEceUQ7l2Nzm0Joiw9z68A9zpxNytH6kfelfDF zlt5OftCTkHRTyfommkYaHX2VOOD4jv5kvKoJrCctBlHL2wTNnnGOZu10nJuLkUx32oYwFSLq+g 3i0A1ulVfTAxdg5njXZKUINvvGLUyioM0tDMSZQfcXL11nX+gFMvFcBsIR8IjGTQPZV8s9ejDON BJd8zO3iM8zWD4jXZww== X-Authority-Analysis: v=2.4 cv=eJ4jSnp1 c=1 sm=1 tr=0 ts=69e24cf2 cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=A5OVakUREuEA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=VnNF1IyMAAAA:8 a=5cNvg9WSwcz2foiWP2IA:9 X-Proofpoint-GUID: iyloqNsP97RSgzY5YMWBlOh_W7aeqEgQ X-Proofpoint-ORIG-GUID: bOd7EevnKLOJgcOLxkyOZ266bQ2hrW3I X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-17_01,2026-04-17_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 lowpriorityscore=0 adultscore=0 priorityscore=1501 clxscore=1011 bulkscore=0 suspectscore=0 spamscore=0 impostorscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604070000 definitions=main-2604170149 Add arm64 support for unwinding of user space using frame pointer (FP). For this purpose enable the config option HAVE_UNWIND_USER_FP and provide an arm64-specific ARCH_INIT_USER_FP_FRAME definition (specifying the CFA offset from FP and the FP and RA offsets from CFA). Unlike x86, as there is no mean to determine whether the user space IP in the topmost frame is at function entry, rely on the common definition of unwind_user_at_function_start(), which always returns false, and common dummy definition of ARCH_INIT_USER_FP_ENTRY_FRAME. For unwind user in general provide an arm64-specific implementation of unwind_user_word_size(). Signed-off-by: Jens Remus --- arch/arm64/Kconfig | 1 + arch/arm64/include/asm/unwind_user.h | 42 ++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 arch/arm64/include/asm/unwind_user.h diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 38dba5f7e4d2..994fd5162a1d 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -253,6 +253,7 @@ config ARM64 select HAVE_RUST if RUSTC_SUPPORTS_ARM64 select HAVE_STACKPROTECTOR select HAVE_SYSCALL_TRACEPOINTS + select HAVE_UNWIND_USER_FP select HAVE_KPROBES select HAVE_KRETPROBES select HAVE_GENERIC_VDSO diff --git a/arch/arm64/include/asm/unwind_user.h b/arch/arm64/include/asm/unwind_user.h new file mode 100644 index 000000000000..0641d4d97b0f --- /dev/null +++ b/arch/arm64/include/asm/unwind_user.h @@ -0,0 +1,42 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _ASM_ARM64_UNWIND_USER_H +#define _ASM_ARM64_UNWIND_USER_H + +#include +#include + +#ifdef CONFIG_UNWIND_USER + +static inline int unwind_user_word_size(struct pt_regs *regs) +{ +#ifdef COMPAT + if (compat_user_mode(regs)) + return sizeof(int); +#endif + return sizeof(long); +} + +#endif /* CONFIG_UNWIND_USER */ + +#ifdef CONFIG_HAVE_UNWIND_USER_FP + +#define ARCH_INIT_USER_FP_FRAME(ws) \ + .cfa = { \ + .rule = UNWIND_USER_CFA_RULE_FP_OFFSET, \ + .offset = 2*(ws), \ + }, \ + .ra = { \ + .rule = UNWIND_USER_RULE_CFA_OFFSET_DEREF, \ + .offset = -1*(ws), \ + }, \ + .fp = { \ + .rule = UNWIND_USER_RULE_CFA_OFFSET_DEREF, \ + .offset = -2*(ws), \ + }, \ + .outermost = false, + +#endif /* CONFIG_HAVE_UNWIND_USER_FP */ + +#include + +#endif /* _ASM_ARM64_UNWIND_USER_H */ -- 2.51.0