ARM: VDSO: remove cntvct_ok global variable

Message ID 20231103075800.3254680-1-linux@rasmusvillemoes.dk
State New
Headers
Series ARM: VDSO: remove cntvct_ok global variable |

Commit Message

Rasmus Villemoes Nov. 3, 2023, 7:57 a.m. UTC
  The cntvct_ok variable has not had any external user since commit
c7a18100bdff ("lib/vdso: Avoid highres update if clocksource is not
VDSO capable").

It also only has one user in vdso.c, once during init, so rather than
having the caller of patch_vdso() initialize cntvct_ok, just call
cntvct_functional() directly and avoid the global variable entirely.

Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
---
 arch/arm/include/asm/vdso/vsyscall.h |  1 -
 arch/arm/kernel/vdso.c               | 10 +++-------
 2 files changed, 3 insertions(+), 8 deletions(-)
  

Comments

Vincenzo Frascino Nov. 3, 2023, 8:35 a.m. UTC | #1
On 11/3/23 07:57, Rasmus Villemoes wrote:
> The cntvct_ok variable has not had any external user since commit
> c7a18100bdff ("lib/vdso: Avoid highres update if clocksource is not
> VDSO capable").
> 
> It also only has one user in vdso.c, once during init, so rather than
> having the caller of patch_vdso() initialize cntvct_ok, just call
> cntvct_functional() directly and avoid the global variable entirely.
> 
> Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>

Fine by me.

Reviewed-by: Vincenzo Frascino <vincenzo.frascino@arm.com>

> ---
>  arch/arm/include/asm/vdso/vsyscall.h |  1 -
>  arch/arm/kernel/vdso.c               | 10 +++-------
>  2 files changed, 3 insertions(+), 8 deletions(-)
> 
> diff --git a/arch/arm/include/asm/vdso/vsyscall.h b/arch/arm/include/asm/vdso/vsyscall.h
> index 47e41ae8ccd0..9a2cd2673a82 100644
> --- a/arch/arm/include/asm/vdso/vsyscall.h
> +++ b/arch/arm/include/asm/vdso/vsyscall.h
> @@ -9,7 +9,6 @@
>  #include <asm/cacheflush.h>
>  
>  extern struct vdso_data *vdso_data;
> -extern bool cntvct_ok;
>  
>  /*
>   * Update the vDSO data page to keep in sync with kernel timekeeping.
> diff --git a/arch/arm/kernel/vdso.c b/arch/arm/kernel/vdso.c
> index f297d66a8a76..ba87ffc6f194 100644
> --- a/arch/arm/kernel/vdso.c
> +++ b/arch/arm/kernel/vdso.c
> @@ -67,11 +67,9 @@ struct elfinfo {
>  	char		*dynstr;	/* ptr to .dynstr section */
>  };
>  
> -/* Cached result of boot-time check for whether the arch timer exists,
> - * and if so, whether the virtual counter is useable.
> +/* Boot-time check for whether the arch timer exists, and if so,
> + * whether the virtual counter is useable.
>   */
> -bool cntvct_ok __ro_after_init;
> -
>  static bool __init cntvct_functional(void)
>  {
>  	struct device_node *np;
> @@ -172,7 +170,7 @@ static void __init patch_vdso(void *ehdr)
>  	 * want programs to incur the slight additional overhead of
>  	 * dispatching through the VDSO only to fall back to syscalls.
>  	 */
> -	if (!cntvct_ok) {
> +	if (!cntvct_functional()) {
>  		vdso_nullpatch_one(&einfo, "__vdso_gettimeofday");
>  		vdso_nullpatch_one(&einfo, "__vdso_clock_gettime");
>  		vdso_nullpatch_one(&einfo, "__vdso_clock_gettime64");
> @@ -213,8 +211,6 @@ static int __init vdso_init(void)
>  	vdso_total_pages = 1; /* for the data/vvar page */
>  	vdso_total_pages += text_pages;
>  
> -	cntvct_ok = cntvct_functional();
> -
>  	patch_vdso(vdso_start);
>  
>  	return 0;
  

Patch

diff --git a/arch/arm/include/asm/vdso/vsyscall.h b/arch/arm/include/asm/vdso/vsyscall.h
index 47e41ae8ccd0..9a2cd2673a82 100644
--- a/arch/arm/include/asm/vdso/vsyscall.h
+++ b/arch/arm/include/asm/vdso/vsyscall.h
@@ -9,7 +9,6 @@ 
 #include <asm/cacheflush.h>
 
 extern struct vdso_data *vdso_data;
-extern bool cntvct_ok;
 
 /*
  * Update the vDSO data page to keep in sync with kernel timekeeping.
diff --git a/arch/arm/kernel/vdso.c b/arch/arm/kernel/vdso.c
index f297d66a8a76..ba87ffc6f194 100644
--- a/arch/arm/kernel/vdso.c
+++ b/arch/arm/kernel/vdso.c
@@ -67,11 +67,9 @@  struct elfinfo {
 	char		*dynstr;	/* ptr to .dynstr section */
 };
 
-/* Cached result of boot-time check for whether the arch timer exists,
- * and if so, whether the virtual counter is useable.
+/* Boot-time check for whether the arch timer exists, and if so,
+ * whether the virtual counter is useable.
  */
-bool cntvct_ok __ro_after_init;
-
 static bool __init cntvct_functional(void)
 {
 	struct device_node *np;
@@ -172,7 +170,7 @@  static void __init patch_vdso(void *ehdr)
 	 * want programs to incur the slight additional overhead of
 	 * dispatching through the VDSO only to fall back to syscalls.
 	 */
-	if (!cntvct_ok) {
+	if (!cntvct_functional()) {
 		vdso_nullpatch_one(&einfo, "__vdso_gettimeofday");
 		vdso_nullpatch_one(&einfo, "__vdso_clock_gettime");
 		vdso_nullpatch_one(&einfo, "__vdso_clock_gettime64");
@@ -213,8 +211,6 @@  static int __init vdso_init(void)
 	vdso_total_pages = 1; /* for the data/vvar page */
 	vdso_total_pages += text_pages;
 
-	cntvct_ok = cntvct_functional();
-
 	patch_vdso(vdso_start);
 
 	return 0;