All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/5] Wire up getrandom() vDSO implementation on powerpc
@ 2024-08-30 15:57 Christophe Leroy
  2024-08-30 15:57 ` [PATCH v3 1/5] mm: Define VM_DROPPABLE for powerpc/32 Christophe Leroy
                   ` (4 more replies)
  0 siblings, 5 replies; 12+ messages in thread
From: Christophe Leroy @ 2024-08-30 15:57 UTC (permalink / raw)
  To: Andrew Morton, Steven Rostedt, Masami Hiramatsu,
	Mathieu Desnoyers, Michael Ellerman, Nicholas Piggin,
	Naveen N Rao, Nathan Chancellor, Nick Desaulniers, Bill Wendling,
	Justin Stitt, Shuah Khan, Jason A . Donenfeld
  Cc: Christophe Leroy, linux-kernel, linuxppc-dev, linux-kselftest,
	llvm, linux-fsdevel, linux-mm, linux-trace-kernel,
	Adhemerval Zanella, Xi Ruoyao

This series wires up getrandom() vDSO implementation on powerpc.

Tested on PPC32 on real hardware.
Tested on PPC64 (both BE and LE) on QEMU:

Performance on powerpc 885:
	~# ./vdso_test_getrandom bench-single
	   vdso: 25000000 times in 62.938002291 seconds
	   libc: 25000000 times in 535.581916866 seconds
	syscall: 25000000 times in 531.525042806 seconds

Performance on powerpc 8321:
	~# ./vdso_test_getrandom bench-single
	   vdso: 25000000 times in 16.899318858 seconds
	   libc: 25000000 times in 131.050596522 seconds
	syscall: 25000000 times in 129.794790389 seconds

Performance on QEMU pseries:
	~ # ./vdso_test_getrandom bench-single
	   vdso: 25000000 times in 4.977777162 seconds
	   libc: 25000000 times in 75.516749981 seconds
	syscall: 25000000 times in 86.842242014 seconds

In order to run selftests, some fixes are needed, see
https://lore.kernel.org/linuxppc-dev/6c5da802e72befecfa09046c489aa45d934d611f.1725020674.git.christophe.leroy@csgroup.eu/

Those selftest fixes are independant and are not required to apply
and use this series.

Changes in v3:
- Rebased on recent random git tree (0c7e00e22c21)
- Fixed build failures reported by robots around VM_DROPPABLE
- Fixed crash on PPC64 due to clobbered r13 by not using r13 anymore (saving it was not enough for signals).
- Split final patch in two, first for PPC32, second for PPC64
- Moved selftest fixes out of this series

Changes in v2:
- Define VM_DROPPABLE for powerpc/32
- Fixes generic vDSO getrandom headers to enable CONFIG_COMPAT build.
- Fixed size of generation counter
- Fixed selftests to work on non x86 architectures

Christophe Leroy (5):
  mm: Define VM_DROPPABLE for powerpc/32
  powerpc/vdso32: Add crtsavres
  powerpc/vdso: Refactor CFLAGS for CVDSO build
  powerpc/vdso: Wire up getrandom() vDSO implementation on PPC32
  powerpc/vdso: Wire up getrandom() vDSO implementation on PPC64

 arch/powerpc/Kconfig                         |   1 +
 arch/powerpc/include/asm/asm-compat.h        |   8 +
 arch/powerpc/include/asm/mman.h              |   2 +-
 arch/powerpc/include/asm/vdso/getrandom.h    |  54 ++++
 arch/powerpc/include/asm/vdso/vsyscall.h     |   6 +
 arch/powerpc/include/asm/vdso_datapage.h     |   2 +
 arch/powerpc/kernel/asm-offsets.c            |   1 +
 arch/powerpc/kernel/vdso/Makefile            |  57 ++--
 arch/powerpc/kernel/vdso/getrandom.S         |  58 ++++
 arch/powerpc/kernel/vdso/gettimeofday.S      |  13 -
 arch/powerpc/kernel/vdso/vdso32.lds.S        |   1 +
 arch/powerpc/kernel/vdso/vdso64.lds.S        |   1 +
 arch/powerpc/kernel/vdso/vgetrandom-chacha.S | 299 +++++++++++++++++++
 arch/powerpc/kernel/vdso/vgetrandom.c        |  14 +
 fs/proc/task_mmu.c                           |   4 +-
 include/linux/mm.h                           |   4 +-
 include/trace/events/mmflags.h               |   4 +-
 tools/arch/powerpc/vdso                      |   1 +
 tools/testing/selftests/vDSO/Makefile        |   4 +
 19 files changed, 492 insertions(+), 42 deletions(-)
 create mode 100644 arch/powerpc/include/asm/vdso/getrandom.h
 create mode 100644 arch/powerpc/kernel/vdso/getrandom.S
 create mode 100644 arch/powerpc/kernel/vdso/vgetrandom-chacha.S
 create mode 100644 arch/powerpc/kernel/vdso/vgetrandom.c
 create mode 120000 tools/arch/powerpc/vdso

-- 
2.44.0


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2024-09-01 11:17 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-30 15:57 [PATCH v3 0/5] Wire up getrandom() vDSO implementation on powerpc Christophe Leroy
2024-08-30 15:57 ` [PATCH v3 1/5] mm: Define VM_DROPPABLE for powerpc/32 Christophe Leroy
2024-09-01 11:17   ` Michael Ellerman
2024-08-30 15:57 ` [PATCH v3 2/5] powerpc/vdso32: Add crtsavres Christophe Leroy
2024-08-30 15:57 ` [PATCH v3 3/5] powerpc/vdso: Refactor CFLAGS for CVDSO build Christophe Leroy
2024-08-30 15:57 ` [PATCH v3 4/5] powerpc/vdso: Wire up getrandom() vDSO implementation on PPC32 Christophe Leroy
2024-08-30 16:14   ` Jason A. Donenfeld
2024-08-30 16:42     ` Christophe Leroy
2024-08-30 17:23       ` Christophe Leroy
2024-08-30 16:17   ` Jason A. Donenfeld
2024-08-30 18:52     ` Christophe Leroy
2024-08-30 15:57 ` [PATCH v3 5/5] powerpc/vdso: Wire up getrandom() vDSO implementation on PPC64 Christophe Leroy

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.