From nobody Sun Feb 8 23:57:51 2026 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B82AE37A489 for ; Wed, 14 Jan 2026 07:35:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768376155; cv=none; b=S9SC6V8TYjjQfZmmqm+kgQt6ZszHkUfoQKUmYOVT3up/It8BKKonU1oTk8OhK6U0skoHp7ibcb9c5x8jaFXrd7N5ivN7DU7uuxa6qCBsltcGfn0Xv3sbfjXObJ62ViDo/uAsLStxJouv2oows/rgnKgl63tErZIbNhQ0MsNvA68= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768376155; c=relaxed/simple; bh=O0kt2kF37a6pM7CkVXq0/fhz7df+ATaG10dREhHdPFU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=XwlnNSnjmdtZ/+yU6ieCi1+br6NS2EAVWAHqcBWywUUGmwnV7C0nqbIBvDirtuPdoXckClu77iM4ZzchYeu/TURq5UhslrxvuQPNIRd0SwDdN3oZ9ymY55upmzzInnEc/oPPsGTK1n/tbueXSNzW8w9XnGCnNVuXaej/IaBFYNk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=YS+Yueel; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=m0r8Rn4S; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="YS+Yueel"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="m0r8Rn4S" From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1768375574; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ZNfW6fCJn3/7zRW9ZKkcVeSEbV0IWfCasJe1y+WFrk4=; b=YS+YueelaNxBRCDeORwRFVvGVVt39VrPHYZ6WgmNmBXzBZ6gwZ1e0Kex228U5cm5XhbQz/ iq2BDg33eO19NKIf2q+s8ugbr46mYI0R6XpDJGJHjpc5F5NlT2uD9zOVqmnsGXFZIvimqo 0oamTq8WYG0l5B17qv5bXO0qv9g3s+ilM0KTC6brWDOeK1GGWl/Zyc50dCtmLXy+U8tQEK SA0nyVz+DUouGTY4ZhFX5Ev2znN8NPHt9VXxARx1JTxN93ubdubONNRueJVZ1+0NlqKLla D2AyeV81VITMV1yhBULLfoh8ETmSEjgllbj9M+VNlke9vHSfbnOfrfnisZVdJQ== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1768375574; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ZNfW6fCJn3/7zRW9ZKkcVeSEbV0IWfCasJe1y+WFrk4=; b=m0r8Rn4Sf9U4xoSQDTooAH5siLDeNt9m4AAVqOY7DUDOJzSU22Iq6RRVMNJhKEKt4QeFRC 9FBPjNjK8gVjb6Dw== Date: Wed, 14 Jan 2026 08:26:05 +0100 Subject: [PATCH] powerpc/vdso: Provide clock_getres_time64() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260114-vdso-powerpc-align-v1-1-acf09373d568@linutronix.de> X-B4-Tracking: v=1; b=H4sIAAxFZ2kC/x3MTQqAIBBA4avErBvwJ6S6SrSwnGogVBQqCO+et PwW772QKTFlGJsXEl2cOfgK2TawHtbvhOyqQQllhJQaL5cDxnBTiivak3eP1NOgjemcVQvUMCb a+Pmn01zKB5Pf9lZkAAAA X-Change-ID: 20260113-vdso-powerpc-align-e8e93664da2b To: Madhavan Srinivasan , Michael Ellerman , Nicholas Piggin , "Christophe Leroy (CS GROUP)" , Andy Lutomirski , Thomas Gleixner , Vincenzo Frascino Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Developer-Signature: v=1; a=ed25519-sha256; t=1768375572; l=3584; i=thomas.weissschuh@linutronix.de; s=20240209; h=from:subject:message-id; bh=O0kt2kF37a6pM7CkVXq0/fhz7df+ATaG10dREhHdPFU=; b=n8LaS2ivdOjDUFXegMaHsAePSXK4aiMyqfl6QHpKYUMvmFsZ7URYFZBsPtVtcFRfY7eIGZAH+ yGpd0VcIrGCDcrNikPk8l7cmSxtd6avttr2twi3ynxGaHzPubF8fMlW X-Developer-Key: i=thomas.weissschuh@linutronix.de; a=ed25519; pk=pfvxvpFUDJV2h2nY0FidLUml22uGLSjByFbM6aqQQws= For consistency with __vdso_clock_gettime64() there should also be a 64-bit variant of clock_getres(). This will allow the extension of CONFIG_COMPAT_32BIT_TIME to the vDSO and finally the removal of 32-bit time types from the kernel and UAPI. Signed-off-by: Thomas Wei=C3=9Fschuh Reviewed-by: Christophe Leroy (CS GROUP) --- Based on tip/timers/vdso. This was missed in the original vdso_getres_time64() series as powerpc does not use include/vdso/gettime.h. --- arch/powerpc/include/asm/vdso/gettimeofday.h | 2 ++ arch/powerpc/kernel/vdso/gettimeofday.S | 12 ++++++++++++ arch/powerpc/kernel/vdso/vdso32.lds.S | 1 + arch/powerpc/kernel/vdso/vgettimeofday.c | 6 ++++++ 4 files changed, 21 insertions(+) diff --git a/arch/powerpc/include/asm/vdso/gettimeofday.h b/arch/powerpc/in= clude/asm/vdso/gettimeofday.h index ab3df12c8d94..8ea397e26ad0 100644 --- a/arch/powerpc/include/asm/vdso/gettimeofday.h +++ b/arch/powerpc/include/asm/vdso/gettimeofday.h @@ -135,6 +135,8 @@ int __c_kernel_clock_gettime64(clockid_t clock, struct = __kernel_timespec *ts, const struct vdso_time_data *vd); int __c_kernel_clock_getres(clockid_t clock_id, struct old_timespec32 *res, const struct vdso_time_data *vd); +int __c_kernel_clock_getres_time64(clockid_t clock_id, struct __kernel_tim= espec *res, + const struct vdso_time_data *vd); #endif int __c_kernel_gettimeofday(struct __kernel_old_timeval *tv, struct timezo= ne *tz, const struct vdso_time_data *vd); diff --git a/arch/powerpc/kernel/vdso/gettimeofday.S b/arch/powerpc/kernel/= vdso/gettimeofday.S index 79c967212444..1c8e51691bf8 100644 --- a/arch/powerpc/kernel/vdso/gettimeofday.S +++ b/arch/powerpc/kernel/vdso/gettimeofday.S @@ -103,6 +103,18 @@ V_FUNCTION_BEGIN(__kernel_clock_getres) cvdso_call __c_kernel_clock_getres V_FUNCTION_END(__kernel_clock_getres) =20 +/* + * Exact prototype of clock_getres_time64() + * + * int __kernel_clock_getres(clockid_t clock_id, struct __timespec64 *res); + * + */ +#ifndef __powerpc64__ +V_FUNCTION_BEGIN(__kernel_clock_getres_time64) + cvdso_call __c_kernel_clock_getres_time64 +V_FUNCTION_END(__kernel_clock_getres_time64) +#endif + =20 /* * Exact prototype of time() diff --git a/arch/powerpc/kernel/vdso/vdso32.lds.S b/arch/powerpc/kernel/vd= so/vdso32.lds.S index 72a1012b8a20..3f384a2526ae 100644 --- a/arch/powerpc/kernel/vdso/vdso32.lds.S +++ b/arch/powerpc/kernel/vdso/vdso32.lds.S @@ -124,6 +124,7 @@ VERSION __kernel_clock_gettime; __kernel_clock_gettime64; __kernel_clock_getres; + __kernel_clock_getres_time64; __kernel_time; __kernel_get_tbfreq; __kernel_sync_dicache; diff --git a/arch/powerpc/kernel/vdso/vgettimeofday.c b/arch/powerpc/kernel= /vdso/vgettimeofday.c index 6f5167d81af5..3c194e1ab562 100644 --- a/arch/powerpc/kernel/vdso/vgettimeofday.c +++ b/arch/powerpc/kernel/vdso/vgettimeofday.c @@ -35,6 +35,12 @@ int __c_kernel_clock_getres(clockid_t clock_id, struct o= ld_timespec32 *res, { return __cvdso_clock_getres_time32_data(vd, clock_id, res); } + +int __c_kernel_clock_getres_time64(clockid_t clock_id, struct __kernel_tim= espec *res, + const struct vdso_time_data *vd) +{ + return __cvdso_clock_getres_data(vd, clock_id, res); +} #endif =20 int __c_kernel_gettimeofday(struct __kernel_old_timeval *tv, struct timezo= ne *tz, --- base-commit: 0e55e7636697077abceb2301d7d2718d75c34389 change-id: 20260113-vdso-powerpc-align-e8e93664da2b Best regards, --=20 Thomas Wei=C3=9Fschuh