[<prev] [next>] [day] [month] [year] [list]
Message-ID: <CACRpkdZCiiMTwf7eGJJ9aCKFOC3_xTGv1JKQUijjyp+_++cZ_A@mail.gmail.com>
Date: Fri, 28 Feb 2025 13:49:36 +0100
From: Linus Walleij <linus.walleij@...aro.org>
To: Russell King <rmk+kernel@...linux.org.uk>
Cc: Linux ARM <linux-arm-kernel@...ts.infradead.org>, Arnd Bergmann <arnd@...db.de>,
Thomas Gleixner <tglx@...utronix.de>, linux-kernel <linux-kernel@...r.kernel.org>,
"Paul E. McKenney" <paulmck@...nel.org>
Subject: [GIT PULL] Generic entry for ARM
Hi Russell,
please consider pulling the following git branch for generic entry,
see below.
This branch was just harvested from my own v5 patch series on
lore with b4 am -t 20250225-arm-generic-entry-v5-0-2f02313653e5@...aro.org
then git am on top of v6.14-rc1, so you can do the same if you
prefer.
It's possible to squash patches, even all of them into one
big all-or-nothing patch, given the not very gradual nature generic
entry conversion seems to have.
Main upsides and downsides are in the signed tag.
I don't know who the most important stakeholders are, but I guess
the context tracker maintainer (Paul McKenney) and the people working
on generic entry (tglx) could have a say on how important this is, or isn't.
I think it's pretty neat.
Yours,
Linus Walleij
The following changes since commit 2014c95afecee3e76ca4a56956a936e23283f05b:
Linux 6.14-rc1 (2025-02-02 15:39:26 -0800)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator.git
tags/arm-generic-entry-for-v6.15
for you to fetch changes up to 98b8e133458a3feefdf882ea16fb7f1f576a49e5:
ARM: entry: Reimplement local restart in C (2025-02-28 13:40:44 +0100)
----------------------------------------------------------------
Main upsides:
- Using the same common entry as used by x86_64, RISCV, S390
and Loongarch, probably soon also ARM64.
- Moves ARM away from the obsoleted context tracker entry points
user_enter_callable() and user_exit_callable() are now only used
by ARM, CSKY and Xtensa.
- Solves a few lockdep warnings in the process.
- Converts a bit of assembly into C.
Main downside:
- Slightly increased system call overhead, around 6% in
measurements.
----------------------------------------------------------------
Linus Walleij (31):
ARM: Prepare includes for generic entry
ARM: ptrace: Split report_syscall()
ARM: entry: Skip ret_slow_syscall label
ARM: process: Rewrite ret_from_fork i C
ARM: process: Remove local restart
ARM: entry: Invoke syscalls using C
ARM: entry: Rewrite two asm calls in C
ARM: entry: Move trace entry to C function
ARM: entry: save the syscall sp in thread_info
ARM: entry: move all tracing invocation to C
ARM: entry: Merge the common and trace entry code
ARM: entry: Rename syscall invocation
ARM: entry: Create user_mode_enter/exit
ARM: entry: Drop trace argument from usr_entry macro
ARM: entry: Separate call path for syscall SWI entry
ARM: entry: Drop argument to asm_irqentry macros
ARM: entry: Implement syscall_exit_to_user_mode()
ARM: entry: Drop the superfast ret_fast_syscall
ARM: entry: Remove fast and offset register restore
ARM: entry: Untangle ret_fast_syscall/to_user
ARM: entry: Do not double-call exit functions
ARM: entry: Move work processing to C
ARM: entry: Stop exiting syscalls like IRQs
ARM: entry: Complete syscall and IRQ transition to C
ARM: entry: Create irqentry calls from kernel mode
ARM: entry: Move in-kernel hardirq tracing to C
ARM: irq: Add irqstack helper
ARM: entry: Convert to generic entry
ARM: entry: Handle dabt, pabt, and und as interrupts
ARM: entry: Block IRQs in early IRQ context
ARM: entry: Reimplement local restart in C
arch/arm/Kconfig | 1 +
arch/arm/include/asm/entry-common.h | 66 ++++++++++++
arch/arm/include/asm/entry.h | 14 +++
arch/arm/include/asm/ptrace.h | 8 +-
arch/arm/include/asm/signal.h | 4 -
arch/arm/include/asm/stacktrace.h | 2 +-
arch/arm/include/asm/switch_to.h | 4 +
arch/arm/include/asm/syscall.h | 7 ++
arch/arm/include/asm/thread_info.h | 22 ++--
arch/arm/include/asm/traps.h | 5 +-
arch/arm/include/uapi/asm/ptrace.h | 2 +
arch/arm/kernel/Makefile | 5 +-
arch/arm/kernel/asm-offsets.c | 1 +
arch/arm/kernel/entry-armv.S | 82 ++++-----------
arch/arm/kernel/entry-common.S | 198 +++++++++++++-----------------------
arch/arm/kernel/entry-header.S | 100 ++----------------
arch/arm/kernel/entry.c | 120 ++++++++++++++++++++++
arch/arm/kernel/irq.c | 6 ++
arch/arm/kernel/irq.h | 2 +
arch/arm/kernel/process.c | 25 ++++-
arch/arm/kernel/ptrace.c | 81 +--------------
arch/arm/kernel/signal.c | 68 +++----------
arch/arm/kernel/syscall.c | 59 +++++++++++
arch/arm/kernel/traps.c | 30 +-----
arch/arm/mm/abort-ev4.S | 2 +-
arch/arm/mm/abort-ev4t.S | 2 +-
arch/arm/mm/abort-ev5t.S | 4 +-
arch/arm/mm/abort-ev5tj.S | 6 +-
arch/arm/mm/abort-ev6.S | 2 +-
arch/arm/mm/abort-ev7.S | 2 +-
arch/arm/mm/abort-lv4t.S | 36 +++----
arch/arm/mm/abort-macro.S | 2 +-
arch/arm/mm/abort-nommu.S | 2 +-
arch/arm/mm/fault.c | 4 +-
arch/arm/mm/fault.h | 8 +-
arch/arm/mm/pabort-legacy.S | 2 +-
arch/arm/mm/pabort-v6.S | 2 +-
arch/arm/mm/pabort-v7.S | 2 +-
38 files changed, 484 insertions(+), 504 deletions(-)
create mode 100644 arch/arm/include/asm/entry-common.h
create mode 100644 arch/arm/include/asm/entry.h
create mode 100644 arch/arm/kernel/entry.c
create mode 100644 arch/arm/kernel/irq.h
create mode 100644 arch/arm/kernel/syscall.c
Powered by blists - more mailing lists