public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH v6 00/14] sparc64: vdso: Switch to the generic vDSO library
@ 2026-03-04  7:48 Thomas Weißschuh
  2026-03-04  7:48 ` [PATCH v6 01/14] vdso/datastore: Reduce scope of some variables in vvar_fault() Thomas Weißschuh
                   ` (14 more replies)
  0 siblings, 15 replies; 19+ messages in thread
From: Thomas Weißschuh @ 2026-03-04  7:48 UTC (permalink / raw)
  To: Andy Lutomirski, 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, Huacai Chen, WANG Xuerui,
	Thomas Bogendoerfer, Heiko Carstens, Vasily Gorbik,
	Alexander Gordeev, Christian Borntraeger, Sven Schnelle,
	Shannon Nelson, Thomas Gleixner, Christophe Leroy
  Cc: linux-kernel, sparclinux, linux-kselftest, linux-arm-kernel,
	linuxppc-dev, loongarch, linux-mips, linux-s390,
	Thomas Weißschuh, Arnd Bergmann, Thomas Gleixner

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.

Tested on a Niagara T4 and QEMU.

This has emantic conflicts with
* "vdso: Reject absolute relocations during build" [0]
* "vDSO: Respect COMPAT_32BIT_TIME" [1]

But I expect both other serieses to need more discussions.

[0] https://lore.kernel.org/lkml/20250812-vdso-absolute-reloc-v4-0-61a8b615e5ec@linutronix.de/
[1] https://lore.kernel.org/lkml/20260227-vdso-compat_32bit_time-v1-0-3f0286a7bac3@linutronix.de/

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
---
Changes in v6:
- Provide statically allocated during early boot to avoid canges to the rng core
- Use non-compound data pages
- Reword commit messages
- Rebase on v7.0-rc1
- Link to v5: https://lore.kernel.org/r/20251106-vdso-sparc64-generic-2-v5-0-97ff2b6542f7@linutronix.de

Changes in v5:
- Merge the patches for 'struct page' mapping and dynamic allocation
- Zero out newly-allocated data pages
- Pick up review tags
- Link to v4: https://lore.kernel.org/r/20251014-vdso-sparc64-generic-2-v4-0-e0607bf49dea@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 (13):
      vdso/datastore: Reduce scope of some variables in vvar_fault()
      vdso/datastore: Drop inclusion of linux/mmap_lock.h
      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/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 ++-------------------
 include/linux/clocksource.h                |   6 +-
 include/linux/vdso_datastore.h             |   6 +
 init/main.c                                |   2 +
 kernel/time/Kconfig                        |   4 -
 lib/vdso/datastore.c                       |  97 +++++---
 27 files changed, 375 insertions(+), 943 deletions(-)
---
base-commit: f02e02079ac56b44ff89d4c2189cf7185ab794f3
change-id: 20250722-vdso-sparc64-generic-2-25f2e058e92c

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



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

end of thread, other threads:[~2026-03-05 15:18 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-04  7:48 [PATCH v6 00/14] sparc64: vdso: Switch to the generic vDSO library Thomas Weißschuh
2026-03-04  7:48 ` [PATCH v6 01/14] vdso/datastore: Reduce scope of some variables in vvar_fault() Thomas Weißschuh
2026-03-04  8:10   ` Christophe Leroy (CS GROUP)
2026-03-04  7:48 ` [PATCH v6 02/14] vdso/datastore: Drop inclusion of linux/mmap_lock.h Thomas Weißschuh
2026-03-04  8:11   ` Christophe Leroy (CS GROUP)
2026-03-04  7:49 ` [PATCH v6 03/14] vdso/datastore: Allocate data pages dynamically Thomas Weißschuh
2026-03-04  8:49   ` Christophe Leroy (CS GROUP)
2026-03-04  7:49 ` [PATCH v6 04/14] sparc64: vdso: Link with -z noexecstack Thomas Weißschuh
2026-03-04  7:49 ` [PATCH v6 05/14] sparc64: vdso: Remove obsolete "fake section table" reservation Thomas Weißschuh
2026-03-04  7:49 ` [PATCH v6 06/14] sparc64: vdso: Replace code patching with runtime conditional Thomas Weißschuh
2026-03-04  7:49 ` [PATCH v6 07/14] sparc64: vdso: Move hardware counter read into header Thomas Weißschuh
2026-03-04  7:49 ` [PATCH v6 08/14] sparc64: vdso: Move syscall fallbacks " Thomas Weißschuh
2026-03-04  7:49 ` [PATCH v6 09/14] sparc64: vdso: Introduce vdso/processor.h Thomas Weißschuh
2026-03-04  7:49 ` [PATCH v6 10/14] sparc64: vdso: Switch to the generic vDSO library Thomas Weißschuh
2026-03-04  7:49 ` [PATCH v6 11/14] sparc64: vdso2c: Drop sym_vvar_start handling Thomas Weißschuh
2026-03-04  7:49 ` [PATCH v6 12/14] sparc64: vdso2c: Remove symbol handling Thomas Weißschuh
2026-03-04  7:49 ` [PATCH v6 13/14] sparc64: vdso: Implement clock_gettime64() Thomas Weißschuh
2026-03-04  7:49 ` [PATCH v6 14/14] clocksource: remove ARCH_CLOCKSOURCE_DATA Thomas Weißschuh
2026-03-05 15:17 ` [PATCH v6 00/14] sparc64: vdso: Switch to the generic vDSO library Nathaniel Roach

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox