linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Vincenzo Frascino <vincenzo.frascino@arm.com>
To: linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, clang-built-linux@googlegroups.com,
	linux-mips@vger.kernel.org, x86@kernel.org
Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will@kernel.org>, Arnd Bergmann <arnd@arndb.de>,
	Russell King <linux@armlinux.org.uk>,
	Paul Burton <paul.burton@mips.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Andy Lutomirski <luto@kernel.org>, Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>, Stephen Boyd <sboyd@kernel.org>,
	Mark Salyzyn <salyzyn@android.com>,
	Kees Cook <keescook@chromium.org>,
	Peter Collingbourne <pcc@google.com>,
	Dmitry Safonov <0x7f454c46@gmail.com>,
	Andrei Vagin <avagin@openvz.org>,
	Nick Desaulniers <ndesaulniers@google.com>,
	Marc Zyngier <maz@kernel.org>,
	Mark Rutland <Mark.Rutland@arm.com>
Subject: [PATCH v5 25/26] lib: vdso: Enable common headers
Date: Fri, 20 Mar 2020 14:53:50 +0000	[thread overview]
Message-ID: <20200320145351.32292-26-vincenzo.frascino@arm.com> (raw)
In-Reply-To: <20200320145351.32292-1-vincenzo.frascino@arm.com>

The vDSO library should only include the necessary headers required for
a userspace library (UAPI and a minimal set of kernel headers). To make
this possible it is necessary to isolate from the kernel headers the
common parts that are strictly necessary to build the library.

Refactor the unified vdso code to use the common headers.

Cc: Andy Lutomirski <luto@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 include/vdso/datapage.h | 33 ++++++++++++++++++++++++++++++---
 lib/vdso/gettimeofday.c | 22 ----------------------
 2 files changed, 30 insertions(+), 25 deletions(-)

diff --git a/include/vdso/datapage.h b/include/vdso/datapage.h
index 30c4cb0428d1..5cbc9fcbfd45 100644
--- a/include/vdso/datapage.h
+++ b/include/vdso/datapage.h
@@ -4,9 +4,20 @@
 
 #ifndef __ASSEMBLY__
 
-#include <linux/bits.h>
-#include <linux/time.h>
-#include <linux/types.h>
+#include <linux/compiler.h>
+#include <uapi/linux/time.h>
+#include <uapi/linux/types.h>
+#include <uapi/asm-generic/errno-base.h>
+
+#include <vdso/bits.h>
+#include <vdso/clocksource.h>
+#include <vdso/ktime.h>
+#include <vdso/limits.h>
+#include <vdso/math64.h>
+#include <vdso/processor.h>
+#include <vdso/time.h>
+#include <vdso/time32.h>
+#include <vdso/time64.h>
 
 #define VDSO_BASES	(CLOCK_TAI + 1)
 #define VDSO_HRES	(BIT(CLOCK_REALTIME)		| \
