linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v5 00/26] Introduce common headers for vDSO
@ 2020-03-20 14:53 Vincenzo Frascino
  2020-03-20 14:53 ` [PATCH v5 01/26] linux/const.h: Extract common header " Vincenzo Frascino
                   ` (25 more replies)
  0 siblings, 26 replies; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

Back in July last year we started having a problem in building compat
vDSOs on arm64 [1] [2] that was not present when the arm64 porting to
the Unified vDSO was done. In particular when the compat vDSO on such
architecture is built with gcc it generates the warning below:

In file included from ./arch/arm64/include/asm/thread_info.h:17:0,
                 from ./include/linux/thread_info.h:38,
                 from ./arch/arm64/include/asm/preempt.h:5,
                 from ./include/linux/preempt.h:78,
                 from ./include/linux/spinlock.h:51,
                 from ./include/linux/seqlock.h:36,
                 from ./include/linux/time.h:6,
                 from ./lib/vdso/gettimeofday.c:7,
                 from <command-line>:0:
./arch/arm64/include/asm/memory.h: In function ‘__tag_set’:
./arch/arm64/include/asm/memory.h:233:15: warning: cast from pointer
                to integer of different size [-Wpointer-to-int-cast]
  u64 __addr = (u64)addr & ~__tag_shifted(0xff);
               ^
In file included from ./arch/arm64/include/asm/pgtable-hwdef.h:8:0,
                 from ./arch/arm64/include/asm/processor.h:34,
                 from ./arch/arm64/include/asm/elf.h:118,
                 from ./include/linux/elf.h:5,
                 from ./include/linux/elfnote.h:62,
                 from arch/arm64/kernel/vdso32/note.c:11:
./arch/arm64/include/asm/memory.h: In function ‘__tag_set’:
./arch/arm64/include/asm/memory.h:233:15: warning: cast from pointer
                to integer of different size [-Wpointer-to-int-cast]
  u64 __addr = (u64)addr & ~__tag_shifted(0xff);

The same porting does not build at all when the selected compiler is
clang.

I started an investigation to try to understand better the problem and
after various discussions at Plumbers and Recipes last year the
conclusion was that the vDSO library as it stands it is including more
headers that it needs. In particular, being a user-space library, it
should require only the UAPI and a minimal vDSO kernel interface instead
of all the kernel-related inline functions which are not directly used
and in some cases can have side effects.

To solve the problem, I decided to use the approach below:
  * Extract from include/linux/ the vDSO required kernel interface
    and place it in include/vdso/
  * Make sure that where meaningful the kernel includes "vdso" headers.
  * Limit the vDSO library to include headers coming only from UAPI
    and "vdso" (with 2 exceptions compiler.h for barriers and param.h
    for HZ).
  * Adapt all the architectures that support the unified vDSO library
    to use "vdso" headers.

According to me this approach allows up to exercise a better control on
what the vDSO library can include and to prevent potential issues in
future.

This patch series contains the implementation of the described approach.

The "vdso" headers have been verified on all the architectures that support
unified vDSO using the vdsotest [3] testsuite for what concerns the vDSO part
and randconfig to verify that they are included in the correct places.

To simplify the testing, a copy of the patchset on top of a recent linux
tree can be found at [4].

[1] https://github.com/ClangBuiltLinux/linux/issues/595
[2] https://lore.kernel.org/lkml/20190926151704.GH9689@arrakis.emea.arm.com
[3] https://github.com/nathanlynch/vdsotest
[4] git://linux-arm.org/linux-vf.git common-headers/v5

Changes:
--------
v5:
  - Dropped UINTPTR_MAX check patch.
  - Introduced a new headers cleanup patch.
  - Addressed review comments.
  - Rebased on tip/timers/core.
v4:
  - Dropped vDSO optimization patch for arm64.
  - Introduce a new patch to drop dependency from TASK_SIZE_32 on arm64.
  - Addressed review comments.
  - Rebased on tip/timers/core.
v3:
  - Changed the namespace from common to vdso.
  - Addressed an issue involving parisc modules compilation.
  - Added vdso header for clocksource.h.
  - Addressed review comments.
  - Rebased on tip/timers/core.
v2:
  - Addressed review comments for clang support.
  - Rebased on 5.6-rc4.

Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Paul Burton <paul.burton@mips.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Stephen Boyd <sboyd@kernel.org>
Cc: Mark Salyzyn <salyzyn@android.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Peter Collingbourne <pcc@google.com>
Cc: Dmitry Safonov <0x7f454c46@gmail.com>
Cc: Andrei Vagin <avagin@openvz.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Marc Zyngier <maz@kernel.org>
Cc: Mark Rutland <Mark.Rutland@arm.com>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>

Vincenzo Frascino (26):
  linux/const.h: Extract common header for vDSO
  linux/bits.h: Extract common header for vDSO
  linux/limits.h: Extract common header for vDSO
  x86:Introduce asm/vdso/clocksource.h
  arm: Introduce asm/vdso/clocksource.h
  arm64: Introduce asm/vdso/clocksource.h
  mips: Introduce asm/vdso/clocksource.h
  linux/clocksource.h: Extract common header for vDSO
  linux/math64.h: Extract common header for vDSO
  linux/time.h: Extract common header for vDSO
  linux/time32.h: Extract common header for vDSO
  linux/time64.h: Extract common header for vDSO
  linux/jiffies.h: Extract common header for vDSO
  linux/ktime.h: Extract common header for vDSO
  common: Introduce processor.h
  scripts: Fix the inclusion order in modpost
  linux/elfnote.h: Replace elf.h with UAPI equivalent
  arm64: vdso32: Code clean up
  arm64: Introduce asm/vdso/processor.h
  arm64: vdso: Include common headers in the vdso library
  arm64: vdso32: Include common headers in the vdso library
  mips: vdso: Enable mips to use common headers
  x86: vdso: Enable x86 to use common headers
  arm: vdso: Enable arm to use common headers
  lib: vdso: Enable common headers
  arm64: vdso32: Enable Clang Compilation

 arch/arm/include/asm/clocksource.h            |  6 +--
 arch/arm/include/asm/cp15.h                   | 20 +---------
 arch/arm/include/asm/processor.h              | 11 +-----
 arch/arm/include/asm/vdso/clocksource.h       |  8 ++++
 arch/arm/include/asm/vdso/cp15.h              | 38 +++++++++++++++++++
 arch/arm/include/asm/vdso/gettimeofday.h      |  4 +-
 arch/arm/include/asm/vdso/processor.h         | 22 +++++++++++
 arch/arm64/include/asm/clocksource.h          |  3 +-
 arch/arm64/include/asm/processor.h            |  7 +---
 arch/arm64/include/asm/vdso/clocksource.h     |  8 ++++
 .../include/asm/vdso/compat_gettimeofday.h    | 10 +----
 arch/arm64/include/asm/vdso/gettimeofday.h    |  1 -
 arch/arm64/include/asm/vdso/processor.h       | 17 +++++++++
 arch/arm64/kernel/vdso/vgettimeofday.c        |  2 -
 arch/arm64/kernel/vdso32/Makefile             | 11 ++++++
 arch/arm64/kernel/vdso32/vgettimeofday.c      | 14 -------
 arch/mips/include/asm/clocksource.h           |  4 +-
 arch/mips/include/asm/processor.h             | 16 +-------
 arch/mips/include/asm/vdso/clocksource.h      |  9 +++++
 arch/mips/include/asm/vdso/gettimeofday.h     |  4 --
 arch/mips/include/asm/vdso/processor.h        | 27 +++++++++++++
 arch/x86/include/asm/clocksource.h            |  5 +--
 arch/x86/include/asm/processor.h              | 12 +-----
 arch/x86/include/asm/vdso/clocksource.h       | 10 +++++
 arch/x86/include/asm/vdso/processor.h         | 23 +++++++++++
 include/linux/bits.h                          |  2 +-
 include/linux/clocksource.h                   | 11 +-----
 include/linux/const.h                         |  5 +--
 include/linux/elfnote.h                       |  2 +-
 include/linux/jiffies.h                       |  4 +-
 include/linux/ktime.h                         |  9 +----
 include/linux/limits.h                        | 13 +------
 include/linux/math64.h                        | 20 +---------
 include/linux/time.h                          |  5 +--
 include/linux/time32.h                        | 14 +------
 include/linux/time64.h                        | 10 +----
 include/vdso/bits.h                           |  9 +++++
 include/vdso/clocksource.h                    | 23 +++++++++++
 include/vdso/const.h                          | 10 +++++
 include/vdso/datapage.h                       | 33 ++++++++++++++--
 include/vdso/jiffies.h                        | 11 ++++++
 include/vdso/ktime.h                          | 16 ++++++++
 include/vdso/limits.h                         | 19 ++++++++++
 include/vdso/math64.h                         | 24 ++++++++++++
 include/vdso/processor.h                      | 14 +++++++
 include/vdso/time.h                           | 12 ++++++
 include/vdso/time32.h                         | 17 +++++++++
 include/vdso/time64.h                         | 14 +++++++
 lib/vdso/gettimeofday.c                       | 22 -----------
 scripts/mod/modpost.c                         |  6 ++-
 50 files changed, 404 insertions(+), 213 deletions(-)
 create mode 100644 arch/arm/include/asm/vdso/clocksource.h
 create mode 100644 arch/arm/include/asm/vdso/cp15.h
 create mode 100644 arch/arm/include/asm/vdso/processor.h
 create mode 100644 arch/arm64/include/asm/vdso/clocksource.h
 create mode 100644 arch/arm64/include/asm/vdso/processor.h
 create mode 100644 arch/mips/include/asm/vdso/clocksource.h
 create mode 100644 arch/mips/include/asm/vdso/processor.h
 create mode 100644 arch/x86/include/asm/vdso/clocksource.h
 create mode 100644 arch/x86/include/asm/vdso/processor.h
 create mode 100644 include/vdso/bits.h
 create mode 100644 include/vdso/clocksource.h
 create mode 100644 include/vdso/const.h
 create mode 100644 include/vdso/jiffies.h
 create mode 100644 include/vdso/ktime.h
 create mode 100644 include/vdso/limits.h
 create mode 100644 include/vdso/math64.h
 create mode 100644 include/vdso/processor.h
 create mode 100644 include/vdso/time.h
 create mode 100644 include/vdso/time32.h
 create mode 100644 include/vdso/time64.h

-- 
2.25.1


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

