mbox series

[GIT,PULL,v2] ARM ftrace fixes for Thumb2, Clang and the EABI unwinder

Message ID 20220214143735.112800-1-ardb@kernel.org
State New
Headers show
Series [GIT,PULL,v2] ARM ftrace fixes for Thumb2, Clang and the EABI unwinder | expand

Pull-request

git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git tags/arm-ftrace-for-rmk

Message

Ard Biesheuvel Feb. 14, 2022, 2:37 p.m. UTC
The following changes since commit 2fa3948244939471bfc93fa2f7cf3a1aadf79822:

  Merge tag 'arm-vmap-stacks-v6' of git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux into devel-stable (2022-01-31 15:26:45 +0000)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git tags/arm-ftrace-for-rmk

for you to fetch changes up to d6800ca73a7d325627c045c16d7cfdc7465f4333:

  Revert "ARM: 9144/1: forbid ftrace with clang and thumb2_kernel" (2022-02-10 09:55:05 +0100)

PRv2: use rmk's current devel-stable as the start commit

----------------------------------------------------------------
ARM: ftrace fixes and cleanups

Make all flavors of ftrace available on all builds, regardless of ISA
choice, unwinder choice or compiler:
- use ADD not POP where possible
- fix a couple of Thumb2 related issues
- enable HAVE_FUNCTION_GRAPH_FP_TEST for robustness
- enable the graph tracer with the EABI unwinder
- avoid clobbering frame pointer registers to make Clang happy

Link: https://lore.kernel.org/linux-arm-kernel/20220203082204.1176734-1-ardb@kernel.org/

----------------------------------------------------------------
Ard Biesheuvel (12):
      ARM: ftrace: ensure that ADR takes the Thumb bit into account
      ARM: ftrace: use ADD not POP to counter PUSH at entry
      ARM: ftrace: use trampolines to keep .init.text in branching range
      ARM: ftrace: avoid redundant loads or clobbering IP
      ARM: ftrace: avoid unnecessary literal loads
      ARM: ftrace: enable HAVE_FUNCTION_GRAPH_FP_TEST
      ARM: unwind: track location of LR value in stack frame
      ARM: ftrace: enable the graph tracer with the EABI unwinder
      ARM: kprobes: treat R7 as the frame pointer register in Thumb2 builds
      ARM: cacheflush: avoid clobbering the frame pointer
      ARM: mach-bcm: disable ftrace in SMC invocation routines
      Revert "ARM: 9144/1: forbid ftrace with clang and thumb2_kernel"

 arch/arm/Kconfig                         |   4 +-
 arch/arm/Kconfig.debug                   |   2 +-
 arch/arm/include/asm/cacheflush.h        |  12 +--
 arch/arm/include/asm/ftrace.h            |  20 +----
 arch/arm/include/asm/stacktrace.h        |   3 +
 arch/arm/kernel/Makefile                 |   6 +-
 arch/arm/kernel/entry-ftrace.S           | 128 +++++++++++++++++--------------
 arch/arm/kernel/ftrace.c                 |  62 +++++++++++++--
 arch/arm/kernel/unwind.c                 |   7 +-
 arch/arm/mach-bcm/Makefile               |   1 +
 arch/arm/mach-exynos/mcpm-exynos.c       |   6 +-
 arch/arm/mm/cache-v7.S                   |  40 +++++-----
 arch/arm/probes/kprobes/actions-common.c |   8 +-
 arch/arm/probes/kprobes/actions-thumb.c  |  16 +++-
 14 files changed, 182 insertions(+), 133 deletions(-)

Comments