@@ -99,6 +110,22 @@ struct vdso_data {
  */
 extern struct vdso_data _vdso_data[CS_BASES] __attribute__((visibility("hidden")));
 
+/*
+ * The generic vDSO implementation requires that gettimeofday.h
+ * provides:
+ * - __arch_get_vdso_data(): to get the vdso datapage.
+ * - __arch_get_hw_counter(): to get the hw counter based on the
+ *   clock_mode.
+ * - gettimeofday_fallback(): fallback for gettimeofday.
+ * - clock_gettime_fallback(): fallback for clock_gettime.
+ * - clock_getres_fallback(): fallback for clock_getres.
+ */
+#ifdef ENABLE_COMPAT_VDSO
+#include <asm/vdso/compat_gettimeofday.h>
+#else
+#include <asm/vdso/gettimeofday.h>
+#endif /* ENABLE_COMPAT_VDSO */
+
 #endif /* !__ASSEMBLY__ */
 
 #endif /* __VDSO_DATAPAGE_H */
diff --git a/lib/vdso/gettimeofday.c b/lib/vdso/gettimeofday.c
index 72d282ffd156..a2909af4b924 100644
--- a/lib/vdso/gettimeofday.c
+++ b/lib/vdso/gettimeofday.c
@@ -2,31 +2,9 @@
 /*
  * Generic userspace implementations of gettimeofday() and similar.
  */
-#include <linux/compiler.h>
-#include <linux/math64.h>
-#include <linux/time.h>
-#include <linux/kernel.h>
-#include <linux/hrtimer_defs.h>
-#include <linux/clocksource.h>
 #include <vdso/datapage.h>
 #include <vdso/helpers.h>
 
-/*
- * The generic vDSO implementation requires that gettimeofday.h
- * provides:
- * - __arch_get_vdso_data(): to get the vdso datapage.
- * - __arch_get_hw_counter(): to get the hw counter based on the
- *   clock_mode.
- * - gettimeofday_fallback(): fallback for gettimeofday.
- * - clock_gettime_fallback(): fallback for clock_gettime.
- * - clock_getres_fallback(): fallback for clock_getres.
- */
-#ifdef ENABLE_COMPAT_VDSO
-#include <asm/vdso/compat_gettimeofday.h>
-#else
-#include <asm/vdso/gettimeofday.h>
-#endif /* ENABLE_COMPAT_VDSO */
-
 #ifndef vdso_calc_delta
 /*
  * Default implementation which works for all sane clocksources. That
-- 
2.25.1


  parent reply	other threads:[~2020-03-20 14:56 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 01/26] linux/const.h: Extract common header " Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 02/26] linux/bits.h: " Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 03/26] linux/limits.h: " Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 04/26] x86:Introduce asm/vdso/clocksource.h Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] x86: Introduce asm/vdso/clocksource.h tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 05/26] arm: " Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 06/26] arm64: " Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 07/26] mips: " Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 08/26] linux/clocksource.h: Extract common header for vDSO Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 09/26] linux/math64.h: " Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 10/26] linux/time.h: " Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 11/26] linux/time32.h: " Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 12/26] linux/time64.h: " Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 13/26] linux/jiffies.h: " Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 14/26] linux/ktime.h: " Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 15/26] common: Introduce processor.h Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 16/26] scripts: Fix the inclusion order in modpost Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 17/26] linux/elfnote.h: Replace elf.h with UAPI equivalent Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 18/26] arm64: vdso32: Code clean up Vincenzo Frascino
2020-03-20 15:26   ` Catalin Marinas
2020-03-20 23:21   ` Stephen Boyd
2020-03-21 12:06     ` Catalin Marinas
2020-03-20 14:53 ` [PATCH v5 19/26] arm64: Introduce asm/vdso/processor.h Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 20/26] arm64: vdso: Include common headers in the vdso library Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 21/26] arm64: vdso32: " Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 22/26] mips: vdso: Enable mips to use common headers Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 23/26] x86: vdso: Enable x86 " Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] x86/vdso: " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 24/26] arm: vdso: Enable arm " Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` Vincenzo Frascino [this message]
2020-03-21 14:33   ` [tip: timers/core] lib/vdso: Enable " tip-bot2 for Vincenzo Frascino
2020-03-20 14:53 ` [PATCH v5 26/26] arm64: vdso32: Enable Clang Compilation Vincenzo Frascino
2020-03-20 23:15   ` Stephen Boyd
2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200320145351.32292-26-vincenzo.frascino@arm.com \
    --to=vincenzo.frascino@arm.com \
    --cc=0x7f454c46@gmail.com \
    --cc=Mark.Rutland@arm.com \
    --cc=arnd@arndb.de \
    --cc=avagin@openvz.org \
    --cc=bp@alien8.de \
    --cc=catalin.marinas@arm.com \
    --cc=clang-built-linux@googlegroups.com \
    --cc=keescook@chromium.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=luto@kernel.org \
    --cc=maz@kernel.org \
    --cc=mingo@redhat.com \
    --cc=ndesaulniers@google.com \
    --cc=paul.burton@mips.com \
    --cc=pcc@google.com \
    --cc=salyzyn@android.com \
    --cc=sboyd@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=will@kernel.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).