lkml.org 
[lkml]   [2022]   [Jan]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [GIT PULL] arm64: Support dynamic preemption v3
On Mon, Dec 20, 2021 at 03:01:37PM +0100, Frederic Weisbecker wrote:
> Hi,
>
> I haven't seen much comments on the static key based version from Mark
> so I don't know which direction we'll eventually take.

Sorry; I had planned to rework that according to your comments, but I hadn't
had a sufficient block of time to do so. I still intend to do that by
v5.17-rc1.

> I still hope we can focus on a unified static call based implementation,
> considering there are other users waiting on arm64 static calls.

The only other user that I am aware of is in tracing, purely as a workaround
for clang CFI having awful performance for modules, and CFI and static calls do
not play well together to begin with due to the way function addresses get
rewritten. I'd rather fix CFI than bodge around it, and that leaves no other
users...

My opinion is that the current shape of the static call API is ill-suited for
arm64 (e.g. due to branch range limitations and so on), and so I'd rather avoid
static calls on arm64. One reason I went for the static-call based trampoline
was that it was functionally equivalent to building the out-of-line static call
trampolines, but was architecture neutral, so I'd rather get that working for
everyone.

Thanks,
Mark.

> So here is a rebase against the latest tip:sched/core and arm64 static
> call proposal.
>
> git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git
> preempt/arm-v4
>
> HEAD: 6fc1c7e3d83c4e06b019b041894d9bb25f37ac6c
>
> Thanks,
> Frederic
> ---
>
> Frederic Weisbecker (3):
> sched/preempt: Prepare for supporting !CONFIG_GENERIC_ENTRY dynamic preemption
> arm64: Implement IRQ exit preemption static call for dynamic preemption
> arm64: Implement HAVE_PREEMPT_DYNAMIC
>
> Ard Biesheuvel (2):
> static_call: Use non-function types to refer to the trampolines
> arm64: implement support for static call trampolines
>
>
> arch/Kconfig | 1 -
> arch/arm64/Kconfig | 3 ++
> arch/arm64/include/asm/preempt.h | 23 ++++++++++-
> arch/arm64/include/asm/static_call.h | 40 +++++++++++++++++++
> arch/arm64/kernel/entry-common.c | 15 +++++--
> arch/arm64/kernel/patching.c | 77 ++++++++++++++++++++++++++++++++++--
> arch/arm64/kernel/vmlinux.lds.S | 1 +
> include/linux/entry-common.h | 3 +-
> include/linux/static_call.h | 4 +-
> include/linux/static_call_types.h | 11 ++++--
> kernel/sched/core.c | 6 ++-
> 11 files changed, 168 insertions(+), 16 deletions(-)

\
 
 \ /
  Last update: 2022-01-04 18:08    [W:0.083 / U:1.624 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site