Ard Biesheuvel Feb. 28, 2022, 12:46 p.m. UTC | #1
On Mon, 14 Feb 2022 at 15:37, Ard Biesheuvel <ardb@kernel.org> wrote:
>
> The following changes since commit 2fa3948244939471bfc93fa2f7cf3a1aadf79822:
>
>   Merge tag 'arm-vmap-stacks-v6' of git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux into devel-stable (2022-01-31 15:26:45 +0000)
>
> are available in the Git repository at:
>
>   git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git tags/arm-ftrace-for-rmk
>
> for you to fetch changes up to d6800ca73a7d325627c045c16d7cfdc7465f4333:
>
>   Revert "ARM: 9144/1: forbid ftrace with clang and thumb2_kernel" (2022-02-10 09:55:05 +0100)
>
> PRv2: use rmk's current devel-stable as the start commit
>
> ----------------------------------------------------------------
> ARM: ftrace fixes and cleanups
>
> Make all flavors of ftrace available on all builds, regardless of ISA
> choice, unwinder choice or compiler:
> - use ADD not POP where possible
> - fix a couple of Thumb2 related issues
> - enable HAVE_FUNCTION_GRAPH_FP_TEST for robustness
> - enable the graph tracer with the EABI unwinder
> - avoid clobbering frame pointer registers to make Clang happy
>
> Link: https://lore.kernel.org/linux-arm-kernel/20220203082204.1176734-1-ardb@kernel.org/
>
> ----------------------------------------------------------------
> Ard Biesheuvel (12):
>       ARM: ftrace: ensure that ADR takes the Thumb bit into account
>       ARM: ftrace: use ADD not POP to counter PUSH at entry
>       ARM: ftrace: use trampolines to keep .init.text in branching range
>       ARM: ftrace: avoid redundant loads or clobbering IP
>       ARM: ftrace: avoid unnecessary literal loads
>       ARM: ftrace: enable HAVE_FUNCTION_GRAPH_FP_TEST
>       ARM: unwind: track location of LR value in stack frame
>       ARM: ftrace: enable the graph tracer with the EABI unwinder
>       ARM: kprobes: treat R7 as the frame pointer register in Thumb2 builds
>       ARM: cacheflush: avoid clobbering the frame pointer
>       ARM: mach-bcm: disable ftrace in SMC invocation routines
>       Revert "ARM: 9144/1: forbid ftrace with clang and thumb2_kernel"
>
>  arch/arm/Kconfig                         |   4 +-
>  arch/arm/Kconfig.debug                   |   2 +-
>  arch/arm/include/asm/cacheflush.h        |  12 +--
>  arch/arm/include/asm/ftrace.h            |  20 +----
>  arch/arm/include/asm/stacktrace.h        |   3 +
>  arch/arm/kernel/Makefile                 |   6 +-
>  arch/arm/kernel/entry-ftrace.S           | 128 +++++++++++++++++--------------
>  arch/arm/kernel/ftrace.c                 |  62 +++++++++++++--
>  arch/arm/kernel/unwind.c                 |   7 +-
>  arch/arm/mach-bcm/Makefile               |   1 +
>  arch/arm/mach-exynos/mcpm-exynos.c       |   6 +-
>  arch/arm/mm/cache-v7.S                   |  40 +++++-----
>  arch/arm/probes/kprobes/actions-common.c |   8 +-
>  arch/arm/probes/kprobes/actions-thumb.c  |  16 +++-
>  14 files changed, 182 insertions(+), 133 deletions(-)

