linux-mips.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 00/35] sparc64: vdso: Switch to the generic vDSO library
@ 2025-10-14  6:48 Thomas Weißschuh
  2025-10-14  6:48 ` [PATCH v4 01/35] selftests: vDSO: vdso_test_correctness: Handle different tv_usec types Thomas Weißschuh
                   ` (34 more replies)
  0 siblings, 35 replies; 37+ messages in thread
From: Thomas Weißschuh @ 2025-10-14  6:48 UTC (permalink / raw)
  To: Andy Lutomirski, Thomas Gleixner, Vincenzo Frascino,
	Arnd Bergmann, David S. Miller, Andreas Larsson, Nick Alcock,
	John Stultz, Stephen Boyd, John Paul Adrian Glaubitz, Shuah Khan,
	Catalin Marinas, Will Deacon, Theodore Ts'o,
	Jason A. Donenfeld, Russell King, Madhavan Srinivasan,
	Michael Ellerman, Nicholas Piggin, Christophe Leroy, Huacai Chen,
	WANG Xuerui, Thomas Bogendoerfer, Heiko Carstens, Vasily Gorbik,
	Alexander Gordeev, Christian Borntraeger, Sven Schnelle,
	Nagarathnam Muthusamy, Shannon Nelson
  Cc: linux-kernel, sparclinux, linux-kselftest, linux-arm-kernel,
	linuxppc-dev, loongarch, linux-mips, linux-s390,
	Thomas Weißschuh, Arnd Bergmann

The generic vDSO provides a lot common functionality shared between
different architectures. SPARC is the last architecture not using it,
preventing some necessary code cleanup.

Make use of the generic infrastructure.

Follow-up to and replacement for Arnd's SPARC vDSO removal patches:
https://lore.kernel.org/lkml/20250707144726.4008707-1-arnd@kernel.org/

SPARC64 can not map .bss into userspace, so the vDSO datapages are
switched over to be allocated dynamically. This requires changes to the
s390 and random subsystem vDSO initialization as preparation.
The random subsystem changes in turn require some cleanup of the vDSO
headers to not end up as ugly #ifdef mess.

Tested on a Niagara T4 and QEMU.

This has a semantic conflict with my series "vdso: Reject absolute
relocations during build" [0]. The last patch of this series expects all
users of the generic vDSO library to use the vdsocheck tool.
This is not the case (yet) for SPARC64. I do have the patches for the
integration, the specifics will depend on which series is applied first.

Based on v6.18-rc1.

[0] https://lore.kernel.org/lkml/20250812-vdso-absolute-reloc-v4-0-61a8b615e5ec@linutronix.de/

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
---
Changes in v4:
- Rebase on v6.18-rc1.
- Keep inclusion of asm/clocksource.h from linux/clocksource.h
- Reword description of "s390/time: Set up vDSO datapage later"
- Link to v3: https://lore.kernel.org/r/20250917-vdso-sparc64-generic-2-v3-0-3679b1bc8ee8@linutronix.de

Changes in v3:
- Allocate vDSO data pages dynamically (and lots of preparations for that)
- Drop clock_getres()
- Fix 32bit clock_gettime() syscall fallback
- Link to v2: https://lore.kernel.org/r/20250815-vdso-sparc64-generic-2-v2-0-b5ff80672347@linutronix.de

Changes in v2:
- Rebase on v6.17-rc1
- Drop RFC state
- Fix typo in commit message
- Drop duplicate 'select GENERIC_TIME_VSYSCALL'
- Merge "sparc64: time: Remove architecture-specific clocksource data" into the
  main conversion patch. It violated the check in __clocksource_register_scale()
- Link to v1: https://lore.kernel.org/r/20250724-vdso-sparc64-generic-2-v1-0-e376a3bd24d1@linutronix.de

---
Arnd Bergmann (1):
      clocksource: remove ARCH_CLOCKSOURCE_DATA

