From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id DA0B72F7F07 for ; Wed, 24 Jun 2026 15:32:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782315145; cv=none; b=UQyD7AT/HjWnS/KSJOGvJAKjfKeEPY54KUG5ig5uW78WW2pvbrnhk5fdSAB7vI9bFd0ypLISAH0qgzeiVfK2CzqUVUJk6iStpNcoYrA0TKW+QJgsslPs5+XBCrC9TRD6Gql+cngKcS4Y92oTnIFDABKBsHfh+XAkRTR4qYijg5o= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782315145; c=relaxed/simple; bh=YYN8guqFW8bsQsH5XPf9FRtbfT6L6ouIddpKDYUN90A=; h=Message-ID:Date:MIME-Version:Subject:To:References:From:Cc: In-Reply-To:Content-Type; b=r+wuIFZke6TmPqYmJ60Mgg3PegnXsAUd4pX4dlCG4OAkp7TXxhGxmwd0Pmj2FDIM+huPAyLgdZaPfO9Spyd4xcGlCsqKNPRdESIbeTyM1Xyv9qQEa11vAHDYiNQdzQbZ3ztrmOpxAXGq/uGtu2464s/Av9untw5W698BSio/FBc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=WbpGQKIP; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="WbpGQKIP" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 7AC7D2308; Wed, 24 Jun 2026 08:32:18 -0700 (PDT) Received: from [10.2.213.11] (e137867.arm.com [10.2.213.11]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 85DD13F905; Wed, 24 Jun 2026 08:32:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1782315143; bh=YYN8guqFW8bsQsH5XPf9FRtbfT6L6ouIddpKDYUN90A=; h=Date:Subject:To:References:From:Cc:In-Reply-To:From; b=WbpGQKIPfkGDQ9ehtwtCNruTMnKuHqy+zQBbB16T0LPXW0LDic1RZr/zwn+eySUuN 8i6V0U1keZC4gj/F/yZg0zJGBLzzrrVmxSCOrpCqh0QiBlT/DV+lsaMmqhrYYjYQ+Y AjxlF/OPON+ZptGQp3KKdRIrMmJQABIyQK5ncTyg= Message-ID: Date: Wed, 24 Jun 2026 16:32:17 +0100 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v15 10/11] arm64: entry: Convert to generic entry To: Jinjie Ruan References: <20260511092103.1974980-1-ruanjinjie@huawei.com> <20260511092103.1974980-11-ruanjinjie@huawei.com> From: Ada Couprie Diaz Cc: Ada Couprie Diaz , catalin.marinas@arm.com, will@kernel.org, oleg@redhat.com, tglx@kernel.org, peterz@infradead.org, luto@kernel.org, kees@kernel.org, wad@chromium.org, mark.rutland@arm.com, yeoreum.yun@arm.com, linusw@kernel.org, kevin.brodsky@arm.com, ldv@strace.io, thuth@redhat.com, james.morse@arm.com, song@kernel.org, anshuman.khandual@arm.com, broonie@kernel.org, ryan.roberts@arm.com, pengcan@kylinos.cn, liqiang01@kylinos.cn, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Content-Language: en-US, en-GB, fr Organization: Arm Ltd. In-Reply-To: <20260511092103.1974980-11-ruanjinjie@huawei.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 11/05/2026 10:21, Jinjie Ruan wrote: > Implement the generic entry framework for arm64 to handle system call > entry and exit. This follows the migration of x86, RISC-V, and LoongArch, > consolidating architecture-specific syscall tracing and auditing into > the common kernel entry infrastructure. If I understand correctly, as Syscall User Dispatch is gated being `CONFIG_GENERIC_ENTRY` only and handled via ptrace, this patch effectively enables Syscall User Dispatch for arm64. I think it would be great to mention it here explicitly ! > > [Background] > Arm64 has already adopted generic IRQ entry. Completing the conversion > to the generic syscall entry framework reduces architectural divergence, > simplifies maintenance, and allows arm64 to automatically benefit from > improvements in the common entry code. > > [Changes] > > 1. Kconfig and Infrastructure: > - Select GENERIC_ENTRY and remove GENERIC_IRQ_ENTRY (now implied). > > - Migrate struct thread_info to use the syscall_work field instead > of TIF flags for syscall-related tasks. > > 2. Thread Info and Flags: > - Remove definitions for TIF_SYSCALL_TRACE, TIF_SYSCALL_AUDIT, > TIF_SYSCALL_TRACEPOINT, TIF_SECCOMP, and TIF_SYSCALL_EMU. > > - Replace _TIF_SYSCALL_WORK and _TIF_SYSCALL_EXIT_WORK with the > generic SYSCALL_WORK bitmask. > > - Map single-step state to SYSCALL_EXIT_TRAP in debug-monitors.c. > > 3. Architecture-Specific Hooks (asm/entry-common.h): > - Implement arch_ptrace_report_syscall_entry() and _exit() by > porting the existing arm64 logic to the generic interface. > > - Add arch_syscall_is_vdso_sigreturn() to asm/syscall.h to > support Syscall User Dispatch (SUD). Related to the above : I feel this is missing an important information. Given that SUD is only controlled by `CONFIG_GENERIC_ENTRY`, converting to generic entry _requires_ supporting SUD, so we do it here. I think this would be important to mention, as I otherwise felt like this change did not belong in this patch. General question that follows : does it make sense to require an arch to support Syscall User Dispatch to be able to convert to generic entry ? (I assume not really, given that only `arch_syscall_is_vdso_sigreturn()` is required on the arch side, but I am curious) > > 4. Cleanup and Refactoring: > - Remove redundant arm64-specific syscall tracing functions from > ptrace.c, including syscall_trace_enter(), syscall_exit_work(), > and related audit/step helpers. > > - Update el0_svc_common() in syscall.c to use the generic > syscall_work checks and entry/exit call sites. > > [Why this matters] > - Unified Interface: Aligns arm64 with the modern kernel entry standard. > > - Improved Maintainability: Bug fixes in kernel/entry/common.c now > apply to arm64 automatically. > > - Feature Readiness: Simplifies the implementation of future > cross-architecture syscall features. > > [Compatibility] > This conversion maintains full ABI compatibility with existing > userspace. The ptrace register-saving behavior, seccomp filtering, and > syscall tracing semantics remain identical to the previous implementation. I agree, would it make sense to mention that there is no change related to RSEQ as arm64 does not have `HAVE_GENERIC_TIF_BITS` ? As that is part of generic entry, but is indeed a no-op for us. > > Cc: Mark Rutland > Cc: Will Deacon > Cc: Catalin Marinas > Cc: Thomas Gleixner > Cc: Peter Zijlstra > Reviewed-by: Linus Walleij > Acked-by: Peter Zijlstra (Intel) > Reviewed-by: Yeoreum Yun > Reviewed-by: Kevin Brodsky > Suggested-by: Kevin Brodsky > Suggested-by: Mark Rutland > Signed-off-by: Jinjie Ruan > --- > [...] > diff --git a/arch/arm64/kernel/debug-monitors.c b/arch/arm64/kernel/debug-monitors.c > index 29307642f4c9..e67643a70405 100644 > --- a/arch/arm64/kernel/debug-monitors.c > +++ b/arch/arm64/kernel/debug-monitors.c > @@ -385,11 +385,18 @@ void user_enable_single_step(struct task_struct *task) > > if (!test_and_set_ti_thread_flag(ti, TIF_SINGLESTEP)) > set_regs_spsr_ss(task_pt_regs(task)); > + > + /* > + * Ensure that a trap is triggered once stepping out of a system > + * call prior to executing any user instruction. > + */ I was a bit confused by the comment in isolation at first : we already have a signal that we are stepping and would need a trap, `TIF_SINGLESTEP`. Would it make sense to mention here that this is for/handled by the generic entry code ? Something along the lines of "[...], as the generic entry code does not check for `TIF_SINGLESTEP`.", or "Ensure that the generic entry code triggers a trap [...]", if you think its useful ? > + set_task_syscall_work(task, SYSCALL_EXIT_TRAP); > } > NOKPROBE_SYMBOL(user_enable_single_step); > > void user_disable_single_step(struct task_struct *task) > { > clear_ti_thread_flag(task_thread_info(task), TIF_SINGLESTEP); > + clear_task_syscall_work(task, SYSCALL_EXIT_TRAP); > } > NOKPROBE_SYMBOL(user_disable_single_step); Apart from my minor nitpicks : Reviewed-by: Ada Couprie Diaz Thanks, Ada