From: Linus Torvalds Date: Wed, 11 Feb 2026 03:34:26 +0000 (-0800) Subject: Merge tag 'x86_entry_for_7.0-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git... X-Git-Tag: ceph-for-7.0-rc4~274 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6f7e6393d1ce636bb7ec77a7fe7b77458fddf701;p=ceph-client.git Merge tag 'x86_entry_for_7.0-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull x86 entry code updates from Dave Hansen: "This is entirely composed of a set of long overdue VDSO cleanups. They makes the VDSO build much more logical and zap quite a bit of old cruft. It also results in a coveted net-code-removal diffstat" * tag 'x86_entry_for_7.0-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/entry/vdso: Add vdso2c to .gitignore x86/entry/vdso32: Omit '.cfi_offset eflags' for LLVM < 16 MAINTAINERS: Adjust vdso file entry in INTEL SGX x86/entry/vdso/selftest: Update location of vgetrandom-chacha.S x86/entry/vdso: Fix filtering of vdso compiler flags x86/entry/vdso: Update the object paths for "make vdso_install" x86/entry/vdso32: When using int $0x80, use it directly x86/cpufeature: Replace X86_FEATURE_SYSENTER32 with X86_FEATURE_SYSFAST32 x86/vdso: Abstract out vdso system call internals x86/entry/vdso: Include GNU_PROPERTY and GNU_STACK PHDRs x86/entry/vdso32: Remove open-coded DWARF in sigreturn.S x86/entry/vdso32: Remove SYSCALL_ENTER_KERNEL macro in sigreturn.S x86/entry/vdso32: Don't rely on int80_landing_pad for adjusting ip x86/entry/vdso: Refactor the vdso build x86/entry/vdso: Move vdso2c to arch/x86/tools x86/entry/vdso: Rename vdso_image_* to vdso*_image --- 6f7e6393d1ce636bb7ec77a7fe7b77458fddf701 diff --cc arch/x86/entry/vdso/common/vclock_gettime.c index 000000000000,0debc194bd78..027b7e88d753 mode 000000,100644..100644 --- a/arch/x86/entry/vdso/common/vclock_gettime.c +++ b/arch/x86/entry/vdso/common/vclock_gettime.c @@@ -1,0 -1,77 +1,85 @@@ + // SPDX-License-Identifier: GPL-2.0-only + /* + * Fast user context implementation of clock_gettime, gettimeofday, and time. + * + * Copyright 2006 Andi Kleen, SUSE Labs. + * Copyright 2019 ARM Limited + * + * 32 Bit compat layer by Stefani Seibold + * sponsored by Rohde & Schwarz GmbH & Co. KG Munich/Germany + */ + #include + #include + #include + #include + + #include "../../../../lib/vdso/gettimeofday.c" + + int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz) + { + return __cvdso_gettimeofday(tv, tz); + } + + int gettimeofday(struct __kernel_old_timeval *, struct timezone *) + __attribute__((weak, alias("__vdso_gettimeofday"))); + + __kernel_old_time_t __vdso_time(__kernel_old_time_t *t) + { + return __cvdso_time(t); + } + + __kernel_old_time_t time(__kernel_old_time_t *t) __attribute__((weak, alias("__vdso_time"))); + + + #if defined(CONFIG_X86_64) && !defined(BUILD_VDSO32_64) + /* both 64-bit and x32 use these */ + int __vdso_clock_gettime(clockid_t clock, struct __kernel_timespec *ts) + { + return __cvdso_clock_gettime(clock, ts); + } + + int clock_gettime(clockid_t, struct __kernel_timespec *) + __attribute__((weak, alias("__vdso_clock_gettime"))); + + int __vdso_clock_getres(clockid_t clock, + struct __kernel_timespec *res) + { + return __cvdso_clock_getres(clock, res); + } + int clock_getres(clockid_t, struct __kernel_timespec *) + __attribute__((weak, alias("__vdso_clock_getres"))); + + #else + /* i386 only */ + int __vdso_clock_gettime(clockid_t clock, struct old_timespec32 *ts) + { + return __cvdso_clock_gettime32(clock, ts); + } + + int clock_gettime(clockid_t, struct old_timespec32 *) + __attribute__((weak, alias("__vdso_clock_gettime"))); + + int __vdso_clock_gettime64(clockid_t clock, struct __kernel_timespec *ts) + { + return __cvdso_clock_gettime(clock, ts); + } + + int clock_gettime64(clockid_t, struct __kernel_timespec *) + __attribute__((weak, alias("__vdso_clock_gettime64"))); + + int __vdso_clock_getres(clockid_t clock, struct old_timespec32 *res) + { + return __cvdso_clock_getres_time32(clock, res); + } + + int clock_getres(clockid_t, struct old_timespec32 *) + __attribute__((weak, alias("__vdso_clock_getres"))); ++ ++int __vdso_clock_getres_time64(clockid_t clock, struct __kernel_timespec *ts) ++{ ++ return __cvdso_clock_getres(clock, ts); ++} ++ ++int clock_getres_time64(clockid_t, struct __kernel_timespec *) ++ __attribute__((weak, alias("__vdso_clock_getres_time64"))); + #endif diff --cc arch/x86/entry/vdso/common/vgetcpu.c index 000000000000,e4640306b2e3..6381b472b7c5 mode 000000,100644..100644 --- a/arch/x86/entry/vdso/common/vgetcpu.c +++ b/arch/x86/entry/vdso/common/vgetcpu.c @@@ -1,0 -1,22 +1,21 @@@ + // SPDX-License-Identifier: GPL-2.0-only + /* + * Copyright 2006 Andi Kleen, SUSE Labs. + * + * Fast user context implementation of getcpu() + */ + + #include -#include + #include + #include + + notrace long -__vdso_getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *unused) ++__vdso_getcpu(unsigned *cpu, unsigned *node, void *unused) + { + vdso_read_cpunode(cpu, node); + + return 0; + } + -long getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *tcache) ++long getcpu(unsigned *cpu, unsigned *node, void *tcache) + __attribute__((weak, alias("__vdso_getcpu"))); diff --cc tools/testing/selftests/vDSO/vgetrandom-chacha.S index 8c3cbf4dfd6a,10f982157a1f..16f985b089d4 --- a/tools/testing/selftests/vDSO/vgetrandom-chacha.S +++ b/tools/testing/selftests/vDSO/vgetrandom-chacha.S @@@ -14,7 -14,7 +14,7 @@@ #elif defined(__riscv) && __riscv_xlen == 64 #include "../../../../arch/riscv/kernel/vdso/vgetrandom-chacha.S" #elif defined(__s390x__) -#include "../../../../arch/s390/kernel/vdso64/vgetrandom-chacha.S" +#include "../../../../arch/s390/kernel/vdso/vgetrandom-chacha.S" #elif defined(__x86_64__) - #include "../../../../arch/x86/entry/vdso/vgetrandom-chacha.S" + #include "../../../../arch/x86/entry/vdso/vdso64/vgetrandom-chacha.S" #endif