Thomas Weißschuh (34):
      selftests: vDSO: vdso_test_correctness: Handle different tv_usec types
      arm64: vDSO: getrandom: Explicitly include asm/alternative.h
      arm64: vDSO: gettimeofday: Explicitly include vdso/clocksource.h
      arm64: vDSO: compat_gettimeofday: Add explicit includes
      ARM: vdso: gettimeofday: Add explicit includes
      powerpc/vdso/gettimeofday: Explicitly include vdso/time32.h
      powerpc/vdso: Explicitly include asm/cputable.h and asm/feature-fixups.h
      LoongArch: vDSO: Explicitly include asm/vdso/vdso.h
      MIPS: vdso: Add include guard to asm/vdso/vdso.h
      MIPS: vdso: Explicitly include asm/vdso/vdso.h
      random: vDSO: Add explicit includes
      vdso/gettimeofday: Add explicit includes
      vdso/helpers: Explicitly include vdso/processor.h
      vdso/datapage: Remove inclusion of gettimeofday.h
      vdso/datapage: Trim down unnecessary includes
      random: vDSO: trim vDSO includes
      random: vDSO: remove ifdeffery
      random: vDSO: split out datapage update into helper functions
      random: vDSO: only access vDSO datapage after random_init()
      s390/time: Set up vDSO datapage later
      vdso/datastore: Reduce scope of some variables in vvar_fault()
      vdso/datastore: Drop inclusion of linux/mmap_lock.h
      vdso/datastore: Map pages through struct page
      vdso/datastore: Allocate data pages dynamically
      sparc64: vdso: Link with -z noexecstack
      sparc64: vdso: Remove obsolete "fake section table" reservation
      sparc64: vdso: Replace code patching with runtime conditional
      sparc64: vdso: Move hardware counter read into header
      sparc64: vdso: Move syscall fallbacks into header
      sparc64: vdso: Introduce vdso/processor.h
      sparc64: vdso: Switch to the generic vDSO library
      sparc64: vdso2c: Drop sym_vvar_start handling
      sparc64: vdso2c: Remove symbol handling
      sparc64: vdso: Implement clock_gettime64()

 arch/arm/include/asm/vdso/gettimeofday.h           |   2 +
 arch/arm64/include/asm/vdso/compat_gettimeofday.h  |   3 +
 arch/arm64/include/asm/vdso/gettimeofday.h         |   2 +
 arch/arm64/kernel/vdso/vgetrandom.c                |   2 +
 arch/loongarch/kernel/process.c                    |   1 +
 arch/loongarch/kernel/vdso.c                       |   1 +
 arch/mips/include/asm/vdso/vdso.h                  |   5 +
 arch/mips/kernel/vdso.c                            |   1 +
 arch/powerpc/include/asm/vdso/gettimeofday.h       |   1 +
 arch/powerpc/include/asm/vdso/processor.h          |   3 +
 arch/s390/kernel/time.c                            |   4 +-
 arch/sparc/Kconfig                                 |   3 +-
 arch/sparc/include/asm/clocksource.h               |   9 -
 arch/sparc/include/asm/processor.h                 |   3 +
 arch/sparc/include/asm/processor_32.h              |   2 -
 arch/sparc/include/asm/processor_64.h              |  25 --
 arch/sparc/include/asm/vdso.h                      |   2 -
 arch/sparc/include/asm/vdso/clocksource.h          |  10 +
 arch/sparc/include/asm/vdso/gettimeofday.h         | 184 ++++++++++
 arch/sparc/include/asm/vdso/processor.h            |  41 +++
 arch/sparc/include/asm/vdso/vsyscall.h             |  10 +
 arch/sparc/include/asm/vvar.h                      |  75 ----
 arch/sparc/kernel/Makefile                         |   1 -
 arch/sparc/kernel/time_64.c                        |   6 +-
 arch/sparc/kernel/vdso.c                           |  69 ----
 arch/sparc/vdso/Makefile                           |   8 +-
 arch/sparc/vdso/vclock_gettime.c                   | 380 ++-------------------
 arch/sparc/vdso/vdso-layout.lds.S                  |  26 +-
 arch/sparc/vdso/vdso.lds.S                         |   2 -
 arch/sparc/vdso/vdso2c.c                           |  24 --
 arch/sparc/vdso/vdso2c.h                           |  45 +--
 arch/sparc/vdso/vdso32/vdso32.lds.S                |   4 +-
 arch/sparc/vdso/vma.c                              | 274 +--------------
 drivers/char/random.c                              |  71 ++--
 include/linux/clocksource.h                        |   6 +-
 include/linux/vdso_datastore.h                     |   6 +
 include/vdso/datapage.h                            |  23 +-
 include/vdso/helpers.h                             |   1 +
 init/main.c                                        |   2 +
 kernel/time/Kconfig                                |   4 -
 lib/vdso/datastore.c                               |  73 ++--
 lib/vdso/getrandom.c                               |   3 +
 lib/vdso/gettimeofday.c                            |  17 +
 .../testing/selftests/vDSO/vdso_test_correctness.c |   8 +-
 44 files changed, 448 insertions(+), 994 deletions(-)