Ping?
Russell King (Oracle) Feb. 28, 2022, 2:07 p.m. UTC | #2
On Mon, Feb 28, 2022 at 01:46:26PM +0100, Ard Biesheuvel wrote:
> On Mon, 14 Feb 2022 at 15:37, Ard Biesheuvel <ardb@kernel.org> wrote:
> >
> > The following changes since commit 2fa3948244939471bfc93fa2f7cf3a1aadf79822:
> >
> >   Merge tag 'arm-vmap-stacks-v6' of git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux into devel-stable (2022-01-31 15:26:45 +0000)
> >
> > are available in the Git repository at:
> >
> >   git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git tags/arm-ftrace-for-rmk
> >
> > for you to fetch changes up to d6800ca73a7d325627c045c16d7cfdc7465f4333:
> >
> >   Revert "ARM: 9144/1: forbid ftrace with clang and thumb2_kernel" (2022-02-10 09:55:05 +0100)
> >
> > PRv2: use rmk's current devel-stable as the start commit
> >
> > ----------------------------------------------------------------
> > ARM: ftrace fixes and cleanups
> >
> > Make all flavors of ftrace available on all builds, regardless of ISA
> > choice, unwinder choice or compiler:
> > - use ADD not POP where possible
> > - fix a couple of Thumb2 related issues
> > - enable HAVE_FUNCTION_GRAPH_FP_TEST for robustness
> > - enable the graph tracer with the EABI unwinder
> > - avoid clobbering frame pointer registers to make Clang happy
> >
> > Link: https://lore.kernel.org/linux-arm-kernel/20220203082204.1176734-1-ardb@kernel.org/
> >
> > ----------------------------------------------------------------
> > Ard Biesheuvel (12):
> >       ARM: ftrace: ensure that ADR takes the Thumb bit into account
> >       ARM: ftrace: use ADD not POP to counter PUSH at entry
> >       ARM: ftrace: use trampolines to keep .init.text in branching range
> >       ARM: ftrace: avoid redundant loads or clobbering IP
> >       ARM: ftrace: avoid unnecessary literal loads
> >       ARM: ftrace: enable HAVE_FUNCTION_GRAPH_FP_TEST
> >       ARM: unwind: track location of LR value in stack frame
> >       ARM: ftrace: enable the graph tracer with the EABI unwinder
> >       ARM: kprobes: treat R7 as the frame pointer register in Thumb2 builds
> >       ARM: cacheflush: avoid clobbering the frame pointer
> >       ARM: mach-bcm: disable ftrace in SMC invocation routines
> >       Revert "ARM: 9144/1: forbid ftrace with clang and thumb2_kernel"
> >
> >  arch/arm/Kconfig                         |   4 +-
> >  arch/arm/Kconfig.debug                   |   2 +-
> >  arch/arm/include/asm/cacheflush.h        |  12 +--
> >  arch/arm/include/asm/ftrace.h            |  20 +----
> >  arch/arm/include/asm/stacktrace.h        |   3 +
> >  arch/arm/kernel/Makefile                 |   6 +-
> >  arch/arm/kernel/entry-ftrace.S           | 128 +++++++++++++++++--------------
> >  arch/arm/kernel/ftrace.c                 |  62 +++++++++++++--
> >  arch/arm/kernel/unwind.c                 |   7 +-
> >  arch/arm/mach-bcm/Makefile               |   1 +
> >  arch/arm/mach-exynos/mcpm-exynos.c       |   6 +-
> >  arch/arm/mm/cache-v7.S                   |  40 +++++-----
> >  arch/arm/probes/kprobes/actions-common.c |   8 +-
> >  arch/arm/probes/kprobes/actions-thumb.c  |  16 +++-
> >  14 files changed, 182 insertions(+), 133 deletions(-)
> 
> Ping?