* [PATCH v5 01/26] linux/const.h: Extract common header for vDSO
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
@ 2020-03-20 14:53 ` 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
                   ` (24 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

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.

Split const.h into linux and common headers to make the latter suitable
for inclusion in the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 include/linux/const.h |  5 +----
 include/vdso/const.h  | 10 ++++++++++
 2 files changed, 11 insertions(+), 4 deletions(-)
 create mode 100644 include/vdso/const.h

diff --git a/include/linux/const.h b/include/linux/const.h
index 7b55a55f5911..81b8aae5a855 100644
--- a/include/linux/const.h
+++ b/include/linux/const.h
@@ -1,9 +1,6 @@
 #ifndef _LINUX_CONST_H
 #define _LINUX_CONST_H
 
-#include <uapi/linux/const.h>
-
-#define UL(x)		(_UL(x))
-#define ULL(x)		(_ULL(x))
+#include <vdso/const.h>
 
 #endif /* _LINUX_CONST_H */
diff --git a/include/vdso/const.h b/include/vdso/const.h
new file mode 100644
index 000000000000..94b385ad438d
--- /dev/null
+++ b/include/vdso/const.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_CONST_H
+#define __VDSO_CONST_H
+
+#include <uapi/linux/const.h>
+
+#define UL(x)		(_UL(x))
+#define ULL(x)		(_ULL(x))
+
+#endif /* __VDSO_CONST_H */
-- 
2.25.1


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

* [PATCH v5 02/26] linux/bits.h: Extract common header for vDSO
  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-20 14:53 ` 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
                   ` (23 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

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.

Split bits.h into linux and common headers to make the latter suitable
for inclusion in the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 include/linux/bits.h | 2 +-
 include/vdso/bits.h  | 9 +++++++++
 2 files changed, 10 insertions(+), 1 deletion(-)
 create mode 100644 include/vdso/bits.h

diff --git a/include/linux/bits.h b/include/linux/bits.h
index 669d69441a62..a740bbcf3cd2 100644
--- a/include/linux/bits.h
+++ b/include/linux/bits.h
@@ -3,9 +3,9 @@
 #define __LINUX_BITS_H
 
 #include <linux/const.h>
+#include <vdso/bits.h>
 #include <asm/bitsperlong.h>
 
-#define BIT(nr)			(UL(1) << (nr))
 #define BIT_ULL(nr)		(ULL(1) << (nr))
 #define BIT_MASK(nr)		(UL(1) << ((nr) % BITS_PER_LONG))
 #define BIT_WORD(nr)		((nr) / BITS_PER_LONG)
diff --git a/include/vdso/bits.h b/include/vdso/bits.h
new file mode 100644
index 000000000000..6d005a1f5d94
--- /dev/null
+++ b/include/vdso/bits.h
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_BITS_H
+#define __VDSO_BITS_H
+
+#include <vdso/const.h>
+
+#define BIT(nr)			(UL(1) << (nr))
+
+#endif	/* __VDSO_BITS_H */
-- 
2.25.1


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

* [PATCH v5 03/26] linux/limits.h: Extract common header for vDSO
  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-20 14:53 ` [PATCH v5 02/26] linux/bits.h: " Vincenzo Frascino
@ 2020-03-20 14:53 ` 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
                   ` (22 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

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.

Split limits.h into linux and common headers to make the latter suitable
for inclusion in the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 include/linux/limits.h | 13 +------------
 include/vdso/limits.h  | 19 +++++++++++++++++++
 2 files changed, 20 insertions(+), 12 deletions(-)
 create mode 100644 include/vdso/limits.h

diff --git a/include/linux/limits.h b/include/linux/limits.h
index 76afcd24ff8c..7fc497ee1393 100644
--- a/include/linux/limits.h
+++ b/include/linux/limits.h
@@ -4,19 +4,8 @@
 
 #include <uapi/linux/limits.h>
 #include <linux/types.h>
+#include <vdso/limits.h>
 
-#define USHRT_MAX	((unsigned short)~0U)
-#define SHRT_MAX	((short)(USHRT_MAX >> 1))
-#define SHRT_MIN	((short)(-SHRT_MAX - 1))
-#define INT_MAX		((int)(~0U >> 1))
-#define INT_MIN		(-INT_MAX - 1)
-#define UINT_MAX	(~0U)
-#define LONG_MAX	((long)(~0UL >> 1))
-#define LONG_MIN	(-LONG_MAX - 1)
-#define ULONG_MAX	(~0UL)
-#define LLONG_MAX	((long long)(~0ULL >> 1))
-#define LLONG_MIN	(-LLONG_MAX - 1)
-#define ULLONG_MAX	(~0ULL)
 #define SIZE_MAX	(~(size_t)0)
 #define PHYS_ADDR_MAX	(~(phys_addr_t)0)
 
diff --git a/include/vdso/limits.h b/include/vdso/limits.h
new file mode 100644
index 000000000000..0197888ad0e0
--- /dev/null
+++ b/include/vdso/limits.h
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_LIMITS_H
+#define __VDSO_LIMITS_H
+
+#define USHRT_MAX	((unsigned short)~0U)
+#define SHRT_MAX	((short)(USHRT_MAX >> 1))
+#define SHRT_MIN	((short)(-SHRT_MAX - 1))
+#define INT_MAX		((int)(~0U >> 1))
+#define INT_MIN		(-INT_MAX - 1)
+#define UINT_MAX	(~0U)
+#define LONG_MAX	((long)(~0UL >> 1))
+#define LONG_MIN	(-LONG_MAX - 1)
+#define ULONG_MAX	(~0UL)
+#define LLONG_MAX	((long long)(~0ULL >> 1))
+#define LLONG_MIN	(-LLONG_MAX - 1)
+#define ULLONG_MAX	(~0ULL)
+#define UINTPTR_MAX	ULONG_MAX
+
+#endif /* __VDSO_LIMITS_H */
-- 
2.25.1


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

* [PATCH v5 04/26] x86:Introduce asm/vdso/clocksource.h
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (2 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 03/26] linux/limits.h: " Vincenzo Frascino
@ 2020-03-20 14:53 ` 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
                   ` (21 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

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.

Introduce asm/vdso/clocksource.h to contain all the arm64 specific
functions that are suitable for vDSO inclusion.

This header will be required by a future patch that will generalize
vdso/clocksource.h.

Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 arch/x86/include/asm/clocksource.h      |  5 +----
 arch/x86/include/asm/vdso/clocksource.h | 10 ++++++++++
 2 files changed, 11 insertions(+), 4 deletions(-)
 create mode 100644 arch/x86/include/asm/vdso/clocksource.h

diff --git a/arch/x86/include/asm/clocksource.h b/arch/x86/include/asm/clocksource.h
index d561db67f96d..dc9dc7b3911a 100644
--- a/arch/x86/include/asm/clocksource.h
+++ b/arch/x86/include/asm/clocksource.h
@@ -4,10 +4,7 @@
 #ifndef _ASM_X86_CLOCKSOURCE_H
 #define _ASM_X86_CLOCKSOURCE_H
 
-#define VDSO_ARCH_CLOCKMODES	\
-	VDSO_CLOCKMODE_TSC,	\
-	VDSO_CLOCKMODE_PVCLOCK,	\
-	VDSO_CLOCKMODE_HVCLOCK
+#include <asm/vdso/clocksource.h>
 
 extern unsigned int vclocks_used;
 
diff --git a/arch/x86/include/asm/vdso/clocksource.h b/arch/x86/include/asm/vdso/clocksource.h
new file mode 100644
index 000000000000..119ac8612d89
--- /dev/null
+++ b/arch/x86/include/asm/vdso/clocksource.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ASM_VDSO_CLOCKSOURCE_H
+#define __ASM_VDSO_CLOCKSOURCE_H
+
+#define VDSO_ARCH_CLOCKMODES	\
+	VDSO_CLOCKMODE_TSC,	\
+	VDSO_CLOCKMODE_PVCLOCK,	\
+	VDSO_CLOCKMODE_HVCLOCK
+
+#endif /* __ASM_VDSO_CLOCKSOURCE_H */
-- 
2.25.1


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

* [PATCH v5 05/26] arm: Introduce asm/vdso/clocksource.h
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (3 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 04/26] x86:Introduce asm/vdso/clocksource.h Vincenzo Frascino
@ 2020-03-20 14:53 ` 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
                   ` (20 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

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.

Introduce asm/vdso/clocksource.h to contain all the arm64 specific
functions that are suitable for vDSO inclusion.

This header will be required by a future patch that will generalize
vdso/clocksource.h.

Cc: Russell King <linux@armlinux.org.uk>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 arch/arm/include/asm/clocksource.h      | 6 +++---
 arch/arm/include/asm/vdso/clocksource.h | 8 ++++++++
 2 files changed, 11 insertions(+), 3 deletions(-)
 create mode 100644 arch/arm/include/asm/vdso/clocksource.h

diff --git a/arch/arm/include/asm/clocksource.h b/arch/arm/include/asm/clocksource.h
index 73beb7f131de..13651c731a81 100644
--- a/arch/arm/include/asm/clocksource.h
+++ b/arch/arm/include/asm/clocksource.h
@@ -1,7 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 #ifndef _ASM_CLOCKSOURCE_H
 #define _ASM_CLOCKSOURCE_H
 
-#define VDSO_ARCH_CLOCKMODES	\
-	VDSO_CLOCKMODE_ARCHTIMER
+#include <asm/vdso/clocksource.h>
 
-#endif
+#endif /* _ASM_CLOCKSOURCE_H */
diff --git a/arch/arm/include/asm/vdso/clocksource.h b/arch/arm/include/asm/vdso/clocksource.h
new file mode 100644
index 000000000000..50c0b19fb755
--- /dev/null
+++ b/arch/arm/include/asm/vdso/clocksource.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ASM_VDSOCLOCKSOURCE_H
+#define __ASM_VDSOCLOCKSOURCE_H
+
+#define VDSO_ARCH_CLOCKMODES	\
+	VDSO_CLOCKMODE_ARCHTIMER
+
+#endif /* __ASM_VDSOCLOCKSOURCE_H */
-- 
2.25.1


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

* [PATCH v5 06/26] arm64: Introduce asm/vdso/clocksource.h
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (4 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 05/26] arm: " Vincenzo Frascino
@ 2020-03-20 14:53 ` 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
                   ` (19 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

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.

Introduce asm/vdso/clocksource.h to contain all the arm64 specific
functions that are suitable for vDSO inclusion.

This header will be required by a future patch that will generalize
vdso/clocksource.h.

Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 arch/arm64/include/asm/clocksource.h      | 3 +--
 arch/arm64/include/asm/vdso/clocksource.h | 8 ++++++++
 2 files changed, 9 insertions(+), 2 deletions(-)
 create mode 100644 arch/arm64/include/asm/vdso/clocksource.h

diff --git a/arch/arm64/include/asm/clocksource.h b/arch/arm64/include/asm/clocksource.h
index eb82e9d95c5d..482185566b0c 100644
--- a/arch/arm64/include/asm/clocksource.h
+++ b/arch/arm64/include/asm/clocksource.h
@@ -2,7 +2,6 @@
 #ifndef _ASM_CLOCKSOURCE_H
 #define _ASM_CLOCKSOURCE_H
 
-#define VDSO_ARCH_CLOCKMODES	\
-	VDSO_CLOCKMODE_ARCHTIMER
+#include <asm/vdso/clocksource.h>
 
 #endif
diff --git a/arch/arm64/include/asm/vdso/clocksource.h b/arch/arm64/include/asm/vdso/clocksource.h
new file mode 100644
index 000000000000..df6ea65c1dec
--- /dev/null
+++ b/arch/arm64/include/asm/vdso/clocksource.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ASM_VDSOCLOCKSOURCE_H
+#define __ASM_VDSOCLOCKSOURCE_H
+
+#define VDSO_ARCH_CLOCKMODES	\
+	VDSO_CLOCKMODE_ARCHTIMER
+
+#endif
-- 
2.25.1


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

* [PATCH v5 07/26] mips: Introduce asm/vdso/clocksource.h
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (5 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 06/26] arm64: " Vincenzo Frascino
@ 2020-03-20 14:53 ` 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
                   ` (18 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland, Paul Burton

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.

Introduce asm/vdso/clocksource.h to contain all the arm64 specific
functions that are suitable for vDSO inclusion.

This header will be required by a future patch that will generalize
vdso/clocksource.h.

Cc: Paul Burton <paulburton@kernel.org>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 arch/mips/include/asm/clocksource.h      | 4 +---
 arch/mips/include/asm/vdso/clocksource.h | 9 +++++++++
 2 files changed, 10 insertions(+), 3 deletions(-)
 create mode 100644 arch/mips/include/asm/vdso/clocksource.h

diff --git a/arch/mips/include/asm/clocksource.h b/arch/mips/include/asm/clocksource.h
index de659cae0d4e..2f1ebbea3d72 100644
--- a/arch/mips/include/asm/clocksource.h
+++ b/arch/mips/include/asm/clocksource.h
@@ -6,8 +6,6 @@
 #ifndef __ASM_CLOCKSOURCE_H
 #define __ASM_CLOCKSOURCE_H
 
-#define VDSO_ARCH_CLOCKMODES	\
-	VDSO_CLOCKMODE_R4K,	\
-	VDSO_CLOCKMODE_GIC
+#include <asm/vdso/clocksource.h>
 
 #endif /* __ASM_CLOCKSOURCE_H */
diff --git a/arch/mips/include/asm/vdso/clocksource.h b/arch/mips/include/asm/vdso/clocksource.h
new file mode 100644
index 000000000000..510e1671d898
--- /dev/null
+++ b/arch/mips/include/asm/vdso/clocksource.h
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+#ifndef __ASM_VDSOCLOCKSOURCE_H
+#define __ASM_VDSOCLOCKSOURCE_H
+
+#define VDSO_ARCH_CLOCKMODES	\
+	VDSO_CLOCKMODE_R4K,	\
+	VDSO_CLOCKMODE_GIC
+
+#endif /* __ASM_VDSOCLOCKSOURCE_H */
-- 
2.25.1


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

* [PATCH v5 08/26] linux/clocksource.h: Extract common header for vDSO
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (6 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 07/26] mips: " Vincenzo Frascino
@ 2020-03-20 14:53 ` 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
                   ` (17 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

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.

Split clocksource.h into linux and common headers to make the latter
suitable for inclusion in the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 include/linux/clocksource.h | 11 +----------
 include/vdso/clocksource.h  | 23 +++++++++++++++++++++++
 2 files changed, 24 insertions(+), 10 deletions(-)
 create mode 100644 include/vdso/clocksource.h

diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h
index 02e3282719bd..86d143db6523 100644
--- a/include/linux/clocksource.h
+++ b/include/linux/clocksource.h
@@ -28,16 +28,7 @@ struct module;
 #include <asm/clocksource.h>
 #endif
 
-enum vdso_clock_mode {
-	VDSO_CLOCKMODE_NONE,
-#ifdef CONFIG_GENERIC_GETTIMEOFDAY
-	VDSO_ARCH_CLOCKMODES,
-#endif
-	VDSO_CLOCKMODE_MAX,
-
-	/* Indicator for time namespace VDSO */
-	VDSO_CLOCKMODE_TIMENS = INT_MAX
-};
+#include <vdso/clocksource.h>
 
 /**
  * struct clocksource - hardware abstraction for a free running counter
diff --git a/include/vdso/clocksource.h b/include/vdso/clocksource.h
new file mode 100644
index 000000000000..ab58330e4e5d
--- /dev/null
+++ b/include/vdso/clocksource.h
@@ -0,0 +1,23 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_CLOCKSOURCE_H
+#define __VDSO_CLOCKSOURCE_H
+
+#include <vdso/limits.h>
+
+#if defined(CONFIG_ARCH_CLOCKSOURCE_DATA) || \
+	defined(CONFIG_GENERIC_GETTIMEOFDAY)
+#include <asm/vdso/clocksource.h>
+#endif /* CONFIG_ARCH_CLOCKSOURCE_DATA || CONFIG_GENERIC_GETTIMEOFDAY */
+
+enum vdso_clock_mode {
+	VDSO_CLOCKMODE_NONE,
+#ifdef CONFIG_GENERIC_GETTIMEOFDAY
+	VDSO_ARCH_CLOCKMODES,
+#endif
+	VDSO_CLOCKMODE_MAX,
+
+	/* Indicator for time namespace VDSO */
+	VDSO_CLOCKMODE_TIMENS = INT_MAX
+};
+
+#endif /* __VDSO_CLOCKSOURCE_H */
-- 
2.25.1


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

* [PATCH v5 09/26] linux/math64.h: Extract common header for vDSO
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (7 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 08/26] linux/clocksource.h: Extract common header for vDSO Vincenzo Frascino
@ 2020-03-20 14:53 ` 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
                   ` (16 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

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.

Split math64.h into linux and common headers to make the latter suitable
for inclusion in the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 include/linux/math64.h | 20 +-------------------
 include/vdso/math64.h  | 24 ++++++++++++++++++++++++
 2 files changed, 25 insertions(+), 19 deletions(-)
 create mode 100644 include/vdso/math64.h

diff --git a/include/linux/math64.h b/include/linux/math64.h
index 65bef21cdddb..11a267413e8e 100644
--- a/include/linux/math64.h
+++ b/include/linux/math64.h
@@ -3,6 +3,7 @@
 #define _LINUX_MATH64_H
 
 #include <linux/types.h>
+#include <vdso/math64.h>
 #include <asm/div64.h>
 
 #if BITS_PER_LONG == 64
@@ -142,25 +143,6 @@ static inline s64 div_s64(s64 dividend, s32 divisor)
 
 u32 iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder);
 
-static __always_inline u32
-__iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder)
-{
-	u32 ret = 0;
-
-	while (dividend >= divisor) {
-		/* The following asm() prevents the compiler from
-		   optimising this loop into a modulo operation.  */
-		asm("" : "+rm"(dividend));
-
-		dividend -= divisor;
-		ret++;
-	}
-
-	*remainder = dividend;
-
-	return ret;
-}
-
 #ifndef mul_u32_u32
 /*
  * Many a GCC version messes this up and generates a 64x64 mult :-(
diff --git a/include/vdso/math64.h b/include/vdso/math64.h
new file mode 100644
index 000000000000..7da703ee5561
--- /dev/null
+++ b/include/vdso/math64.h
@@ -0,0 +1,24 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_MATH64_H
+#define __VDSO_MATH64_H
+
+static __always_inline u32
+__iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder)
+{
+	u32 ret = 0;
+
+	while (dividend >= divisor) {
+		/* The following asm() prevents the compiler from
+		   optimising this loop into a modulo operation.  */
+		asm("" : "+rm"(dividend));
+
+		dividend -= divisor;
+		ret++;
+	}
+
+	*remainder = dividend;
+
+	return ret;
+}
+
+#endif /* __VDSO_MATH64_H */
-- 
2.25.1


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

* [PATCH v5 10/26] linux/time.h: Extract common header for vDSO
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (8 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 09/26] linux/math64.h: " Vincenzo Frascino
@ 2020-03-20 14:53 ` 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
                   ` (15 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

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.

Split time.h into linux and common headers to make the latter suitable
for inclusion in the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 include/linux/time.h |  5 +----
 include/vdso/time.h  | 12 ++++++++++++
 2 files changed, 13 insertions(+), 4 deletions(-)
 create mode 100644 include/vdso/time.h

diff --git a/include/linux/time.h b/include/linux/time.h
index 8ef5e5cc9f57..4c325bf44ce0 100644
--- a/include/linux/time.h
+++ b/include/linux/time.h
@@ -111,9 +111,6 @@ static inline bool itimerspec64_valid(const struct itimerspec64 *its)
  */
 #define time_between32(t, l, h) ((u32)(h) - (u32)(l) >= (u32)(t) - (u32)(l))
 
-struct timens_offset {
-	s64	sec;
-	u64	nsec;
-};
+# include <vdso/time.h>
 
 #endif
diff --git a/include/vdso/time.h b/include/vdso/time.h
new file mode 100644
index 000000000000..739f53cd2949
--- /dev/null
+++ b/include/vdso/time.h
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_TIME_H
+#define __VDSO_TIME_H
+
+#include <uapi/linux/types.h>
+
+struct timens_offset {
+	s64	sec;
+	u64	nsec;
+};
+
+#endif /* __VDSO_TIME_H */
-- 
2.25.1


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

* [PATCH v5 11/26] linux/time32.h: Extract common header for vDSO
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (9 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 10/26] linux/time.h: " Vincenzo Frascino
@ 2020-03-20 14:53 ` 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
                   ` (14 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

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.

Split time32.h into linux and common headers to make the latter suitable
for inclusion in the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 include/linux/time32.h | 14 ++------------
 include/vdso/time32.h  | 17 +++++++++++++++++
 2 files changed, 19 insertions(+), 12 deletions(-)
 create mode 100644 include/vdso/time32.h

diff --git a/include/linux/time32.h b/include/linux/time32.h
index cad4c3186002..0933f28214c0 100644
--- a/include/linux/time32.h
+++ b/include/linux/time32.h
@@ -12,19 +12,9 @@
 #include <linux/time64.h>
 #include <linux/timex.h>
 
-#define TIME_T_MAX	(__kernel_old_time_t)((1UL << ((sizeof(__kernel_old_time_t) << 3) - 1)) - 1)
-
-typedef s32		old_time32_t;
-
-struct old_timespec32 {
-	old_time32_t	tv_sec;
-	s32		tv_nsec;
-};
+#include <vdso/time32.h>
 
-struct old_timeval32 {
-	old_time32_t	tv_sec;
-	s32		tv_usec;
-};
+#define TIME_T_MAX	(__kernel_old_time_t)((1UL << ((sizeof(__kernel_old_time_t) << 3) - 1)) - 1)
 
 struct old_itimerspec32 {
 	struct old_timespec32 it_interval;
diff --git a/include/vdso/time32.h b/include/vdso/time32.h
new file mode 100644
index 000000000000..fdf56f932f67
--- /dev/null
+++ b/include/vdso/time32.h
@@ -0,0 +1,17 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_TIME32_H
+#define __VDSO_TIME32_H
+
+typedef s32		old_time32_t;
+
+struct old_timespec32 {
+	old_time32_t	tv_sec;
+	s32		tv_nsec;
+};
+
+struct old_timeval32 {
+	old_time32_t	tv_sec;
+	s32		tv_usec;
+};
+
+#endif /* __VDSO_TIME32_H */
-- 
2.25.1


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

* [PATCH v5 12/26] linux/time64.h: Extract common header for vDSO
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (10 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 11/26] linux/time32.h: " Vincenzo Frascino
@ 2020-03-20 14:53 ` 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
                   ` (13 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

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.

Split time64.h into linux and common headers to make the latter suitable
for inclusion in the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 include/linux/time64.h | 10 +---------
 include/vdso/time64.h  | 14 ++++++++++++++
 2 files changed, 15 insertions(+), 9 deletions(-)
 create mode 100644 include/vdso/time64.h

diff --git a/include/linux/time64.h b/include/linux/time64.h
index 19125489ae94..c9dcb3e5781f 100644
--- a/include/linux/time64.h
+++ b/include/linux/time64.h
@@ -3,6 +3,7 @@
 #define _LINUX_TIME64_H
 
 #include <linux/math64.h>
+#include <vdso/time64.h>
 
 typedef __s64 time64_t;
 typedef __u64 timeu64_t;
@@ -19,15 +20,6 @@ struct itimerspec64 {
 	struct timespec64 it_value;
 };
 
-/* Parameters used to convert the timespec values: */
-#define MSEC_PER_SEC	1000L
-#define USEC_PER_MSEC	1000L
-#define NSEC_PER_USEC	1000L
-#define NSEC_PER_MSEC	1000000L
-#define USEC_PER_SEC	1000000L
-#define NSEC_PER_SEC	1000000000L
-#define FSEC_PER_SEC	1000000000000000LL
-
 /* Located here for timespec[64]_valid_strict */
 #define TIME64_MAX			((s64)~((u64)1 << 63))
 #define TIME64_MIN			(-TIME64_MAX - 1)
diff --git a/include/vdso/time64.h b/include/vdso/time64.h
new file mode 100644
index 000000000000..9d43c3f5e89d
--- /dev/null
+++ b/include/vdso/time64.h
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_TIME64_H
+#define __VDSO_TIME64_H
+
+/* Parameters used to convert the timespec values: */
+#define MSEC_PER_SEC	1000L
+#define USEC_PER_MSEC	1000L
+#define NSEC_PER_USEC	1000L
+#define NSEC_PER_MSEC	1000000L
+#define USEC_PER_SEC	1000000L
+#define NSEC_PER_SEC	1000000000L
+#define FSEC_PER_SEC	1000000000000000LL
+
+#endif /* __VDSO_TIME64_H */
-- 
2.25.1


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

* [PATCH v5 13/26] linux/jiffies.h: Extract common header for vDSO
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (11 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 12/26] linux/time64.h: " Vincenzo Frascino
@ 2020-03-20 14:53 ` 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
                   ` (12 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

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.

Split jiffies.h into linux and common headers to make the latter suitable
for inclusion in the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 include/linux/jiffies.h |  4 +---
 include/vdso/jiffies.h  | 11 +++++++++++
 2 files changed, 12 insertions(+), 3 deletions(-)
 create mode 100644 include/vdso/jiffies.h

diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
index e3279ef24d28..fed6ba96c527 100644
--- a/include/linux/jiffies.h
+++ b/include/linux/jiffies.h
@@ -8,6 +8,7 @@
 #include <linux/types.h>
 #include <linux/time.h>
 #include <linux/timex.h>
+#include <vdso/jiffies.h>
 #include <asm/param.h>			/* for HZ */
 #include <generated/timeconst.h>
 
@@ -59,9 +60,6 @@
 
 extern int register_refined_jiffies(long clock_tick_rate);
 
-/* TICK_NSEC is the time between ticks in nsec assuming SHIFTED_HZ */
-#define TICK_NSEC ((NSEC_PER_SEC+HZ/2)/HZ)
-
 /* TICK_USEC is the time between ticks in usec assuming SHIFTED_HZ */
 #define TICK_USEC ((USEC_PER_SEC + HZ/2) / HZ)
 
diff --git a/include/vdso/jiffies.h b/include/vdso/jiffies.h
new file mode 100644
index 000000000000..2f9d596c8b29
--- /dev/null
+++ b/include/vdso/jiffies.h
@@ -0,0 +1,11 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_JIFFIES_H
+#define __VDSO_JIFFIES_H
+
+#include <asm/param.h>			/* for HZ */
+#include <vdso/time64.h>
+
+/* TICK_NSEC is the time between ticks in nsec assuming SHIFTED_HZ */
+#define TICK_NSEC ((NSEC_PER_SEC+HZ/2)/HZ)
+
+#endif /* __VDSO_JIFFIES_H */
-- 
2.25.1


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

* [PATCH v5 14/26] linux/ktime.h: Extract common header for vDSO
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (12 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 13/26] linux/jiffies.h: " Vincenzo Frascino
@ 2020-03-20 14:53 ` 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
                   ` (11 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

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.

Split ktime.h into linux and common headers to make the latter suitable
for inclusion in the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 include/linux/ktime.h |  9 +--------
 include/vdso/ktime.h  | 16 ++++++++++++++++
 2 files changed, 17 insertions(+), 8 deletions(-)
 create mode 100644 include/vdso/ktime.h

diff --git a/include/linux/ktime.h b/include/linux/ktime.h
index b2bb44f87f5a..1fcfce97a020 100644
--- a/include/linux/ktime.h
+++ b/include/linux/ktime.h
@@ -253,14 +253,7 @@ static inline __must_check bool ktime_to_timespec64_cond(const ktime_t kt,
 	}
 }
 
-/*
- * The resolution of the clocks. The resolution value is returned in
- * the clock_getres() system call to give application programmers an
- * idea of the (in)accuracy of timers. Timer values are rounded up to
- * this resolution values.
- */
-#define LOW_RES_NSEC		TICK_NSEC
-#define KTIME_LOW_RES		(LOW_RES_NSEC)
+#include <vdso/ktime.h>
 
 static inline ktime_t ns_to_ktime(u64 ns)
 {
diff --git a/include/vdso/ktime.h b/include/vdso/ktime.h
new file mode 100644
index 000000000000..a0fd07239e0e
--- /dev/null
+++ b/include/vdso/ktime.h
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_KTIME_H
+#define __VDSO_KTIME_H
+
+#include <vdso/jiffies.h>
+
+/*
+ * The resolution of the clocks. The resolution value is returned in
+ * the clock_getres() system call to give application programmers an
+ * idea of the (in)accuracy of timers. Timer values are rounded up to
+ * this resolution values.
+ */
+#define LOW_RES_NSEC		TICK_NSEC
+#define KTIME_LOW_RES		(LOW_RES_NSEC)
+
+#endif /* __VDSO_KTIME_H */
-- 
2.25.1


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

* [PATCH v5 15/26] common: Introduce processor.h
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (13 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 14/26] linux/ktime.h: " Vincenzo Frascino
@ 2020-03-20 14:53 ` 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
                   ` (10 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

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.

Introduce processor.h to contain all the processor specific functions
that are suitable for vDSO inclusion.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 include/vdso/processor.h | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
 create mode 100644 include/vdso/processor.h

diff --git a/include/vdso/processor.h b/include/vdso/processor.h
new file mode 100644
index 000000000000..fbe8265ea3c4
--- /dev/null
+++ b/include/vdso/processor.h
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2020 ARM Ltd.
+ */
+#ifndef __VDSO_PROCESSOR_H
+#define __VDSO_PROCESSOR_H
+
+#ifndef __ASSEMBLY__
+
+#include <asm/vdso/processor.h>
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* __VDSO_PROCESSOR_H */
-- 
2.25.1


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

* [PATCH v5 16/26] scripts: Fix the inclusion order in modpost
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (14 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 15/26] common: Introduce processor.h Vincenzo Frascino
@ 2020-03-20 14:53 ` 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
                   ` (9 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland, kbuild test robot,
	Masahiro Yamada, Michal Marek

In the process of creating the source file of a module modpost injects a
set of includes that are not required if the compilation unit is
statically built into the kernel.

The order of inclusion of the headers can cause redefinition problems
(e.g.):

   In file included from include/linux/elf.h:5:0,
                    from include/linux/module.h:18,
                    from crypto/arc4.mod.c:2:
>> arch/parisc/include/asm/elf.h:324:0: warning: "ELF_OSABI" redefined
    #define ELF_OSABI  ELFOSABI_LINUX

   In file included from include/linux/elfnote.h:62:0,
                    from include/linux/build-salt.h:4,
                    from crypto/arc4.mod.c:1:
   include/uapi/linux/elf.h:363:0: note: this is the location of
   the previous definition
    #define ELF_OSABI ELFOSABI_NONE

The issue was exposed during the development of the series [1].

[1] https://lore.kernel.org/lkml/20200306133242.26279-1-vincenzo.frascino@arm.com/

Reported-by: kbuild test robot <lkp@intel.com>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Michal Marek <michal.lkml@markovi.net>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 scripts/mod/modpost.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 7edfdb2f4497..0f354b1ee2aa 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -2251,8 +2251,12 @@ static int check_modname_len(struct module *mod)
  **/
 static void add_header(struct buffer *b, struct module *mod)
 {
-	buf_printf(b, "#include <linux/build-salt.h>\n");
 	buf_printf(b, "#include <linux/module.h>\n");
+	/*
+	 * Include build-salt.h after module.h in order to
+	 * inherit the definitions.
+	 */
+	buf_printf(b, "#include <linux/build-salt.h>\n");
 	buf_printf(b, "#include <linux/vermagic.h>\n");
 	buf_printf(b, "#include <linux/compiler.h>\n");
 	buf_printf(b, "\n");
-- 
2.25.1


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

* [PATCH v5 17/26] linux/elfnote.h: Replace elf.h with UAPI equivalent
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (15 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 16/26] scripts: Fix the inclusion order in modpost Vincenzo Frascino
@ 2020-03-20 14:53 ` 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
                   ` (8 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

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.

Replace linux/elf.h with UAPI equivalent in elfnote.h to make the header
suitable for vDSO inclusion.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 include/linux/elfnote.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/elfnote.h b/include/linux/elfnote.h
index f236f5b931b2..594d4e78654f 100644
--- a/include/linux/elfnote.h
+++ b/include/linux/elfnote.h
@@ -59,7 +59,7 @@
 	ELFNOTE_END
 
 #else	/* !__ASSEMBLER__ */
-#include <linux/elf.h>
+#include <uapi/linux/elf.h>
 /*
  * Use an anonymous structure which matches the shape of
  * Elf{32,64}_Nhdr, but includes the name and desc data.  The size and
-- 
2.25.1


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

* [PATCH v5 18/26] arm64: vdso32: Code clean up
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (16 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 17/26] linux/elfnote.h: Replace elf.h with UAPI equivalent Vincenzo Frascino
@ 2020-03-20 14:53 ` Vincenzo Frascino
  2020-03-20 15:26   ` Catalin Marinas
  2020-03-20 23:21   ` Stephen Boyd
  2020-03-20 14:53 ` [PATCH v5 19/26] arm64: Introduce asm/vdso/processor.h Vincenzo Frascino
                   ` (7 subsequent siblings)
  25 siblings, 2 replies; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

The compat vdso library had some checks that are not anymore relevant.

Remove the unused code from the compat vDSO library.

Note: This patch is preparatory for a future one that will introduce
asm/vdso/processor.h on arm64.

Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Link: https://lore.kernel.org/lkml/20200317122220.30393-19-vincenzo.frascino@arm.com
---
 arch/arm64/include/asm/vdso/compat_gettimeofday.h |  8 --------
 arch/arm64/kernel/vdso32/vgettimeofday.c          | 12 ------------
 2 files changed, 20 deletions(-)

diff --git a/arch/arm64/include/asm/vdso/compat_gettimeofday.h b/arch/arm64/include/asm/vdso/compat_gettimeofday.h
index 81b0c394f1d8..401df2bcd741 100644
--- a/arch/arm64/include/asm/vdso/compat_gettimeofday.h
+++ b/arch/arm64/include/asm/vdso/compat_gettimeofday.h
@@ -76,10 +76,6 @@ int clock_getres_fallback(clockid_t _clkid, struct __kernel_timespec *_ts)
 	register long ret asm ("r0");
 	register long nr asm("r7") = __NR_compat_clock_getres_time64;
 
-	/* The checks below are required for ABI consistency with arm */
-	if ((_clkid >= MAX_CLOCKS) && (_ts == NULL))
-		return -EINVAL;
-
 	asm volatile(
 	"       swi #0\n"
 	: "=r" (ret)
@@ -97,10 +93,6 @@ int clock_getres32_fallback(clockid_t _clkid, struct old_timespec32 *_ts)
 	register long ret asm ("r0");
 	register long nr asm("r7") = __NR_compat_clock_getres;
 
-	/* The checks below are required for ABI consistency with arm */
-	if ((_clkid >= MAX_CLOCKS) && (_ts == NULL))
-		return -EINVAL;
-
 	asm volatile(
 	"       swi #0\n"
 	: "=r" (ret)
diff --git a/arch/arm64/kernel/vdso32/vgettimeofday.c b/arch/arm64/kernel/vdso32/vgettimeofday.c
index 54fc1c2ce93f..ddbad47efaa4 100644
--- a/arch/arm64/kernel/vdso32/vgettimeofday.c
+++ b/arch/arm64/kernel/vdso32/vgettimeofday.c
@@ -11,20 +11,12 @@
 int __vdso_clock_gettime(clockid_t clock,
 			 struct old_timespec32 *ts)
 {
-	/* The checks below are required for ABI consistency with arm */
-	if ((u32)ts >= TASK_SIZE_32)
-		return -EFAULT;
-
 	return __cvdso_clock_gettime32(clock, ts);
 }
 
 int __vdso_clock_gettime64(clockid_t clock,
 			   struct __kernel_timespec *ts)
 {
-	/* The checks below are required for ABI consistency with arm */
-	if ((u32)ts >= TASK_SIZE_32)
-		return -EFAULT;
-
 	return __cvdso_clock_gettime(clock, ts);
 }
 
@@ -37,10 +29,6 @@ int __vdso_gettimeofday(struct __kernel_old_timeval *tv,
 int __vdso_clock_getres(clockid_t clock_id,
 			struct old_timespec32 *res)
 {
-	/* The checks below are required for ABI consistency with arm */
-	if ((u32)res >= TASK_SIZE_32)
-		return -EFAULT;
-
 	return __cvdso_clock_getres_time32(clock_id, res);
 }
 
-- 
2.25.1


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

* [PATCH v5 19/26] arm64: Introduce asm/vdso/processor.h
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (17 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 18/26] arm64: vdso32: Code clean up Vincenzo Frascino
@ 2020-03-20 14:53 ` 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
                   ` (6 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

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.

Introduce asm/vdso/processor.h to contain all the arm64 specific
functions that are suitable for vDSO inclusion.

Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 arch/arm64/include/asm/processor.h      |  7 ++-----
 arch/arm64/include/asm/vdso/processor.h | 17 +++++++++++++++++
 2 files changed, 19 insertions(+), 5 deletions(-)
 create mode 100644 arch/arm64/include/asm/vdso/processor.h

diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
index 5ba63204d078..e51ef2dc5749 100644
--- a/arch/arm64/include/asm/processor.h
+++ b/arch/arm64/include/asm/processor.h
@@ -28,6 +28,8 @@
 #include <linux/string.h>
 #include <linux/thread_info.h>
 
+#include <vdso/processor.h>
+
 #include <asm/alternative.h>
 #include <asm/cpufeature.h>
 #include <asm/hw_breakpoint.h>
@@ -256,11 +258,6 @@ extern void release_thread(struct task_struct *);
 
 unsigned long get_wchan(struct task_struct *p);
 
-static inline void cpu_relax(void)
-{
-	asm volatile("yield" ::: "memory");
-}
-
 /* Thread switching */
 extern struct task_struct *cpu_switch_to(struct task_struct *prev,
 					 struct task_struct *next);
diff --git a/arch/arm64/include/asm/vdso/processor.h b/arch/arm64/include/asm/vdso/processor.h
new file mode 100644
index 000000000000..ff830b766ad2
--- /dev/null
+++ b/arch/arm64/include/asm/vdso/processor.h
@@ -0,0 +1,17 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2020 ARM Ltd.
+ */
+#ifndef __ASM_VDSO_PROCESSOR_H
+#define __ASM_VDSO_PROCESSOR_H
+
+#ifndef __ASSEMBLY__
+
+static inline void cpu_relax(void)
+{
+	asm volatile("yield" ::: "memory");
+}
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* __ASM_VDSO_PROCESSOR_H */
-- 
2.25.1


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

* [PATCH v5 20/26] arm64: vdso: Include common headers in the vdso library
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (18 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 19/26] arm64: Introduce asm/vdso/processor.h Vincenzo Frascino
@ 2020-03-20 14:53 ` 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
                   ` (5 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

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 vdso implementation to include common headers.

Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 arch/arm64/include/asm/vdso/gettimeofday.h | 1 -
 arch/arm64/kernel/vdso/vgettimeofday.c     | 2 --
 2 files changed, 3 deletions(-)

diff --git a/arch/arm64/include/asm/vdso/gettimeofday.h b/arch/arm64/include/asm/vdso/gettimeofday.h
index 5a534432aa5d..afba6ba332f8 100644
--- a/arch/arm64/include/asm/vdso/gettimeofday.h
+++ b/arch/arm64/include/asm/vdso/gettimeofday.h
@@ -8,7 +8,6 @@
 #ifndef __ASSEMBLY__
 
 #include <asm/unistd.h>
-#include <uapi/linux/time.h>
 
 #define VDSO_HAS_CLOCK_GETRES		1
 
diff --git a/arch/arm64/kernel/vdso/vgettimeofday.c b/arch/arm64/kernel/vdso/vgettimeofday.c
index 747635501a14..4236cf34d7d9 100644
--- a/arch/arm64/kernel/vdso/vgettimeofday.c
+++ b/arch/arm64/kernel/vdso/vgettimeofday.c
@@ -5,8 +5,6 @@
  * Copyright (C) 2018 ARM Limited
  *
  */
-#include <linux/time.h>
-#include <linux/types.h>
 
 int __kernel_clock_gettime(clockid_t clock,
 			   struct __kernel_timespec *ts)
-- 
2.25.1


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

* [PATCH v5 21/26] arm64: vdso32: Include common headers in the vdso library
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (19 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 20/26] arm64: vdso: Include common headers in the vdso library Vincenzo Frascino
@ 2020-03-20 14:53 ` 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
                   ` (4 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

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 vdso32 implementation to include common headers.

Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 arch/arm64/include/asm/vdso/compat_gettimeofday.h | 2 +-
 arch/arm64/kernel/vdso32/vgettimeofday.c          | 2 --
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/arch/arm64/include/asm/vdso/compat_gettimeofday.h b/arch/arm64/include/asm/vdso/compat_gettimeofday.h
index 401df2bcd741..b6907ae78e53 100644
--- a/arch/arm64/include/asm/vdso/compat_gettimeofday.h
+++ b/arch/arm64/include/asm/vdso/compat_gettimeofday.h
@@ -8,7 +8,7 @@
 #ifndef __ASSEMBLY__
 
 #include <asm/unistd.h>
-#include <uapi/linux/time.h>
+#include <asm/errno.h>
 
 #include <asm/vdso/compat_barrier.h>
 
diff --git a/arch/arm64/kernel/vdso32/vgettimeofday.c b/arch/arm64/kernel/vdso32/vgettimeofday.c
index ddbad47efaa4..5acff29c5991 100644
--- a/arch/arm64/kernel/vdso32/vgettimeofday.c
+++ b/arch/arm64/kernel/vdso32/vgettimeofday.c
@@ -5,8 +5,6 @@
  * Copyright (C) 2018 ARM Limited
  *
  */
-#include <linux/time.h>
-#include <linux/types.h>
 
 int __vdso_clock_gettime(clockid_t clock,
 			 struct old_timespec32 *ts)
-- 
2.25.1


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

* [PATCH v5 22/26] mips: vdso: Enable mips to use common headers
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (20 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 21/26] arm64: vdso32: " Vincenzo Frascino
@ 2020-03-20 14:53 ` 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
                   ` (3 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland, Paul Burton

Enable mips to use only the common headers in the implementation of
the vDSO library.

Cc: Paul Burton <paulburton@kernel.org>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 arch/mips/include/asm/processor.h         | 16 +-------------
 arch/mips/include/asm/vdso/gettimeofday.h |  4 ----
 arch/mips/include/asm/vdso/processor.h    | 27 +++++++++++++++++++++++
 3 files changed, 28 insertions(+), 19 deletions(-)
 create mode 100644 arch/mips/include/asm/vdso/processor.h

diff --git a/arch/mips/include/asm/processor.h b/arch/mips/include/asm/processor.h
index 7619ad319400..4c9cc667f3ed 100644
--- a/arch/mips/include/asm/processor.h
+++ b/arch/mips/include/asm/processor.h
@@ -22,6 +22,7 @@
 #include <asm/dsemul.h>
 #include <asm/mipsregs.h>
 #include <asm/prefetch.h>
+#include <asm/vdso/processor.h>
 
 /*
  * System setup and hardware flags..
@@ -385,21 +386,6 @@ unsigned long get_wchan(struct task_struct *p);
 #define KSTK_ESP(tsk) (task_pt_regs(tsk)->regs[29])
 #define KSTK_STATUS(tsk) (task_pt_regs(tsk)->cp0_status)
 
-#ifdef CONFIG_CPU_LOONGSON64
-/*
- * Loongson-3's SFB (Store-Fill-Buffer) may buffer writes indefinitely when a
- * tight read loop is executed, because reads take priority over writes & the
- * hardware (incorrectly) doesn't ensure that writes will eventually occur.
- *
- * Since spin loops of any kind should have a cpu_relax() in them, force an SFB
- * flush from cpu_relax() such that any pending writes will become visible as
- * expected.
- */
-#define cpu_relax()	smp_mb()
-#else
-#define cpu_relax()	barrier()
-#endif
-
 /*
  * Return_address is a replacement for __builtin_return_address(count)
  * which on certain architectures cannot reasonably be implemented in GCC
diff --git a/arch/mips/include/asm/vdso/gettimeofday.h b/arch/mips/include/asm/vdso/gettimeofday.h
index 88c3de1bdf22..c63ddcaea54c 100644
--- a/arch/mips/include/asm/vdso/gettimeofday.h
+++ b/arch/mips/include/asm/vdso/gettimeofday.h
@@ -13,12 +13,8 @@
 
 #ifndef __ASSEMBLY__
 
-#include <linux/compiler.h>
-#include <linux/time.h>
-
 #include <asm/vdso/vdso.h>
 #include <asm/clocksource.h>
-#include <asm/io.h>
 #include <asm/unistd.h>
 #include <asm/vdso.h>
 
diff --git a/arch/mips/include/asm/vdso/processor.h b/arch/mips/include/asm/vdso/processor.h
new file mode 100644
index 000000000000..511c95d735e6
--- /dev/null
+++ b/arch/mips/include/asm/vdso/processor.h
@@ -0,0 +1,27 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2020 ARM Ltd.
+ */
+#ifndef __ASM_VDSO_PROCESSOR_H
+#define __ASM_VDSO_PROCESSOR_H
+
+#ifndef __ASSEMBLY__
+
+#ifdef CONFIG_CPU_LOONGSON64
+/*
+ * Loongson-3's SFB (Store-Fill-Buffer) may buffer writes indefinitely when a
+ * tight read loop is executed, because reads take priority over writes & the
+ * hardware (incorrectly) doesn't ensure that writes will eventually occur.
+ *
+ * Since spin loops of any kind should have a cpu_relax() in them, force an SFB
+ * flush from cpu_relax() such that any pending writes will become visible as
+ * expected.
+ */
+#define cpu_relax()	smp_mb()
+#else
+#define cpu_relax()	barrier()
+#endif
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* __ASM_VDSO_PROCESSOR_H */
-- 
2.25.1


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

* [PATCH v5 23/26] x86: vdso: Enable x86 to use common headers
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (21 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 22/26] mips: vdso: Enable mips to use common headers Vincenzo Frascino
@ 2020-03-20 14:53 ` 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
                   ` (2 subsequent siblings)
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

Enable x86 to use only the common headers in the implementation
of the vDSO library.

Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 arch/x86/include/asm/processor.h      | 12 +-----------
 arch/x86/include/asm/vdso/processor.h | 23 +++++++++++++++++++++++
 2 files changed, 24 insertions(+), 11 deletions(-)
 create mode 100644 arch/x86/include/asm/vdso/processor.h

diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
index 09705ccc393c..94789db550df 100644
--- a/arch/x86/include/asm/processor.h
+++ b/arch/x86/include/asm/processor.h
@@ -26,6 +26,7 @@ struct vm86;
 #include <asm/fpu/types.h>
 #include <asm/unwind_hints.h>
 #include <asm/vmxfeatures.h>
+#include <asm/vdso/processor.h>
 
 #include <linux/personality.h>
 #include <linux/cache.h>
@@ -677,17 +678,6 @@ static inline unsigned int cpuid_edx(unsigned int op)
 	return edx;
 }
 
-/* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */
-static __always_inline void rep_nop(void)
-{
-	asm volatile("rep; nop" ::: "memory");
-}
-
-static __always_inline void cpu_relax(void)
-{
-	rep_nop();
-}
-
 /*
  * This function forces the icache and prefetched instruction stream to
  * catch up with reality in two very specific cases:
diff --git a/arch/x86/include/asm/vdso/processor.h b/arch/x86/include/asm/vdso/processor.h
new file mode 100644
index 000000000000..57b1a7034c64
--- /dev/null
+++ b/arch/x86/include/asm/vdso/processor.h
@@ -0,0 +1,23 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2020 ARM Ltd.
+ */
+#ifndef __ASM_VDSO_PROCESSOR_H
+#define __ASM_VDSO_PROCESSOR_H
+
+#ifndef __ASSEMBLY__
+
+/* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */
+static __always_inline void rep_nop(void)
+{
+	asm volatile("rep; nop" ::: "memory");
+}
+
+static __always_inline void cpu_relax(void)
+{
+	rep_nop();
+}
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* __ASM_VDSO_PROCESSOR_H */
-- 
2.25.1


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

* [PATCH v5 24/26] arm: vdso: Enable arm to use common headers
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (22 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 23/26] x86: vdso: Enable x86 " Vincenzo Frascino
@ 2020-03-20 14:53 ` Vincenzo Frascino
  2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
  2020-03-20 14:53 ` [PATCH v5 25/26] lib: vdso: Enable " Vincenzo Frascino
  2020-03-20 14:53 ` [PATCH v5 26/26] arm64: vdso32: Enable Clang Compilation Vincenzo Frascino
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

Enable arm to use only the common headers in the implementation
of the vDSO library.

Cc: Russell King <linux@armlinux.org.uk>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 arch/arm/include/asm/cp15.h              | 20 +------------
 arch/arm/include/asm/processor.h         | 11 +------
 arch/arm/include/asm/vdso/cp15.h         | 38 ++++++++++++++++++++++++
 arch/arm/include/asm/vdso/gettimeofday.h |  4 +--
 arch/arm/include/asm/vdso/processor.h    | 22 ++++++++++++++
 5 files changed, 64 insertions(+), 31 deletions(-)
 create mode 100644 arch/arm/include/asm/vdso/cp15.h
 create mode 100644 arch/arm/include/asm/vdso/processor.h

diff --git a/arch/arm/include/asm/cp15.h b/arch/arm/include/asm/cp15.h
index d2453e2d3f1f..a54230e65647 100644
--- a/arch/arm/include/asm/cp15.h
+++ b/arch/arm/include/asm/cp15.h
@@ -50,25 +50,7 @@
 
 #ifdef CONFIG_CPU_CP15
 
-#define __ACCESS_CP15(CRn, Op1, CRm, Op2)	\
-	"mrc", "mcr", __stringify(p15, Op1, %0, CRn, CRm, Op2), u32
-#define __ACCESS_CP15_64(Op1, CRm)		\
-	"mrrc", "mcrr", __stringify(p15, Op1, %Q0, %R0, CRm), u64
-
-#define __read_sysreg(r, w, c, t) ({				\
-	t __val;						\
-	asm volatile(r " " c : "=r" (__val));			\
-	__val;							\
-})
-#define read_sysreg(...)		__read_sysreg(__VA_ARGS__)
-
-#define __write_sysreg(v, r, w, c, t)	asm volatile(w " " c : : "r" ((t)(v)))
-#define write_sysreg(v, ...)		__write_sysreg(v, __VA_ARGS__)
-
-#define BPIALL				__ACCESS_CP15(c7, 0, c5, 6)
-#define ICIALLU				__ACCESS_CP15(c7, 0, c5, 0)
-
-#define CNTVCT				__ACCESS_CP15_64(1, c14)
+#include <asm/vdso/cp15.h>
 
 extern unsigned long cr_alignment;	/* defined in entry-armv.S */
 
diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h
index 614bf829e454..b9241051e5cb 100644
--- a/arch/arm/include/asm/processor.h
+++ b/arch/arm/include/asm/processor.h
@@ -14,6 +14,7 @@
 #include <asm/ptrace.h>
 #include <asm/types.h>
 #include <asm/unified.h>
+#include <asm/vdso/processor.h>
 
 #ifdef __KERNEL__
 #define STACK_TOP	((current->personality & ADDR_LIMIT_32BIT) ? \
@@ -85,16 +86,6 @@ extern void release_thread(struct task_struct *);
 
 unsigned long get_wchan(struct task_struct *p);
 
-#if __LINUX_ARM_ARCH__ == 6 || defined(CONFIG_ARM_ERRATA_754327)
-#define cpu_relax()						\
-	do {							\
-		smp_mb();					\
-		__asm__ __volatile__("nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;");	\
-	} while (0)
-#else
-#define cpu_relax()			barrier()
-#endif
-
 #define task_pt_regs(p) \
 	((struct pt_regs *)(THREAD_START_SP + task_stack_page(p)) - 1)
 
diff --git a/arch/arm/include/asm/vdso/cp15.h b/arch/arm/include/asm/vdso/cp15.h
new file mode 100644
index 000000000000..bed16fa1865e
--- /dev/null
+++ b/arch/arm/include/asm/vdso/cp15.h
@@ -0,0 +1,38 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2020 ARM Ltd.
+ */
+#ifndef __ASM_VDSO_CP15_H
+#define __ASM_VDSO_CP15_H
+
+#ifndef __ASSEMBLY__
+
+#ifdef CONFIG_CPU_CP15
+
+#include <linux/stringify.h>
+
+#define __ACCESS_CP15(CRn, Op1, CRm, Op2)	\
+	"mrc", "mcr", __stringify(p15, Op1, %0, CRn, CRm, Op2), u32
+#define __ACCESS_CP15_64(Op1, CRm)		\
+	"mrrc", "mcrr", __stringify(p15, Op1, %Q0, %R0, CRm), u64
+
+#define __read_sysreg(r, w, c, t) ({				\
+	t __val;						\
+	asm volatile(r " " c : "=r" (__val));			\
+	__val;							\
+})
+#define read_sysreg(...)		__read_sysreg(__VA_ARGS__)
+
+#define __write_sysreg(v, r, w, c, t)	asm volatile(w " " c : : "r" ((t)(v)))
+#define write_sysreg(v, ...)		__write_sysreg(v, __VA_ARGS__)
+
+#define BPIALL				__ACCESS_CP15(c7, 0, c5, 6)
+#define ICIALLU				__ACCESS_CP15(c7, 0, c5, 0)
+
+#define CNTVCT				__ACCESS_CP15_64(1, c14)
+
+#endif /* CONFIG_CPU_CP15 */
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* __ASM_VDSO_CP15_H */
diff --git a/arch/arm/include/asm/vdso/gettimeofday.h b/arch/arm/include/asm/vdso/gettimeofday.h
index 07d791c65cf7..36dc18553ed8 100644
--- a/arch/arm/include/asm/vdso/gettimeofday.h
+++ b/arch/arm/include/asm/vdso/gettimeofday.h
@@ -7,9 +7,9 @@
 
 #ifndef __ASSEMBLY__
 
-#include <asm/barrier.h>
-#include <asm/cp15.h>
+#include <asm/errno.h>
 #include <asm/unistd.h>
+#include <asm/vdso/cp15.h>
 #include <uapi/linux/time.h>
 
 #define VDSO_HAS_CLOCK_GETRES		1
diff --git a/arch/arm/include/asm/vdso/processor.h b/arch/arm/include/asm/vdso/processor.h
new file mode 100644
index 000000000000..45efb3ff511c
--- /dev/null
+++ b/arch/arm/include/asm/vdso/processor.h
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2020 ARM Ltd.
+ */
+#ifndef __ASM_VDSO_PROCESSOR_H
+#define __ASM_VDSO_PROCESSOR_H
+
+#ifndef __ASSEMBLY__
+
+#if __LINUX_ARM_ARCH__ == 6 || defined(CONFIG_ARM_ERRATA_754327)
+#define cpu_relax()						\
+	do {							\
+		smp_mb();					\
+		__asm__ __volatile__("nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;");	\
+	} while (0)
+#else
+#define cpu_relax()			barrier()
+#endif
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* __ASM_VDSO_PROCESSOR_H */
-- 
2.25.1


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

* [PATCH v5 25/26] lib: vdso: Enable common headers
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (23 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 24/26] arm: vdso: Enable arm " Vincenzo Frascino
@ 2020-03-20 14:53 ` Vincenzo Frascino
  2020-03-21 14:33   ` [tip: timers/core] lib/vdso: " tip-bot2 for Vincenzo Frascino
  2020-03-20 14:53 ` [PATCH v5 26/26] arm64: vdso32: Enable Clang Compilation Vincenzo Frascino
  25 siblings, 1 reply; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

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


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

* [PATCH v5 26/26] arm64: vdso32: Enable Clang Compilation
  2020-03-20 14:53 [PATCH v5 00/26] Introduce common headers for vDSO Vincenzo Frascino
                   ` (24 preceding siblings ...)
  2020-03-20 14:53 ` [PATCH v5 25/26] lib: vdso: Enable " Vincenzo Frascino
@ 2020-03-20 14:53 ` Vincenzo Frascino
  2020-03-20 23:15   ` Stephen Boyd
  2020-03-21 14:33   ` [tip: timers/core] " tip-bot2 for Vincenzo Frascino
  25 siblings, 2 replies; 56+ messages in thread
From: Vincenzo Frascino @ 2020-03-20 14:53 UTC (permalink / raw)
  To: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Stephen Boyd, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland, Nathan Chancellor

Enable Clang Compilation for the vdso32 library.

Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
Tested-by: Nathan Chancellor <natechancellor@gmail.com> # build
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 arch/arm64/kernel/vdso32/Makefile | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/arch/arm64/kernel/vdso32/Makefile b/arch/arm64/kernel/vdso32/Makefile
index 04df57b43cb1..3964738ebbde 100644
--- a/arch/arm64/kernel/vdso32/Makefile
+++ b/arch/arm64/kernel/vdso32/Makefile
@@ -10,7 +10,18 @@ include $(srctree)/lib/vdso/Makefile
 
 # Same as cc-*option, but using CC_COMPAT instead of CC
 ifeq ($(CONFIG_CC_IS_CLANG), y)
+COMPAT_GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE_COMPAT)elfedit))
+COMPAT_GCC_TOOLCHAIN := $(realpath $(COMPAT_GCC_TOOLCHAIN_DIR)/..)
+
+CC_COMPAT_CLANG_FLAGS := --target=$(notdir $(CROSS_COMPILE_COMPAT:%-=%))
+CC_COMPAT_CLANG_FLAGS += --prefix=$(COMPAT_GCC_TOOLCHAIN_DIR)
+CC_COMPAT_CLANG_FLAGS += -no-integrated-as -Qunused-arguments
+ifneq ($(COMPAT_GCC_TOOLCHAIN),)
+CC_COMPAT_CLANG_FLAGS += --gcc-toolchain=$(COMPAT_GCC_TOOLCHAIN)
+endif
+
 CC_COMPAT ?= $(CC)
+CC_COMPAT += $(CC_COMPAT_CLANG_FLAGS)
 else
 CC_COMPAT ?= $(CROSS_COMPILE_COMPAT)gcc
 endif
-- 
2.25.1


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

* Re: [PATCH v5 18/26] arm64: vdso32: Code clean up
  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
  1 sibling, 0 replies; 56+ messages in thread
From: Catalin Marinas @ 2020-03-20 15:26 UTC (permalink / raw)
  To: Vincenzo Frascino
  Cc: linux-arch, linux-arm-kernel, linux-kernel, clang-built-linux,
	linux-mips, x86, Will Deacon, Arnd Bergmann, Russell King,
	Paul Burton, Thomas Gleixner, Andy Lutomirski, Ingo Molnar,
	Borislav Petkov, Stephen Boyd, Mark Salyzyn, Kees Cook,
	Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

On Fri, Mar 20, 2020 at 02:53:43PM +0000, Vincenzo Frascino wrote:
> The compat vdso library had some checks that are not anymore relevant.
> 
> Remove the unused code from the compat vDSO library.
> 
> Note: This patch is preparatory for a future one that will introduce
> asm/vdso/processor.h on arm64.
> 
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Will Deacon <will@kernel.org>
> Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
> Link: https://lore.kernel.org/lkml/20200317122220.30393-19-vincenzo.frascino@arm.com

Acked-by: Catalin Marinas <catalin.marinas@arm.com>

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

* Re: [PATCH v5 26/26] arm64: vdso32: Enable Clang Compilation
  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
  1 sibling, 0 replies; 56+ messages in thread
From: Stephen Boyd @ 2020-03-20 23:15 UTC (permalink / raw)
  To: Vincenzo Frascino, clang-built-linux, linux-arch,
	linux-arm-kernel, linux-kernel, linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Mark Salyzyn, Kees Cook,
	Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland, Nathan Chancellor

Quoting Vincenzo Frascino (2020-03-20 07:53:51)
> Enable Clang Compilation for the vdso32 library.
> 
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Will Deacon <will@kernel.org>
> Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
> Tested-by: Nathan Chancellor <natechancellor@gmail.com> # build
> Acked-by: Catalin Marinas <catalin.marinas@arm.com>
> Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
> ---

Tested-by: Stephen Boyd <swboyd@chromium.org>

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

* Re: [PATCH v5 18/26] arm64: vdso32: Code clean up
  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
  1 sibling, 1 reply; 56+ messages in thread
From: Stephen Boyd @ 2020-03-20 23:21 UTC (permalink / raw)
  To: Vincenzo Frascino, clang-built-linux, linux-arch,
	linux-arm-kernel, linux-kernel, linux-mips, x86
  Cc: Vincenzo Frascino, Catalin Marinas, Will Deacon, Arnd Bergmann,
	Russell King, Paul Burton, Thomas Gleixner, Andy Lutomirski,
	Ingo Molnar, Borislav Petkov, Mark Salyzyn, Kees Cook,
	Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

Quoting Vincenzo Frascino (2020-03-20 07:53:43)
> The compat vdso library had some checks that are not anymore relevant.

Can we get the information on why they aren't relevant anymore in the
commit text? I'd rather not find this commit three years from now and
have no idea why it was applied.

> 
> Remove the unused code from the compat vDSO library.
> 
> Note: This patch is preparatory for a future one that will introduce
> asm/vdso/processor.h on arm64.
> 
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Will Deacon <will@kernel.org>
> Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
> Link: https://lore.kernel.org/lkml/20200317122220.30393-19-vincenzo.frascino@arm.com

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

* Re: [PATCH v5 18/26] arm64: vdso32: Code clean up
  2020-03-20 23:21   ` Stephen Boyd
@ 2020-03-21 12:06     ` Catalin Marinas
  0 siblings, 0 replies; 56+ messages in thread
From: Catalin Marinas @ 2020-03-21 12:06 UTC (permalink / raw)
  To: Stephen Boyd
  Cc: Vincenzo Frascino, clang-built-linux, linux-arch,
	linux-arm-kernel, linux-kernel, linux-mips, x86, Will Deacon,
	Arnd Bergmann, Russell King, Paul Burton, Thomas Gleixner,
	Andy Lutomirski, Ingo Molnar, Borislav Petkov, Mark Salyzyn,
	Kees Cook, Peter Collingbourne, Dmitry Safonov, Andrei Vagin,
	Nick Desaulniers, Marc Zyngier, Mark Rutland

On Fri, Mar 20, 2020 at 04:21:06PM -0700, Stephen Boyd wrote:
> Quoting Vincenzo Frascino (2020-03-20 07:53:43)
> > The compat vdso library had some checks that are not anymore relevant.
> 
> Can we get the information on why they aren't relevant anymore in the
> commit text? I'd rather not find this commit three years from now and
> have no idea why it was applied.

Good point. But I'd rather say that the original reason for adding them
was bogus (ABI compatibility between arm64 compat and arm32, when arm32
vdso never got them).

There may be some (very hard to justify) reason to add them if we want
compatibility between vdso and syscall fallback on addresses greater
than TASK_SIZE. The vdso code generates a SIGSEGV or SIGBUS while the
syscall returns -EFAULT. However, you'd have similar mismatch on
unmapped addresses below TASK_SIZE which cannot be handled by the vdso
(not a simple comparison).

I think the vdsotest code should be adjusted accordingly.

-- 
Catalin

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

* [tip: timers/core] lib/vdso: Enable common headers
  2020-03-20 14:53 ` [PATCH v5 25/26] lib: vdso: Enable " Vincenzo Frascino
@ 2020-03-21 14:33   ` tip-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: Vincenzo Frascino, Thomas Gleixner, x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     8c59ab839f526437831ff6d1405c9a6d93f475eb
Gitweb:        https://git.kernel.org/tip/8c59ab839f526437831ff6d1405c9a6d93f475eb
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:50 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:24:03 +01:00

lib/vdso: Enable common headers

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.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20200320145351.32292-26-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 30c4cb0..5cbc9fc 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 72d282f..a2909af 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

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

* [tip: timers/core] arm64: vdso32: Enable Clang Compilation
  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-bot2 for Vincenzo Frascino
  1 sibling, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Vincenzo Frascino, Thomas Gleixner, Nathan Chancellor,
	Stephen Boyd, Catalin Marinas, Will Deacon, x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     a5d442f50a41d7c5a6a97b19c49d8a1ee0cf128b
Gitweb:        https://git.kernel.org/tip/a5d442f50a41d7c5a6a97b19c49d8a1ee0cf128b
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:51 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:24:03 +01:00

arm64: vdso32: Enable Clang Compilation

Enable Clang Compilation for the vdso32 library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Nathan Chancellor <natechancellor@gmail.com> # build
Tested-by: Stephen Boyd <swboyd@chromium.org>
Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Link: https://lkml.kernel.org/r/20200320145351.32292-27-vincenzo.frascino@arm.com

---
 arch/arm64/kernel/vdso32/Makefile | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/arch/arm64/kernel/vdso32/Makefile b/arch/arm64/kernel/vdso32/Makefile
index 04df57b..3964738 100644
--- a/arch/arm64/kernel/vdso32/Makefile
+++ b/arch/arm64/kernel/vdso32/Makefile
@@ -10,7 +10,18 @@ include $(srctree)/lib/vdso/Makefile
 
 # Same as cc-*option, but using CC_COMPAT instead of CC
 ifeq ($(CONFIG_CC_IS_CLANG), y)
+COMPAT_GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE_COMPAT)elfedit))
+COMPAT_GCC_TOOLCHAIN := $(realpath $(COMPAT_GCC_TOOLCHAIN_DIR)/..)
+
+CC_COMPAT_CLANG_FLAGS := --target=$(notdir $(CROSS_COMPILE_COMPAT:%-=%))
+CC_COMPAT_CLANG_FLAGS += --prefix=$(COMPAT_GCC_TOOLCHAIN_DIR)
+CC_COMPAT_CLANG_FLAGS += -no-integrated-as -Qunused-arguments
+ifneq ($(COMPAT_GCC_TOOLCHAIN),)
+CC_COMPAT_CLANG_FLAGS += --gcc-toolchain=$(COMPAT_GCC_TOOLCHAIN)
+endif
+
 CC_COMPAT ?= $(CC)
+CC_COMPAT += $(CC_COMPAT_CLANG_FLAGS)
 else
 CC_COMPAT ?= $(CROSS_COMPILE_COMPAT)gcc
 endif

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

* [tip: timers/core] mips: vdso: Enable mips to use common headers
  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-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Vincenzo Frascino, Thomas Gleixner, Paul Burton, x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     c135fc875ce363ff8405a8e64408bca0aa2a865b
Gitweb:        https://git.kernel.org/tip/c135fc875ce363ff8405a8e64408bca0aa2a865b
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:47 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:24:02 +01:00

mips: vdso: Enable mips to use common headers

Enable mips to use only the common headers in the implementation of
the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Paul Burton <paulburton@kernel.org>
Link: https://lkml.kernel.org/r/20200320145351.32292-23-vincenzo.frascino@arm.com

---
 arch/mips/include/asm/processor.h         | 16 +-------------
 arch/mips/include/asm/vdso/gettimeofday.h |  4 +---
 arch/mips/include/asm/vdso/processor.h    | 27 ++++++++++++++++++++++-
 3 files changed, 28 insertions(+), 19 deletions(-)
 create mode 100644 arch/mips/include/asm/vdso/processor.h

diff --git a/arch/mips/include/asm/processor.h b/arch/mips/include/asm/processor.h
index 7619ad3..4c9cc66 100644
--- a/arch/mips/include/asm/processor.h
+++ b/arch/mips/include/asm/processor.h
@@ -22,6 +22,7 @@
 #include <asm/dsemul.h>
 #include <asm/mipsregs.h>
 #include <asm/prefetch.h>
+#include <asm/vdso/processor.h>
 
 /*
  * System setup and hardware flags..
@@ -385,21 +386,6 @@ unsigned long get_wchan(struct task_struct *p);
 #define KSTK_ESP(tsk) (task_pt_regs(tsk)->regs[29])
 #define KSTK_STATUS(tsk) (task_pt_regs(tsk)->cp0_status)
 
-#ifdef CONFIG_CPU_LOONGSON64
-/*
- * Loongson-3's SFB (Store-Fill-Buffer) may buffer writes indefinitely when a
- * tight read loop is executed, because reads take priority over writes & the
- * hardware (incorrectly) doesn't ensure that writes will eventually occur.
- *
- * Since spin loops of any kind should have a cpu_relax() in them, force an SFB
- * flush from cpu_relax() such that any pending writes will become visible as
- * expected.
- */
-#define cpu_relax()	smp_mb()
-#else
-#define cpu_relax()	barrier()
-#endif
-
 /*
  * Return_address is a replacement for __builtin_return_address(count)
  * which on certain architectures cannot reasonably be implemented in GCC
diff --git a/arch/mips/include/asm/vdso/gettimeofday.h b/arch/mips/include/asm/vdso/gettimeofday.h
index 88c3de1..c63ddca 100644
--- a/arch/mips/include/asm/vdso/gettimeofday.h
+++ b/arch/mips/include/asm/vdso/gettimeofday.h
@@ -13,12 +13,8 @@
 
 #ifndef __ASSEMBLY__
 
-#include <linux/compiler.h>
-#include <linux/time.h>
-
 #include <asm/vdso/vdso.h>
 #include <asm/clocksource.h>
-#include <asm/io.h>
 #include <asm/unistd.h>
 #include <asm/vdso.h>
 
diff --git a/arch/mips/include/asm/vdso/processor.h b/arch/mips/include/asm/vdso/processor.h
new file mode 100644
index 0000000..511c95d
--- /dev/null
+++ b/arch/mips/include/asm/vdso/processor.h
@@ -0,0 +1,27 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2020 ARM Ltd.
+ */
+#ifndef __ASM_VDSO_PROCESSOR_H
+#define __ASM_VDSO_PROCESSOR_H
+
+#ifndef __ASSEMBLY__
+
+#ifdef CONFIG_CPU_LOONGSON64
+/*
+ * Loongson-3's SFB (Store-Fill-Buffer) may buffer writes indefinitely when a
+ * tight read loop is executed, because reads take priority over writes & the
+ * hardware (incorrectly) doesn't ensure that writes will eventually occur.
+ *
+ * Since spin loops of any kind should have a cpu_relax() in them, force an SFB
+ * flush from cpu_relax() such that any pending writes will become visible as
+ * expected.
+ */
+#define cpu_relax()	smp_mb()
+#else
+#define cpu_relax()	barrier()
+#endif
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* __ASM_VDSO_PROCESSOR_H */

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

* [tip: timers/core] arm: vdso: Enable arm to use common headers
  2020-03-20 14:53 ` [PATCH v5 24/26] arm: vdso: Enable arm " Vincenzo Frascino
@ 2020-03-21 14:33   ` tip-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Vincenzo Frascino, Thomas Gleixner, Russell King, x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     78c8516141014cf6322ac899c3832f66612504bb
Gitweb:        https://git.kernel.org/tip/78c8516141014cf6322ac899c3832f66612504bb
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:49 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:24:03 +01:00

arm: vdso: Enable arm to use common headers

Enable arm to use only the common headers in the implementation
of the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Russell King <linux@armlinux.org.uk>
Link: https://lkml.kernel.org/r/20200320145351.32292-25-vincenzo.frascino@arm.com

---
 arch/arm/include/asm/cp15.h              | 20 +------------
 arch/arm/include/asm/processor.h         | 11 +-------
 arch/arm/include/asm/vdso/cp15.h         | 38 +++++++++++++++++++++++-
 arch/arm/include/asm/vdso/gettimeofday.h |  4 +-
 arch/arm/include/asm/vdso/processor.h    | 22 +++++++++++++-
 5 files changed, 64 insertions(+), 31 deletions(-)
 create mode 100644 arch/arm/include/asm/vdso/cp15.h
 create mode 100644 arch/arm/include/asm/vdso/processor.h

diff --git a/arch/arm/include/asm/cp15.h b/arch/arm/include/asm/cp15.h
index d2453e2..a54230e 100644
--- a/arch/arm/include/asm/cp15.h
+++ b/arch/arm/include/asm/cp15.h
@@ -50,25 +50,7 @@
 
 #ifdef CONFIG_CPU_CP15
 
-#define __ACCESS_CP15(CRn, Op1, CRm, Op2)	\
-	"mrc", "mcr", __stringify(p15, Op1, %0, CRn, CRm, Op2), u32
-#define __ACCESS_CP15_64(Op1, CRm)		\
-	"mrrc", "mcrr", __stringify(p15, Op1, %Q0, %R0, CRm), u64
-
-#define __read_sysreg(r, w, c, t) ({				\
-	t __val;						\
-	asm volatile(r " " c : "=r" (__val));			\
-	__val;							\
-})
-#define read_sysreg(...)		__read_sysreg(__VA_ARGS__)
-
-#define __write_sysreg(v, r, w, c, t)	asm volatile(w " " c : : "r" ((t)(v)))
-#define write_sysreg(v, ...)		__write_sysreg(v, __VA_ARGS__)
-
-#define BPIALL				__ACCESS_CP15(c7, 0, c5, 6)
-#define ICIALLU				__ACCESS_CP15(c7, 0, c5, 0)
-
-#define CNTVCT				__ACCESS_CP15_64(1, c14)
+#include <asm/vdso/cp15.h>
 
 extern unsigned long cr_alignment;	/* defined in entry-armv.S */
 
diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h
index 614bf82..b924105 100644
--- a/arch/arm/include/asm/processor.h
+++ b/arch/arm/include/asm/processor.h
@@ -14,6 +14,7 @@
 #include <asm/ptrace.h>
 #include <asm/types.h>
 #include <asm/unified.h>
+#include <asm/vdso/processor.h>
 
 #ifdef __KERNEL__
 #define STACK_TOP	((current->personality & ADDR_LIMIT_32BIT) ? \
@@ -85,16 +86,6 @@ extern void release_thread(struct task_struct *);
 
 unsigned long get_wchan(struct task_struct *p);
 
-#if __LINUX_ARM_ARCH__ == 6 || defined(CONFIG_ARM_ERRATA_754327)
-#define cpu_relax()						\
-	do {							\
-		smp_mb();					\
-		__asm__ __volatile__("nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;");	\
-	} while (0)
-#else
-#define cpu_relax()			barrier()
-#endif
-
 #define task_pt_regs(p) \
 	((struct pt_regs *)(THREAD_START_SP + task_stack_page(p)) - 1)
 
diff --git a/arch/arm/include/asm/vdso/cp15.h b/arch/arm/include/asm/vdso/cp15.h
new file mode 100644
index 0000000..bed16fa
--- /dev/null
+++ b/arch/arm/include/asm/vdso/cp15.h
@@ -0,0 +1,38 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2020 ARM Ltd.
+ */
+#ifndef __ASM_VDSO_CP15_H
+#define __ASM_VDSO_CP15_H
+
+#ifndef __ASSEMBLY__
+
+#ifdef CONFIG_CPU_CP15
+
+#include <linux/stringify.h>
+
+#define __ACCESS_CP15(CRn, Op1, CRm, Op2)	\
+	"mrc", "mcr", __stringify(p15, Op1, %0, CRn, CRm, Op2), u32
+#define __ACCESS_CP15_64(Op1, CRm)		\
+	"mrrc", "mcrr", __stringify(p15, Op1, %Q0, %R0, CRm), u64
+
+#define __read_sysreg(r, w, c, t) ({				\
+	t __val;						\
+	asm volatile(r " " c : "=r" (__val));			\
+	__val;							\
+})
+#define read_sysreg(...)		__read_sysreg(__VA_ARGS__)
+
+#define __write_sysreg(v, r, w, c, t)	asm volatile(w " " c : : "r" ((t)(v)))
+#define write_sysreg(v, ...)		__write_sysreg(v, __VA_ARGS__)
+
+#define BPIALL				__ACCESS_CP15(c7, 0, c5, 6)
+#define ICIALLU				__ACCESS_CP15(c7, 0, c5, 0)
+
+#define CNTVCT				__ACCESS_CP15_64(1, c14)
+
+#endif /* CONFIG_CPU_CP15 */
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* __ASM_VDSO_CP15_H */
diff --git a/arch/arm/include/asm/vdso/gettimeofday.h b/arch/arm/include/asm/vdso/gettimeofday.h
index 07d791c..36dc185 100644
--- a/arch/arm/include/asm/vdso/gettimeofday.h
+++ b/arch/arm/include/asm/vdso/gettimeofday.h
@@ -7,9 +7,9 @@
 
 #ifndef __ASSEMBLY__
 
-#include <asm/barrier.h>
-#include <asm/cp15.h>
+#include <asm/errno.h>
 #include <asm/unistd.h>
+#include <asm/vdso/cp15.h>
 #include <uapi/linux/time.h>
 
 #define VDSO_HAS_CLOCK_GETRES		1
diff --git a/arch/arm/include/asm/vdso/processor.h b/arch/arm/include/asm/vdso/processor.h
new file mode 100644
index 0000000..45efb3f
--- /dev/null
+++ b/arch/arm/include/asm/vdso/processor.h
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2020 ARM Ltd.
+ */
+#ifndef __ASM_VDSO_PROCESSOR_H
+#define __ASM_VDSO_PROCESSOR_H
+
+#ifndef __ASSEMBLY__
+
+#if __LINUX_ARM_ARCH__ == 6 || defined(CONFIG_ARM_ERRATA_754327)
+#define cpu_relax()						\
+	do {							\
+		smp_mb();					\
+		__asm__ __volatile__("nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;");	\
+	} while (0)
+#else
+#define cpu_relax()			barrier()
+#endif
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* __ASM_VDSO_PROCESSOR_H */

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

* [tip: timers/core] x86/vdso: Enable x86 to use common headers
  2020-03-20 14:53 ` [PATCH v5 23/26] x86: vdso: Enable x86 " Vincenzo Frascino
@ 2020-03-21 14:33   ` tip-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: Vincenzo Frascino, Thomas Gleixner, x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     abc22418db02b986fc5623c035507b6357e191ed
Gitweb:        https://git.kernel.org/tip/abc22418db02b986fc5623c035507b6357e191ed
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:48 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:24:02 +01:00

x86/vdso: Enable x86 to use common headers

Enable x86 to use only the common headers in the implementation
of the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20200320145351.32292-24-vincenzo.frascino@arm.com

---
 arch/x86/include/asm/processor.h      | 12 +-----------
 arch/x86/include/asm/vdso/processor.h | 23 +++++++++++++++++++++++
 2 files changed, 24 insertions(+), 11 deletions(-)
 create mode 100644 arch/x86/include/asm/vdso/processor.h

diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
index 09705cc..94789db 100644
--- a/arch/x86/include/asm/processor.h
+++ b/arch/x86/include/asm/processor.h
@@ -26,6 +26,7 @@ struct vm86;
 #include <asm/fpu/types.h>
 #include <asm/unwind_hints.h>
 #include <asm/vmxfeatures.h>
+#include <asm/vdso/processor.h>
 
 #include <linux/personality.h>
 #include <linux/cache.h>
@@ -677,17 +678,6 @@ static inline unsigned int cpuid_edx(unsigned int op)
 	return edx;
 }
 
-/* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */
-static __always_inline void rep_nop(void)
-{
-	asm volatile("rep; nop" ::: "memory");
-}
-
-static __always_inline void cpu_relax(void)
-{
-	rep_nop();
-}
-
 /*
  * This function forces the icache and prefetched instruction stream to
  * catch up with reality in two very specific cases:
diff --git a/arch/x86/include/asm/vdso/processor.h b/arch/x86/include/asm/vdso/processor.h
new file mode 100644
index 0000000..57b1a70
--- /dev/null
+++ b/arch/x86/include/asm/vdso/processor.h
@@ -0,0 +1,23 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2020 ARM Ltd.
+ */
+#ifndef __ASM_VDSO_PROCESSOR_H
+#define __ASM_VDSO_PROCESSOR_H
+
+#ifndef __ASSEMBLY__
+
+/* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */
+static __always_inline void rep_nop(void)
+{
+	asm volatile("rep; nop" ::: "memory");
+}
+
+static __always_inline void cpu_relax(void)
+{
+	rep_nop();
+}
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* __ASM_VDSO_PROCESSOR_H */

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

* [tip: timers/core] arm64: vdso32: Include common headers in the vdso library
  2020-03-20 14:53 ` [PATCH v5 21/26] arm64: vdso32: " Vincenzo Frascino
@ 2020-03-21 14:33   ` tip-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Vincenzo Frascino, Thomas Gleixner, Catalin Marinas, Will Deacon,
	x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     5340e873576ee04186eca3c70844c576d714cc6a
Gitweb:        https://git.kernel.org/tip/5340e873576ee04186eca3c70844c576d714cc6a
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:46 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:24:02 +01:00

arm64: vdso32: Include common headers in the vdso library

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 vdso32 implementation to include common headers.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Link: https://lkml.kernel.org/r/20200320145351.32292-22-vincenzo.frascino@arm.com

---
 arch/arm64/include/asm/vdso/compat_gettimeofday.h | 2 +-
 arch/arm64/kernel/vdso32/vgettimeofday.c          | 2 --
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/arch/arm64/include/asm/vdso/compat_gettimeofday.h b/arch/arm64/include/asm/vdso/compat_gettimeofday.h
index 401df2b..b6907ae 100644
--- a/arch/arm64/include/asm/vdso/compat_gettimeofday.h
+++ b/arch/arm64/include/asm/vdso/compat_gettimeofday.h
@@ -8,7 +8,7 @@
 #ifndef __ASSEMBLY__
 
 #include <asm/unistd.h>
-#include <uapi/linux/time.h>
+#include <asm/errno.h>
 
 #include <asm/vdso/compat_barrier.h>
 
diff --git a/arch/arm64/kernel/vdso32/vgettimeofday.c b/arch/arm64/kernel/vdso32/vgettimeofday.c
index ddbad47..5acff29 100644
--- a/arch/arm64/kernel/vdso32/vgettimeofday.c
+++ b/arch/arm64/kernel/vdso32/vgettimeofday.c
@@ -5,8 +5,6 @@
  * Copyright (C) 2018 ARM Limited
  *
  */
-#include <linux/time.h>
-#include <linux/types.h>
 
 int __vdso_clock_gettime(clockid_t clock,
 			 struct old_timespec32 *ts)

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

* [tip: timers/core] arm64: vdso: Include common headers in the vdso library
  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-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Vincenzo Frascino, Thomas Gleixner, Catalin Marinas, Will Deacon,
	x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     60ad903e9477a832e4575734540db32023a605e9
Gitweb:        https://git.kernel.org/tip/60ad903e9477a832e4575734540db32023a605e9
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:45 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:24:01 +01:00

arm64: vdso: Include common headers in the vdso library

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 vdso implementation to include common headers.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Link: https://lkml.kernel.org/r/20200320145351.32292-21-vincenzo.frascino@arm.com

---
 arch/arm64/include/asm/vdso/gettimeofday.h | 1 -
 arch/arm64/kernel/vdso/vgettimeofday.c     | 2 --
 2 files changed, 3 deletions(-)

diff --git a/arch/arm64/include/asm/vdso/gettimeofday.h b/arch/arm64/include/asm/vdso/gettimeofday.h
index 5a53443..afba6ba 100644
--- a/arch/arm64/include/asm/vdso/gettimeofday.h
+++ b/arch/arm64/include/asm/vdso/gettimeofday.h
@@ -8,7 +8,6 @@
 #ifndef __ASSEMBLY__
 
 #include <asm/unistd.h>
-#include <uapi/linux/time.h>
 
 #define VDSO_HAS_CLOCK_GETRES		1
 
diff --git a/arch/arm64/kernel/vdso/vgettimeofday.c b/arch/arm64/kernel/vdso/vgettimeofday.c
index 7476355..4236cf3 100644
--- a/arch/arm64/kernel/vdso/vgettimeofday.c
+++ b/arch/arm64/kernel/vdso/vgettimeofday.c
@@ -5,8 +5,6 @@
  * Copyright (C) 2018 ARM Limited
  *
  */
-#include <linux/time.h>
-#include <linux/types.h>
 
 int __kernel_clock_gettime(clockid_t clock,
 			   struct __kernel_timespec *ts)

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

* [tip: timers/core] linux/elfnote.h: Replace elf.h with UAPI equivalent
  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-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: Vincenzo Frascino, Thomas Gleixner, x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     b558051725c5f7caa1f390ab28f3ab9db085cbfc
Gitweb:        https://git.kernel.org/tip/b558051725c5f7caa1f390ab28f3ab9db085cbfc
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:42 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:24:00 +01:00

linux/elfnote.h: Replace elf.h with UAPI equivalent

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.

Replace linux/elf.h with UAPI equivalent in elfnote.h to make the header
suitable for vDSO inclusion.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20200320145351.32292-18-vincenzo.frascino@arm.com

---
 include/linux/elfnote.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/elfnote.h b/include/linux/elfnote.h
index f236f5b..594d4e7 100644
--- a/include/linux/elfnote.h
+++ b/include/linux/elfnote.h
@@ -59,7 +59,7 @@
 	ELFNOTE_END
 
 #else	/* !__ASSEMBLER__ */
-#include <linux/elf.h>
+#include <uapi/linux/elf.h>
 /*
  * Use an anonymous structure which matches the shape of
  * Elf{32,64}_Nhdr, but includes the name and desc data.  The size and

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

* [tip: timers/core] arm64: Introduce asm/vdso/processor.h
  2020-03-20 14:53 ` [PATCH v5 19/26] arm64: Introduce asm/vdso/processor.h Vincenzo Frascino
@ 2020-03-21 14:33   ` tip-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Vincenzo Frascino, Thomas Gleixner, Catalin Marinas, Will Deacon,
	x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     f511e079177a9b97175a9a3b0ee2374d55682403
Gitweb:        https://git.kernel.org/tip/f511e079177a9b97175a9a3b0ee2374d55682403
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:44 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:24:01 +01:00

arm64: Introduce asm/vdso/processor.h

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.

Introduce asm/vdso/processor.h to contain all the arm64 specific
functions that are suitable for vDSO inclusion.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Link: https://lkml.kernel.org/r/20200320145351.32292-20-vincenzo.frascino@arm.com

---
 arch/arm64/include/asm/processor.h      |  7 ++-----
 arch/arm64/include/asm/vdso/processor.h | 17 +++++++++++++++++
 2 files changed, 19 insertions(+), 5 deletions(-)
 create mode 100644 arch/arm64/include/asm/vdso/processor.h

diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
index 5ba6320..e51ef2d 100644
--- a/arch/arm64/include/asm/processor.h
+++ b/arch/arm64/include/asm/processor.h
@@ -28,6 +28,8 @@
 #include <linux/string.h>
 #include <linux/thread_info.h>
 
+#include <vdso/processor.h>
+
 #include <asm/alternative.h>
 #include <asm/cpufeature.h>
 #include <asm/hw_breakpoint.h>
@@ -256,11 +258,6 @@ extern void release_thread(struct task_struct *);
 
 unsigned long get_wchan(struct task_struct *p);
 
-static inline void cpu_relax(void)
-{
-	asm volatile("yield" ::: "memory");
-}
-
 /* Thread switching */
 extern struct task_struct *cpu_switch_to(struct task_struct *prev,
 					 struct task_struct *next);
diff --git a/arch/arm64/include/asm/vdso/processor.h b/arch/arm64/include/asm/vdso/processor.h
new file mode 100644
index 0000000..ff830b7
--- /dev/null
+++ b/arch/arm64/include/asm/vdso/processor.h
@@ -0,0 +1,17 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2020 ARM Ltd.
+ */
+#ifndef __ASM_VDSO_PROCESSOR_H
+#define __ASM_VDSO_PROCESSOR_H
+
+#ifndef __ASSEMBLY__
+
+static inline void cpu_relax(void)
+{
+	asm volatile("yield" ::: "memory");
+}
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* __ASM_VDSO_PROCESSOR_H */

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

* [tip: timers/core] common: Introduce processor.h
  2020-03-20 14:53 ` [PATCH v5 15/26] common: Introduce processor.h Vincenzo Frascino
@ 2020-03-21 14:33   ` tip-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: Vincenzo Frascino, Thomas Gleixner, x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     d8bb6993d871f5d3cd6d65d3772e4b1f4ef17380
Gitweb:        https://git.kernel.org/tip/d8bb6993d871f5d3cd6d65d3772e4b1f4ef17380
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:40 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:23:59 +01:00

common: Introduce processor.h

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.

Introduce processor.h to contain all the processor specific functions
that are suitable for vDSO inclusion.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20200320145351.32292-16-vincenzo.frascino@arm.com

---
 include/vdso/processor.h | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
 create mode 100644 include/vdso/processor.h

diff --git a/include/vdso/processor.h b/include/vdso/processor.h
new file mode 100644
index 0000000..fbe8265
--- /dev/null
+++ b/include/vdso/processor.h
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2020 ARM Ltd.
+ */
+#ifndef __VDSO_PROCESSOR_H
+#define __VDSO_PROCESSOR_H
+
+#ifndef __ASSEMBLY__
+
+#include <asm/vdso/processor.h>
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* __VDSO_PROCESSOR_H */

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

* [tip: timers/core] scripts: Fix the inclusion order in modpost
  2020-03-20 14:53 ` [PATCH v5 16/26] scripts: Fix the inclusion order in modpost Vincenzo Frascino
@ 2020-03-21 14:33   ` tip-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: kbuild test robot, Vincenzo Frascino, Thomas Gleixner,
	Masahiro Yamada, Michal Marek, x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     f58dd03b1157bdf3b64c36e9525f8d7f69c25df2
Gitweb:        https://git.kernel.org/tip/f58dd03b1157bdf3b64c36e9525f8d7f69c25df2
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:41 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:24:00 +01:00

scripts: Fix the inclusion order in modpost

In the process of creating the source file of a module modpost injects a
set of includes that are not required if the compilation unit is
statically built into the kernel.

The order of inclusion of the headers can cause redefinition problems
(e.g.):

   In file included from include/linux/elf.h:5:0,
                    from include/linux/module.h:18,
                    from crypto/arc4.mod.c:2:
    #define ELF_OSABI  ELFOSABI_LINUX

   In file included from include/linux/elfnote.h:62:0,
                    from include/linux/build-salt.h:4,
                    from crypto/arc4.mod.c:1:
   include/uapi/linux/elf.h:363:0: note: this is the location of
   the previous definition
    #define ELF_OSABI ELFOSABI_NONE

The issue was exposed during the development of the series [1].

[1] https://lore.kernel.org/lkml/20200306133242.26279-1-vincenzo.frascino@arm.com/

Reported-by: kbuild test robot <lkp@intel.com>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Michal Marek <michal.lkml@markovi.net>
Link: https://lkml.kernel.org/r/20200320145351.32292-17-vincenzo.frascino@arm.com

---
 scripts/mod/modpost.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 7edfdb2..0f354b1 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -2251,8 +2251,12 @@ static int check_modname_len(struct module *mod)
  **/
 static void add_header(struct buffer *b, struct module *mod)
 {
-	buf_printf(b, "#include <linux/build-salt.h>\n");
 	buf_printf(b, "#include <linux/module.h>\n");
+	/*
+	 * Include build-salt.h after module.h in order to
+	 * inherit the definitions.
+	 */
+	buf_printf(b, "#include <linux/build-salt.h>\n");
 	buf_printf(b, "#include <linux/vermagic.h>\n");
 	buf_printf(b, "#include <linux/compiler.h>\n");
 	buf_printf(b, "\n");

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

* [tip: timers/core] linux/ktime.h: Extract common header for vDSO
  2020-03-20 14:53 ` [PATCH v5 14/26] linux/ktime.h: " Vincenzo Frascino
@ 2020-03-21 14:33   ` tip-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: Vincenzo Frascino, Thomas Gleixner, x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     cc56f32f00154ff3586e8346c91f5253882cd8a5
Gitweb:        https://git.kernel.org/tip/cc56f32f00154ff3586e8346c91f5253882cd8a5
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:39 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:23:59 +01:00

linux/ktime.h: Extract common header for vDSO

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.

Split ktime.h into linux and common headers to make the latter suitable
for inclusion in the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20200320145351.32292-15-vincenzo.frascino@arm.com

---
 include/linux/ktime.h |  9 +--------
 include/vdso/ktime.h  | 16 ++++++++++++++++
 2 files changed, 17 insertions(+), 8 deletions(-)
 create mode 100644 include/vdso/ktime.h

diff --git a/include/linux/ktime.h b/include/linux/ktime.h
index b2bb44f..1fcfce9 100644
--- a/include/linux/ktime.h
+++ b/include/linux/ktime.h
@@ -253,14 +253,7 @@ static inline __must_check bool ktime_to_timespec64_cond(const ktime_t kt,
 	}
 }
 
-/*
- * The resolution of the clocks. The resolution value is returned in
- * the clock_getres() system call to give application programmers an
- * idea of the (in)accuracy of timers. Timer values are rounded up to
- * this resolution values.
- */
-#define LOW_RES_NSEC		TICK_NSEC
-#define KTIME_LOW_RES		(LOW_RES_NSEC)
+#include <vdso/ktime.h>
 
 static inline ktime_t ns_to_ktime(u64 ns)
 {
diff --git a/include/vdso/ktime.h b/include/vdso/ktime.h
new file mode 100644
index 0000000..a0fd072
--- /dev/null
+++ b/include/vdso/ktime.h
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_KTIME_H
+#define __VDSO_KTIME_H
+
+#include <vdso/jiffies.h>
+
+/*
+ * The resolution of the clocks. The resolution value is returned in
+ * the clock_getres() system call to give application programmers an
+ * idea of the (in)accuracy of timers. Timer values are rounded up to
+ * this resolution values.
+ */
+#define LOW_RES_NSEC		TICK_NSEC
+#define KTIME_LOW_RES		(LOW_RES_NSEC)
+
+#endif /* __VDSO_KTIME_H */

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

* [tip: timers/core] linux/time64.h: Extract common header for vDSO
  2020-03-20 14:53 ` [PATCH v5 12/26] linux/time64.h: " Vincenzo Frascino
@ 2020-03-21 14:33   ` tip-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: Vincenzo Frascino, Thomas Gleixner, x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     b72a9c5e023bf405e62b858eb5384eb34e2b7a74
Gitweb:        https://git.kernel.org/tip/b72a9c5e023bf405e62b858eb5384eb34e2b7a74
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:37 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:23:58 +01:00

linux/time64.h: Extract common header for vDSO

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.

Split time64.h into linux and common headers to make the latter suitable
for inclusion in the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20200320145351.32292-13-vincenzo.frascino@arm.com

---
 include/linux/time64.h | 10 +---------
 include/vdso/time64.h  | 14 ++++++++++++++
 2 files changed, 15 insertions(+), 9 deletions(-)
 create mode 100644 include/vdso/time64.h

diff --git a/include/linux/time64.h b/include/linux/time64.h
index 1912548..c9dcb3e 100644
--- a/include/linux/time64.h
+++ b/include/linux/time64.h
@@ -3,6 +3,7 @@
 #define _LINUX_TIME64_H
 
 #include <linux/math64.h>
+#include <vdso/time64.h>
 
 typedef __s64 time64_t;
 typedef __u64 timeu64_t;
@@ -19,15 +20,6 @@ struct itimerspec64 {
 	struct timespec64 it_value;
 };
 
-/* Parameters used to convert the timespec values: */
-#define MSEC_PER_SEC	1000L
-#define USEC_PER_MSEC	1000L
-#define NSEC_PER_USEC	1000L
-#define NSEC_PER_MSEC	1000000L
-#define USEC_PER_SEC	1000000L
-#define NSEC_PER_SEC	1000000000L
-#define FSEC_PER_SEC	1000000000000000LL
-
 /* Located here for timespec[64]_valid_strict */
 #define TIME64_MAX			((s64)~((u64)1 << 63))
 #define TIME64_MIN			(-TIME64_MAX - 1)
diff --git a/include/vdso/time64.h b/include/vdso/time64.h
new file mode 100644
index 0000000..9d43c3f
--- /dev/null
+++ b/include/vdso/time64.h
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_TIME64_H
+#define __VDSO_TIME64_H
+
+/* Parameters used to convert the timespec values: */
+#define MSEC_PER_SEC	1000L
+#define USEC_PER_MSEC	1000L
+#define NSEC_PER_USEC	1000L
+#define NSEC_PER_MSEC	1000000L
+#define USEC_PER_SEC	1000000L
+#define NSEC_PER_SEC	1000000000L
+#define FSEC_PER_SEC	1000000000000000LL
+
+#endif /* __VDSO_TIME64_H */

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

* [tip: timers/core] linux/jiffies.h: Extract common header for vDSO
  2020-03-20 14:53 ` [PATCH v5 13/26] linux/jiffies.h: " Vincenzo Frascino
@ 2020-03-21 14:33   ` tip-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: Vincenzo Frascino, Thomas Gleixner, x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     97b01d2eabd8c0fa650a9d513febeae35dbc6de4
Gitweb:        https://git.kernel.org/tip/97b01d2eabd8c0fa650a9d513febeae35dbc6de4
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:38 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:23:58 +01:00

linux/jiffies.h: Extract common header for vDSO

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.

Split jiffies.h into linux and common headers to make the latter suitable
for inclusion in the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20200320145351.32292-14-vincenzo.frascino@arm.com

---
 include/linux/jiffies.h |  4 +---
 include/vdso/jiffies.h  | 11 +++++++++++
 2 files changed, 12 insertions(+), 3 deletions(-)
 create mode 100644 include/vdso/jiffies.h

diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
index e3279ef..fed6ba9 100644
--- a/include/linux/jiffies.h
+++ b/include/linux/jiffies.h
@@ -8,6 +8,7 @@
 #include <linux/types.h>
 #include <linux/time.h>
 #include <linux/timex.h>
+#include <vdso/jiffies.h>
 #include <asm/param.h>			/* for HZ */
 #include <generated/timeconst.h>
 
@@ -59,9 +60,6 @@
 
 extern int register_refined_jiffies(long clock_tick_rate);
 
-/* TICK_NSEC is the time between ticks in nsec assuming SHIFTED_HZ */
-#define TICK_NSEC ((NSEC_PER_SEC+HZ/2)/HZ)
-
 /* TICK_USEC is the time between ticks in usec assuming SHIFTED_HZ */
 #define TICK_USEC ((USEC_PER_SEC + HZ/2) / HZ)
 
diff --git a/include/vdso/jiffies.h b/include/vdso/jiffies.h
new file mode 100644
index 0000000..2f9d596
--- /dev/null
+++ b/include/vdso/jiffies.h
@@ -0,0 +1,11 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_JIFFIES_H
+#define __VDSO_JIFFIES_H
+
+#include <asm/param.h>			/* for HZ */
+#include <vdso/time64.h>
+
+/* TICK_NSEC is the time between ticks in nsec assuming SHIFTED_HZ */
+#define TICK_NSEC ((NSEC_PER_SEC+HZ/2)/HZ)
+
+#endif /* __VDSO_JIFFIES_H */

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

* [tip: timers/core] linux/time.h: Extract common header for vDSO
  2020-03-20 14:53 ` [PATCH v5 10/26] linux/time.h: " Vincenzo Frascino
@ 2020-03-21 14:33   ` tip-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: Vincenzo Frascino, Thomas Gleixner, x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     639fff1cce0f7462bb4440deeffc1048ecfc6ebb
Gitweb:        https://git.kernel.org/tip/639fff1cce0f7462bb4440deeffc1048ecfc6ebb
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:35 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:23:57 +01:00

linux/time.h: Extract common header for vDSO

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.

Split time.h into linux and common headers to make the latter suitable
for inclusion in the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20200320145351.32292-11-vincenzo.frascino@arm.com

---
 include/linux/time.h |  5 +----
 include/vdso/time.h  | 12 ++++++++++++
 2 files changed, 13 insertions(+), 4 deletions(-)
 create mode 100644 include/vdso/time.h

diff --git a/include/linux/time.h b/include/linux/time.h
index 8ef5e5c..4c325bf 100644
--- a/include/linux/time.h
+++ b/include/linux/time.h
@@ -111,9 +111,6 @@ static inline bool itimerspec64_valid(const struct itimerspec64 *its)
  */
 #define time_between32(t, l, h) ((u32)(h) - (u32)(l) >= (u32)(t) - (u32)(l))
 
-struct timens_offset {
-	s64	sec;
-	u64	nsec;
-};
+# include <vdso/time.h>
 
 #endif
diff --git a/include/vdso/time.h b/include/vdso/time.h
new file mode 100644
index 0000000..739f53c
--- /dev/null
+++ b/include/vdso/time.h
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_TIME_H
+#define __VDSO_TIME_H
+
+#include <uapi/linux/types.h>
+
+struct timens_offset {
+	s64	sec;
+	u64	nsec;
+};
+
+#endif /* __VDSO_TIME_H */

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

* [tip: timers/core] linux/time32.h: Extract common header for vDSO
  2020-03-20 14:53 ` [PATCH v5 11/26] linux/time32.h: " Vincenzo Frascino
@ 2020-03-21 14:33   ` tip-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: Vincenzo Frascino, Thomas Gleixner, x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     9a4162316965818ea73701b611915deca97afece
Gitweb:        https://git.kernel.org/tip/9a4162316965818ea73701b611915deca97afece
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:36 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:23:57 +01:00

linux/time32.h: Extract common header for vDSO

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.

Split time32.h into linux and common headers to make the latter suitable
for inclusion in the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20200320145351.32292-12-vincenzo.frascino@arm.com

---
 include/linux/time32.h | 14 ++------------
 include/vdso/time32.h  | 17 +++++++++++++++++
 2 files changed, 19 insertions(+), 12 deletions(-)
 create mode 100644 include/vdso/time32.h

diff --git a/include/linux/time32.h b/include/linux/time32.h
index cad4c31..0933f28 100644
--- a/include/linux/time32.h
+++ b/include/linux/time32.h
@@ -12,19 +12,9 @@
 #include <linux/time64.h>
 #include <linux/timex.h>
 
-#define TIME_T_MAX	(__kernel_old_time_t)((1UL << ((sizeof(__kernel_old_time_t) << 3) - 1)) - 1)
-
-typedef s32		old_time32_t;
-
-struct old_timespec32 {
-	old_time32_t	tv_sec;
-	s32		tv_nsec;
-};
+#include <vdso/time32.h>
 
-struct old_timeval32 {
-	old_time32_t	tv_sec;
-	s32		tv_usec;
-};
+#define TIME_T_MAX	(__kernel_old_time_t)((1UL << ((sizeof(__kernel_old_time_t) << 3) - 1)) - 1)
 
 struct old_itimerspec32 {
 	struct old_timespec32 it_interval;
diff --git a/include/vdso/time32.h b/include/vdso/time32.h
new file mode 100644
index 0000000..fdf56f9
--- /dev/null
+++ b/include/vdso/time32.h
@@ -0,0 +1,17 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_TIME32_H
+#define __VDSO_TIME32_H
+
+typedef s32		old_time32_t;
+
+struct old_timespec32 {
+	old_time32_t	tv_sec;
+	s32		tv_nsec;
+};
+
+struct old_timeval32 {
+	old_time32_t	tv_sec;
+	s32		tv_usec;
+};
+
+#endif /* __VDSO_TIME32_H */

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

* [tip: timers/core] linux/math64.h: Extract common header for vDSO
  2020-03-20 14:53 ` [PATCH v5 09/26] linux/math64.h: " Vincenzo Frascino
@ 2020-03-21 14:33   ` tip-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: Vincenzo Frascino, Thomas Gleixner, x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     b874b8358c756f2503c55686af842d99f5b1f312
Gitweb:        https://git.kernel.org/tip/b874b8358c756f2503c55686af842d99f5b1f312
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:34 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:23:56 +01:00

linux/math64.h: Extract common header for vDSO

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.

Split math64.h into linux and common headers to make the latter suitable
for inclusion in the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20200320145351.32292-10-vincenzo.frascino@arm.com

---
 include/linux/math64.h | 20 +-------------------
 include/vdso/math64.h  | 24 ++++++++++++++++++++++++
 2 files changed, 25 insertions(+), 19 deletions(-)
 create mode 100644 include/vdso/math64.h

diff --git a/include/linux/math64.h b/include/linux/math64.h
index 65bef21..11a2674 100644
--- a/include/linux/math64.h
+++ b/include/linux/math64.h
@@ -3,6 +3,7 @@
 #define _LINUX_MATH64_H
 
 #include <linux/types.h>
+#include <vdso/math64.h>
 #include <asm/div64.h>
 
 #if BITS_PER_LONG == 64
@@ -142,25 +143,6 @@ static inline s64 div_s64(s64 dividend, s32 divisor)
 
 u32 iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder);
 
-static __always_inline u32
-__iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder)
-{
-	u32 ret = 0;
-
-	while (dividend >= divisor) {
-		/* The following asm() prevents the compiler from
-		   optimising this loop into a modulo operation.  */
-		asm("" : "+rm"(dividend));
-
-		dividend -= divisor;
-		ret++;
-	}
-
-	*remainder = dividend;
-
-	return ret;
-}
-
 #ifndef mul_u32_u32
 /*
  * Many a GCC version messes this up and generates a 64x64 mult :-(
diff --git a/include/vdso/math64.h b/include/vdso/math64.h
new file mode 100644
index 0000000..7da703e
--- /dev/null
+++ b/include/vdso/math64.h
@@ -0,0 +1,24 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_MATH64_H
+#define __VDSO_MATH64_H
+
+static __always_inline u32
+__iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder)
+{
+	u32 ret = 0;
+
+	while (dividend >= divisor) {
+		/* The following asm() prevents the compiler from
+		   optimising this loop into a modulo operation.  */
+		asm("" : "+rm"(dividend));
+
+		dividend -= divisor;
+		ret++;
+	}
+
+	*remainder = dividend;
+
+	return ret;
+}
+
+#endif /* __VDSO_MATH64_H */

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

* [tip: timers/core] linux/clocksource.h: Extract common header for vDSO
  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-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: Vincenzo Frascino, Thomas Gleixner, x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     14ee2ac618e49e767c9af4aa007f951eb9e35153
Gitweb:        https://git.kernel.org/tip/14ee2ac618e49e767c9af4aa007f951eb9e35153
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:33 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:23:56 +01:00

linux/clocksource.h: Extract common header for vDSO

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.

Split clocksource.h into linux and common headers to make the latter
suitable for inclusion in the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20200320145351.32292-9-vincenzo.frascino@arm.com

---
 include/linux/clocksource.h | 11 +----------
 include/vdso/clocksource.h  | 23 +++++++++++++++++++++++
 2 files changed, 24 insertions(+), 10 deletions(-)
 create mode 100644 include/vdso/clocksource.h

diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h
index 02e3282..86d143d 100644
--- a/include/linux/clocksource.h
+++ b/include/linux/clocksource.h
@@ -28,16 +28,7 @@ struct module;
 #include <asm/clocksource.h>
 #endif
 
-enum vdso_clock_mode {
-	VDSO_CLOCKMODE_NONE,
-#ifdef CONFIG_GENERIC_GETTIMEOFDAY
-	VDSO_ARCH_CLOCKMODES,
-#endif
-	VDSO_CLOCKMODE_MAX,
-
-	/* Indicator for time namespace VDSO */
-	VDSO_CLOCKMODE_TIMENS = INT_MAX
-};
+#include <vdso/clocksource.h>
 
 /**
  * struct clocksource - hardware abstraction for a free running counter
diff --git a/include/vdso/clocksource.h b/include/vdso/clocksource.h
new file mode 100644
index 0000000..ab58330
--- /dev/null
+++ b/include/vdso/clocksource.h
@@ -0,0 +1,23 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_CLOCKSOURCE_H
+#define __VDSO_CLOCKSOURCE_H
+
+#include <vdso/limits.h>
+
+#if defined(CONFIG_ARCH_CLOCKSOURCE_DATA) || \
+	defined(CONFIG_GENERIC_GETTIMEOFDAY)
+#include <asm/vdso/clocksource.h>
+#endif /* CONFIG_ARCH_CLOCKSOURCE_DATA || CONFIG_GENERIC_GETTIMEOFDAY */
+
+enum vdso_clock_mode {
+	VDSO_CLOCKMODE_NONE,
+#ifdef CONFIG_GENERIC_GETTIMEOFDAY
+	VDSO_ARCH_CLOCKMODES,
+#endif
+	VDSO_CLOCKMODE_MAX,
+
+	/* Indicator for time namespace VDSO */
+	VDSO_CLOCKMODE_TIMENS = INT_MAX
+};
+
+#endif /* __VDSO_CLOCKSOURCE_H */

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

* [tip: timers/core] mips: Introduce asm/vdso/clocksource.h
  2020-03-20 14:53 ` [PATCH v5 07/26] mips: " Vincenzo Frascino
@ 2020-03-21 14:33   ` tip-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Vincenzo Frascino, Thomas Gleixner, Paul Burton, x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     17e46656a82fc4645324043241b3294f6db9a6ce
Gitweb:        https://git.kernel.org/tip/17e46656a82fc4645324043241b3294f6db9a6ce
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:32 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:23:55 +01:00

mips: Introduce asm/vdso/clocksource.h

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.

Introduce asm/vdso/clocksource.h to contain all the arm64 specific
functions that are suitable for vDSO inclusion.

This header will be required by a future patch that will generalize
vdso/clocksource.h.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Paul Burton <paulburton@kernel.org>
Link: https://lkml.kernel.org/r/20200320145351.32292-8-vincenzo.frascino@arm.com

---
 arch/mips/include/asm/clocksource.h      |  4 +---
 arch/mips/include/asm/vdso/clocksource.h |  9 +++++++++
 2 files changed, 10 insertions(+), 3 deletions(-)
 create mode 100644 arch/mips/include/asm/vdso/clocksource.h

diff --git a/arch/mips/include/asm/clocksource.h b/arch/mips/include/asm/clocksource.h
index de659ca..2f1ebbe 100644
--- a/arch/mips/include/asm/clocksource.h
+++ b/arch/mips/include/asm/clocksource.h
@@ -6,8 +6,6 @@
 #ifndef __ASM_CLOCKSOURCE_H
 #define __ASM_CLOCKSOURCE_H
 
-#define VDSO_ARCH_CLOCKMODES	\
-	VDSO_CLOCKMODE_R4K,	\
-	VDSO_CLOCKMODE_GIC
+#include <asm/vdso/clocksource.h>
 
 #endif /* __ASM_CLOCKSOURCE_H */
diff --git a/arch/mips/include/asm/vdso/clocksource.h b/arch/mips/include/asm/vdso/clocksource.h
new file mode 100644
index 0000000..510e167
--- /dev/null
+++ b/arch/mips/include/asm/vdso/clocksource.h
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+#ifndef __ASM_VDSOCLOCKSOURCE_H
+#define __ASM_VDSOCLOCKSOURCE_H
+
+#define VDSO_ARCH_CLOCKMODES	\
+	VDSO_CLOCKMODE_R4K,	\
+	VDSO_CLOCKMODE_GIC
+
+#endif /* __ASM_VDSOCLOCKSOURCE_H */

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

* [tip: timers/core] arm: Introduce asm/vdso/clocksource.h
  2020-03-20 14:53 ` [PATCH v5 05/26] arm: " Vincenzo Frascino
@ 2020-03-21 14:33   ` tip-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Vincenzo Frascino, Thomas Gleixner, Russell King, x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     c16b270b171177d1a602b270aef9bff45585bfa2
Gitweb:        https://git.kernel.org/tip/c16b270b171177d1a602b270aef9bff45585bfa2
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:30 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:23:54 +01:00

arm: Introduce asm/vdso/clocksource.h

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.

Introduce asm/vdso/clocksource.h to contain all the arm64 specific
functions that are suitable for vDSO inclusion.

This header will be required by a future patch that will generalize
vdso/clocksource.h.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Russell King <linux@armlinux.org.uk>
Link: https://lkml.kernel.org/r/20200320145351.32292-6-vincenzo.frascino@arm.com

---
 arch/arm/include/asm/clocksource.h      | 6 +++---
 arch/arm/include/asm/vdso/clocksource.h | 8 ++++++++
 2 files changed, 11 insertions(+), 3 deletions(-)
 create mode 100644 arch/arm/include/asm/vdso/clocksource.h

diff --git a/arch/arm/include/asm/clocksource.h b/arch/arm/include/asm/clocksource.h
index 73beb7f..13651c7 100644
--- a/arch/arm/include/asm/clocksource.h
+++ b/arch/arm/include/asm/clocksource.h
@@ -1,7 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 #ifndef _ASM_CLOCKSOURCE_H
 #define _ASM_CLOCKSOURCE_H
 
-#define VDSO_ARCH_CLOCKMODES	\
-	VDSO_CLOCKMODE_ARCHTIMER
+#include <asm/vdso/clocksource.h>
 
-#endif
+#endif /* _ASM_CLOCKSOURCE_H */
diff --git a/arch/arm/include/asm/vdso/clocksource.h b/arch/arm/include/asm/vdso/clocksource.h
new file mode 100644
index 0000000..50c0b19
--- /dev/null
+++ b/arch/arm/include/asm/vdso/clocksource.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ASM_VDSOCLOCKSOURCE_H
+#define __ASM_VDSOCLOCKSOURCE_H
+
+#define VDSO_ARCH_CLOCKMODES	\
+	VDSO_CLOCKMODE_ARCHTIMER
+
+#endif /* __ASM_VDSOCLOCKSOURCE_H */

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

* [tip: timers/core] arm64: Introduce asm/vdso/clocksource.h
  2020-03-20 14:53 ` [PATCH v5 06/26] arm64: " Vincenzo Frascino
@ 2020-03-21 14:33   ` tip-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Vincenzo Frascino, Thomas Gleixner, Catalin Marinas, Will Deacon,
	x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     31fdcac07f679848b5ba371500292b685fd39217
Gitweb:        https://git.kernel.org/tip/31fdcac07f679848b5ba371500292b685fd39217
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:31 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:23:55 +01:00

arm64: Introduce asm/vdso/clocksource.h

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.

Introduce asm/vdso/clocksource.h to contain all the arm64 specific
functions that are suitable for vDSO inclusion.

This header will be required by a future patch that will generalize
vdso/clocksource.h.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Link: https://lkml.kernel.org/r/20200320145351.32292-7-vincenzo.frascino@arm.com

---
 arch/arm64/include/asm/clocksource.h      | 3 +--
 arch/arm64/include/asm/vdso/clocksource.h | 8 ++++++++
 2 files changed, 9 insertions(+), 2 deletions(-)
 create mode 100644 arch/arm64/include/asm/vdso/clocksource.h

diff --git a/arch/arm64/include/asm/clocksource.h b/arch/arm64/include/asm/clocksource.h
index eb82e9d..4821855 100644
--- a/arch/arm64/include/asm/clocksource.h
+++ b/arch/arm64/include/asm/clocksource.h
@@ -2,7 +2,6 @@
 #ifndef _ASM_CLOCKSOURCE_H
 #define _ASM_CLOCKSOURCE_H
 
-#define VDSO_ARCH_CLOCKMODES	\
-	VDSO_CLOCKMODE_ARCHTIMER
+#include <asm/vdso/clocksource.h>
 
 #endif
diff --git a/arch/arm64/include/asm/vdso/clocksource.h b/arch/arm64/include/asm/vdso/clocksource.h
new file mode 100644
index 0000000..df6ea65
--- /dev/null
+++ b/arch/arm64/include/asm/vdso/clocksource.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ASM_VDSOCLOCKSOURCE_H
+#define __ASM_VDSOCLOCKSOURCE_H
+
+#define VDSO_ARCH_CLOCKMODES	\
+	VDSO_CLOCKMODE_ARCHTIMER
+
+#endif

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

* [tip: timers/core] linux/limits.h: Extract common header for vDSO
  2020-03-20 14:53 ` [PATCH v5 03/26] linux/limits.h: " Vincenzo Frascino
@ 2020-03-21 14:33   ` tip-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: Vincenzo Frascino, Thomas Gleixner, x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     3e0e9f8c6e3ca92154a74edc23a8872da921d2b6
Gitweb:        https://git.kernel.org/tip/3e0e9f8c6e3ca92154a74edc23a8872da921d2b6
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:28 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:23:54 +01:00

linux/limits.h: Extract common header for vDSO

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.

Split limits.h into linux and common headers to make the latter suitable
for inclusion in the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20200320145351.32292-4-vincenzo.frascino@arm.com

---
 include/linux/limits.h | 13 +------------
 include/vdso/limits.h  | 19 +++++++++++++++++++
 2 files changed, 20 insertions(+), 12 deletions(-)
 create mode 100644 include/vdso/limits.h

diff --git a/include/linux/limits.h b/include/linux/limits.h
index 76afcd2..7fc497e 100644
--- a/include/linux/limits.h
+++ b/include/linux/limits.h
@@ -4,19 +4,8 @@
 
 #include <uapi/linux/limits.h>
 #include <linux/types.h>
+#include <vdso/limits.h>
 
-#define USHRT_MAX	((unsigned short)~0U)
-#define SHRT_MAX	((short)(USHRT_MAX >> 1))
-#define SHRT_MIN	((short)(-SHRT_MAX - 1))
-#define INT_MAX		((int)(~0U >> 1))
-#define INT_MIN		(-INT_MAX - 1)
-#define UINT_MAX	(~0U)
-#define LONG_MAX	((long)(~0UL >> 1))
-#define LONG_MIN	(-LONG_MAX - 1)
-#define ULONG_MAX	(~0UL)
-#define LLONG_MAX	((long long)(~0ULL >> 1))
-#define LLONG_MIN	(-LLONG_MAX - 1)
-#define ULLONG_MAX	(~0ULL)
 #define SIZE_MAX	(~(size_t)0)
 #define PHYS_ADDR_MAX	(~(phys_addr_t)0)
 
diff --git a/include/vdso/limits.h b/include/vdso/limits.h
new file mode 100644
index 0000000..0197888
--- /dev/null
+++ b/include/vdso/limits.h
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_LIMITS_H
+#define __VDSO_LIMITS_H
+
+#define USHRT_MAX	((unsigned short)~0U)
+#define SHRT_MAX	((short)(USHRT_MAX >> 1))
+#define SHRT_MIN	((short)(-SHRT_MAX - 1))
+#define INT_MAX		((int)(~0U >> 1))
+#define INT_MIN		(-INT_MAX - 1)
+#define UINT_MAX	(~0U)
+#define LONG_MAX	((long)(~0UL >> 1))
+#define LONG_MIN	(-LONG_MAX - 1)
+#define ULONG_MAX	(~0UL)
+#define LLONG_MAX	((long long)(~0ULL >> 1))
+#define LLONG_MIN	(-LLONG_MAX - 1)
+#define ULLONG_MAX	(~0ULL)
+#define UINTPTR_MAX	ULONG_MAX
+
+#endif /* __VDSO_LIMITS_H */

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

* [tip: timers/core] x86: Introduce asm/vdso/clocksource.h
  2020-03-20 14:53 ` [PATCH v5 04/26] x86:Introduce asm/vdso/clocksource.h Vincenzo Frascino
@ 2020-03-21 14:33   ` tip-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: Vincenzo Frascino, Thomas Gleixner, x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     659a9faa3f3c89de4c34c30c3da676059864e0fe
Gitweb:        https://git.kernel.org/tip/659a9faa3f3c89de4c34c30c3da676059864e0fe
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:29 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:23:54 +01:00

x86: Introduce asm/vdso/clocksource.h

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.

Introduce asm/vdso/clocksource.h to contain all the arm64 specific
functions that are suitable for vDSO inclusion.

This header will be required by a future patch that will generalize
vdso/clocksource.h.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20200320145351.32292-5-vincenzo.frascino@arm.com

---
 arch/x86/include/asm/clocksource.h      |  5 +----
 arch/x86/include/asm/vdso/clocksource.h | 10 ++++++++++
 2 files changed, 11 insertions(+), 4 deletions(-)
 create mode 100644 arch/x86/include/asm/vdso/clocksource.h

diff --git a/arch/x86/include/asm/clocksource.h b/arch/x86/include/asm/clocksource.h
index d561db6..dc9dc7b 100644
--- a/arch/x86/include/asm/clocksource.h
+++ b/arch/x86/include/asm/clocksource.h
@@ -4,10 +4,7 @@
 #ifndef _ASM_X86_CLOCKSOURCE_H
 #define _ASM_X86_CLOCKSOURCE_H
 
-#define VDSO_ARCH_CLOCKMODES	\
-	VDSO_CLOCKMODE_TSC,	\
-	VDSO_CLOCKMODE_PVCLOCK,	\
-	VDSO_CLOCKMODE_HVCLOCK
+#include <asm/vdso/clocksource.h>
 
 extern unsigned int vclocks_used;
 
diff --git a/arch/x86/include/asm/vdso/clocksource.h b/arch/x86/include/asm/vdso/clocksource.h
new file mode 100644
index 0000000..119ac86
--- /dev/null
+++ b/arch/x86/include/asm/vdso/clocksource.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ASM_VDSO_CLOCKSOURCE_H
+#define __ASM_VDSO_CLOCKSOURCE_H
+
+#define VDSO_ARCH_CLOCKMODES	\
+	VDSO_CLOCKMODE_TSC,	\
+	VDSO_CLOCKMODE_PVCLOCK,	\
+	VDSO_CLOCKMODE_HVCLOCK
+
+#endif /* __ASM_VDSO_CLOCKSOURCE_H */

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

* [tip: timers/core] linux/bits.h: Extract common header for vDSO
  2020-03-20 14:53 ` [PATCH v5 02/26] linux/bits.h: " Vincenzo Frascino
@ 2020-03-21 14:33   ` tip-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: Vincenzo Frascino, Thomas Gleixner, x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     3945ff37d2f48d39fd1751d282c80176654049e4
Gitweb:        https://git.kernel.org/tip/3945ff37d2f48d39fd1751d282c80176654049e4
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:27 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:23:53 +01:00

linux/bits.h: Extract common header for vDSO

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.

Split bits.h into linux and common headers to make the latter suitable
for inclusion in the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20200320145351.32292-3-vincenzo.frascino@arm.com

---
 include/linux/bits.h |  2 +-
 include/vdso/bits.h  |  9 +++++++++
 2 files changed, 10 insertions(+), 1 deletion(-)
 create mode 100644 include/vdso/bits.h

diff --git a/include/linux/bits.h b/include/linux/bits.h
index 669d694..a740bbc 100644
--- a/include/linux/bits.h
+++ b/include/linux/bits.h
@@ -3,9 +3,9 @@
 #define __LINUX_BITS_H
 
 #include <linux/const.h>
+#include <vdso/bits.h>
 #include <asm/bitsperlong.h>
 
-#define BIT(nr)			(UL(1) << (nr))
 #define BIT_ULL(nr)		(ULL(1) << (nr))
 #define BIT_MASK(nr)		(UL(1) << ((nr) % BITS_PER_LONG))
 #define BIT_WORD(nr)		((nr) / BITS_PER_LONG)
diff --git a/include/vdso/bits.h b/include/vdso/bits.h
new file mode 100644
index 0000000..6d005a1
--- /dev/null
+++ b/include/vdso/bits.h
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_BITS_H
+#define __VDSO_BITS_H
+
+#include <vdso/const.h>
+
+#define BIT(nr)			(UL(1) << (nr))
+
+#endif	/* __VDSO_BITS_H */

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

* [tip: timers/core] linux/const.h: Extract common header for vDSO
  2020-03-20 14:53 ` [PATCH v5 01/26] linux/const.h: Extract common header " Vincenzo Frascino
@ 2020-03-21 14:33   ` tip-bot2 for Vincenzo Frascino
  0 siblings, 0 replies; 56+ messages in thread
From: tip-bot2 for Vincenzo Frascino @ 2020-03-21 14:33 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: Vincenzo Frascino, Thomas Gleixner, x86, LKML

The following commit has been merged into the timers/core branch of tip:

Commit-ID:     8165b57bca2167acc150b708a9a6b7322f235e91
Gitweb:        https://git.kernel.org/tip/8165b57bca2167acc150b708a9a6b7322f235e91
Author:        Vincenzo Frascino <vincenzo.frascino@arm.com>
AuthorDate:    Fri, 20 Mar 2020 14:53:26 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 21 Mar 2020 15:23:53 +01:00

linux/const.h: Extract common header for vDSO

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.

Split const.h into linux and common headers to make the latter suitable
for inclusion in the vDSO library.

Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20200320145351.32292-2-vincenzo.frascino@arm.com

---
 include/linux/const.h |  5 +----
 include/vdso/const.h  | 10 ++++++++++
 2 files changed, 11 insertions(+), 4 deletions(-)
 create mode 100644 include/vdso/const.h

diff --git a/include/linux/const.h b/include/linux/const.h
index 7b55a55..81b8aae 100644
--- a/include/linux/const.h
+++ b/include/linux/const.h
@@ -1,9 +1,6 @@
 #ifndef _LINUX_CONST_H
 #define _LINUX_CONST_H
 
-#include <uapi/linux/const.h>
-
-#define UL(x)		(_UL(x))
-#define ULL(x)		(_ULL(x))
+#include <vdso/const.h>
 
 #endif /* _LINUX_CONST_H */
diff --git a/include/vdso/const.h b/include/vdso/const.h
new file mode 100644
index 0000000..94b385a
--- /dev/null
+++ b/include/vdso/const.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_CONST_H
+#define __VDSO_CONST_H
+
+#include <uapi/linux/const.h>
+
+#define UL(x)		(_UL(x))
+#define ULL(x)		(_ULL(x))
+
+#endif /* __VDSO_CONST_H */

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

end of thread, other threads:[~2020-03-21 14:34 UTC | newest]

Thread overview: 56+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 ` [PATCH v5 25/26] lib: vdso: Enable " Vincenzo Frascino
2020-03-21 14:33   ` [tip: timers/core] lib/vdso: " 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

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).