---
base-commit: 28b1ac5ccd8d4900a8f53f0e6e84d517a7ccc71f
change-id: 20250722-vdso-sparc64-generic-2-25f2e058e92c

Best regards,
-- 
Thomas Weißschuh <thomas.weissschuh@linutronix.de>


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

end of thread, other threads:[~2025-10-14  7:50 UTC | newest]

Thread overview: 37+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-14  6:48 [PATCH v4 00/35] sparc64: vdso: Switch to the generic vDSO library Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 01/35] selftests: vDSO: vdso_test_correctness: Handle different tv_usec types Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 02/35] arm64: vDSO: getrandom: Explicitly include asm/alternative.h Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 03/35] arm64: vDSO: gettimeofday: Explicitly include vdso/clocksource.h Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 04/35] arm64: vDSO: compat_gettimeofday: Add explicit includes Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 05/35] ARM: vdso: gettimeofday: " Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 06/35] powerpc/vdso/gettimeofday: Explicitly include vdso/time32.h Thomas Weißschuh
2025-10-14  7:42   ` Christophe Leroy
2025-10-14  6:48 ` [PATCH v4 07/35] powerpc/vdso: Explicitly include asm/cputable.h and asm/feature-fixups.h Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 08/35] LoongArch: vDSO: Explicitly include asm/vdso/vdso.h Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 09/35] MIPS: vdso: Add include guard to asm/vdso/vdso.h Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 10/35] MIPS: vdso: Explicitly include asm/vdso/vdso.h Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 11/35] random: vDSO: Add explicit includes Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 12/35] vdso/gettimeofday: " Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 13/35] vdso/helpers: Explicitly include vdso/processor.h Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 14/35] vdso/datapage: Remove inclusion of gettimeofday.h Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 15/35] vdso/datapage: Trim down unnecessary includes Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 16/35] random: vDSO: trim vDSO includes Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 17/35] random: vDSO: remove ifdeffery Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 18/35] random: vDSO: split out datapage update into helper functions Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 19/35] random: vDSO: only access vDSO datapage after random_init() Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 20/35] s390/time: Set up vDSO datapage later Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 21/35] vdso/datastore: Reduce scope of some variables in vvar_fault() Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 22/35] vdso/datastore: Drop inclusion of linux/mmap_lock.h Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 23/35] vdso/datastore: Map pages through struct page Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 24/35] vdso/datastore: Allocate data pages dynamically Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 25/35] sparc64: vdso: Link with -z noexecstack Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 26/35] sparc64: vdso: Remove obsolete "fake section table" reservation Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 27/35] sparc64: vdso: Replace code patching with runtime conditional Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 28/35] sparc64: vdso: Move hardware counter read into header Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 29/35] sparc64: vdso: Move syscall fallbacks " Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 30/35] sparc64: vdso: Introduce vdso/processor.h Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 31/35] sparc64: vdso: Switch to the generic vDSO library Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 32/35] sparc64: vdso2c: Drop sym_vvar_start handling Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 33/35] sparc64: vdso2c: Remove symbol handling Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 34/35] sparc64: vdso: Implement clock_gettime64() Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 35/35] clocksource: remove ARCH_CLOCKSOURCE_DATA Thomas Weißschuh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).