Unsurprisingly, this increases the amount of conflicts (both
arch/arm/Kconfig* files) when merging it with v5.17-rc1.
Ard Biesheuvel Feb. 28, 2022, 2:11 p.m. UTC | #3
On Mon, 28 Feb 2022 at 15:07, Russell King (Oracle)
<linux@armlinux.org.uk> wrote:
>
> On Mon, Feb 28, 2022 at 01:46:26PM +0100, Ard Biesheuvel wrote:
> > On Mon, 14 Feb 2022 at 15:37, Ard Biesheuvel <ardb@kernel.org> wrote:
> > >
> > > The following changes since commit 2fa3948244939471bfc93fa2f7cf3a1aadf79822:
> > >
> > >   Merge tag 'arm-vmap-stacks-v6' of git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux into devel-stable (2022-01-31 15:26:45 +0000)
> > >
> > > are available in the Git repository at:
> > >
> > >   git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git tags/arm-ftrace-for-rmk
> > >
> > > for you to fetch changes up to d6800ca73a7d325627c045c16d7cfdc7465f4333:
> > >
> > >   Revert "ARM: 9144/1: forbid ftrace with clang and thumb2_kernel" (2022-02-10 09:55:05 +0100)
> > >
> > > PRv2: use rmk's current devel-stable as the start commit
> > >
> > > ----------------------------------------------------------------
> > > ARM: ftrace fixes and cleanups
> > >
> > > Make all flavors of ftrace available on all builds, regardless of ISA
> > > choice, unwinder choice or compiler:
> > > - use ADD not POP where possible
> > > - fix a couple of Thumb2 related issues
> > > - enable HAVE_FUNCTION_GRAPH_FP_TEST for robustness
> > > - enable the graph tracer with the EABI unwinder
> > > - avoid clobbering frame pointer registers to make Clang happy
> > >
> > > Link: https://lore.kernel.org/linux-arm-kernel/20220203082204.1176734-1-ardb@kernel.org/
> > >
> > > ----------------------------------------------------------------
> > > Ard Biesheuvel (12):
> > >       ARM: ftrace: ensure that ADR takes the Thumb bit into account
> > >       ARM: ftrace: use ADD not POP to counter PUSH at entry
> > >       ARM: ftrace: use trampolines to keep .init.text in branching range
> > >       ARM: ftrace: avoid redundant loads or clobbering IP
> > >       ARM: ftrace: avoid unnecessary literal loads
> > >       ARM: ftrace: enable HAVE_FUNCTION_GRAPH_FP_TEST
> > >       ARM: unwind: track location of LR value in stack frame
> > >       ARM: ftrace: enable the graph tracer with the EABI unwinder
> > >       ARM: kprobes: treat R7 as the frame pointer register in Thumb2 builds
> > >       ARM: cacheflush: avoid clobbering the frame pointer
> > >       ARM: mach-bcm: disable ftrace in SMC invocation routines
> > >       Revert "ARM: 9144/1: forbid ftrace with clang and thumb2_kernel"
> > >
> > >  arch/arm/Kconfig                         |   4 +-
> > >  arch/arm/Kconfig.debug                   |   2 +-
> > >  arch/arm/include/asm/cacheflush.h        |  12 +--
> > >  arch/arm/include/asm/ftrace.h            |  20 +----
> > >  arch/arm/include/asm/stacktrace.h        |   3 +
> > >  arch/arm/kernel/Makefile                 |   6 +-
> > >  arch/arm/kernel/entry-ftrace.S           | 128 +++++++++++++++++--------------
> > >  arch/arm/kernel/ftrace.c                 |  62 +++++++++++++--
> > >  arch/arm/kernel/unwind.c                 |   7 +-
> > >  arch/arm/mach-bcm/Makefile               |   1 +
> > >  arch/arm/mach-exynos/mcpm-exynos.c       |   6 +-
> > >  arch/arm/mm/cache-v7.S                   |  40 +++++-----
> > >  arch/arm/probes/kprobes/actions-common.c |   8 +-
> > >  arch/arm/probes/kprobes/actions-thumb.c  |  16 +++-
> > >  14 files changed, 182 insertions(+), 133 deletions(-)
> >
> > Ping?
>
> Unsurprisingly, this increases the amount of conflicts (both
> arch/arm/Kconfig* files) when merging it with v5.17-rc1.
>

Right, that does not surprise me either.

Does this mean this needs to wait for v5.19? Not the end of the world,
but not great either ...
Russell King (Oracle) Feb. 28, 2022, 2:16 p.m. UTC | #4
On Mon, Feb 28, 2022 at 03:11:31PM +0100, Ard Biesheuvel wrote:
> On Mon, 28 Feb 2022 at 15:07, Russell King (Oracle)
> <linux@armlinux.org.uk> wrote:
> > Unsurprisingly, this increases the amount of conflicts (both
> > arch/arm/Kconfig* files) when merging it with v5.17-rc1.
> 
> Right, that does not surprise me either.
> 
> Does this mean this needs to wait for v5.19?

No, I've merged it now, just noting the additional conflicts, and
through the power of git rerere...
Ard Biesheuvel Feb. 28, 2022, 2:23 p.m. UTC | #5
On Mon, 28 Feb 2022 at 15:16, Russell King (Oracle)
<linux@armlinux.org.uk> wrote:
>
> On Mon, Feb 28, 2022 at 03:11:31PM +0100, Ard Biesheuvel wrote:
> > On Mon, 28 Feb 2022 at 15:07, Russell King (Oracle)
> > <linux@armlinux.org.uk> wrote:
> > > Unsurprisingly, this increases the amount of conflicts (both
> > > arch/arm/Kconfig* files) when merging it with v5.17-rc1.
> >
> > Right, that does not surprise me either.
> >
> > Does this mean this needs to wait for v5.19?
>
> No, I've merged it now, just noting the additional conflicts, and
> through the power of git rerere...
>

Excellent, thanks.