All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vincenzo Frascino <vincenzo.frascino@arm.com>
To: linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Cc: Arnd Bergmann <arnd@arndb.de>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	Will Deacon <will.deacon@arm.com>,
	Russell King <linux@armlinux.org.uk>,
	Ralf Baechle <ralf@linux-mips.org>,
	Mark Salyzyn <salyzyn@android.com>,
	Paul Burton <paul.burton@mips.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Peter Collingbourne <pcc@google.com>
Subject: [PATCH v3 01/24] kernel: Standardize vdso_datapage
Date: Thu, 13 Dec 2018 16:57:23 +0000	[thread overview]
Message-ID: <20181213165746.56930-2-vincenzo.frascino@arm.com> (raw)
In-Reply-To: <20181213165746.56930-1-vincenzo.frascino@arm.com>

In an effort to unify the common code for managing the vdso library in
between all the architectures that support it, this patch tries to
provide a common format for the vdso datapage.

As a result of this, this patch generalized the data structures in vgtod.h
from x86 private includes to general includes (include/vdso).

Cc: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 include/vdso/datapage.h | 60 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 60 insertions(+)
 create mode 100644 include/vdso/datapage.h

diff --git a/include/vdso/datapage.h b/include/vdso/datapage.h
new file mode 100644
index 000000000000..e88678f918e5
--- /dev/null
+++ b/include/vdso/datapage.h
@@ -0,0 +1,60 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_DATAPAGE_H
+#define __VDSO_DATAPAGE_H
+
+#ifdef __KERNEL__
+
+#ifndef __ASSEMBLY__
+
+#include <linux/bits.h>
+#include <linux/types.h>
+#include <linux/time.h>
+
+#define VDSO_BASES	(CLOCK_TAI + 1)
+#define VDSO_HRES	(BIT(CLOCK_REALTIME)		| \
+			 BIT(CLOCK_MONOTONIC)		| \
+			 BIT(CLOCK_MONOTONIC_RAW)	| \
+			 BIT(CLOCK_BOOTTIME)		| \
+			 BIT(CLOCK_TAI))
+#define VDSO_COARSE	(BIT(CLOCK_REALTIME_COARSE)	| \
+			 BIT(CLOCK_MONOTONIC_COARSE))
+
+/*
+ * There is one vdso_timestamp object in vvar for each vDSO-accelerated
+ * clock_id. For high-resolution clocks, this encodes the time
+ * corresponding to vdso_data.cycle_last. For coarse clocks this encodes
+ * the actual time.
+ *
+ * To be noticed that nsec is left-shifted by vdso_data.shift.
+ */
+struct vdso_timestamp {
+	u64 sec;
+	u64 nsec;
+};
+
+/*
+ * vdso_data will be accessed by 32 and 64 bit code at the same time
+ * so we should be careful before modifying this structure.
+ */
+struct vdso_data {
+	u32 seq;		/* Timebase sequence counter */
+
+	s32 clock_mode;
+	u64 cycle_last;		/* Timebase at clocksource init */
+	u64 mask;		/* Clocksource mask (mono = raw) */
+	u32 mult;		/* Clocksource multiplier */
+	u32 shift;		/* Clocksource shift (mono = raw) */
+
+	struct vdso_timestamp basetime[VDSO_BASES];
+
+	s32 tz_minuteswest;	/* Timezone definitions */
+	s32 tz_dsttime;
+	u32 use_syscall;
+	u32 __reserved;
+};
+
+#endif /* !__ASSEMBLY__ */
+
+#endif /* __KERNEL__ */
+
+#endif /* __VDSO_DATAPAGE_H */
-- 
2.19.2

WARNING: multiple messages have this Message-ID (diff)
From: Vincenzo Frascino <vincenzo.frascino@arm.com>
To: linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Cc: Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will.deacon@arm.com>, Arnd Bergmann <arnd@arndb.de>,
	Russell King <linux@armlinux.org.uk>,
	Ralf Baechle <ralf@linux-mips.org>,
	Paul Burton <paul.burton@mips.com>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Mark Salyzyn <salyzyn@android.com>,
	Peter Collingbourne <pcc@google.com>
Subject: [PATCH v3 01/24] kernel: Standardize vdso_datapage
Date: Thu, 13 Dec 2018 16:57:23 +0000	[thread overview]
Message-ID: <20181213165746.56930-2-vincenzo.frascino@arm.com> (raw)
Message-ID: <20181213165723.tV7w5mVw4jvOMilCn-U1xPszoRPup1kOFf3qWvko9ZI@z> (raw)
In-Reply-To: <20181213165746.56930-1-vincenzo.frascino@arm.com>

In an effort to unify the common code for managing the vdso library in
between all the architectures that support it, this patch tries to
provide a common format for the vdso datapage.

As a result of this, this patch generalized the data structures in vgtod.h
from x86 private includes to general includes (include/vdso).

Cc: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 include/vdso/datapage.h | 60 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 60 insertions(+)
 create mode 100644 include/vdso/datapage.h

diff --git a/include/vdso/datapage.h b/include/vdso/datapage.h
new file mode 100644
index 000000000000..e88678f918e5
--- /dev/null
+++ b/include/vdso/datapage.h
@@ -0,0 +1,60 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_DATAPAGE_H
+#define __VDSO_DATAPAGE_H
+
+#ifdef __KERNEL__
+
+#ifndef __ASSEMBLY__
+
+#include <linux/bits.h>
+#include <linux/types.h>
+#include <linux/time.h>
+
+#define VDSO_BASES	(CLOCK_TAI + 1)
+#define VDSO_HRES	(BIT(CLOCK_REALTIME)		| \
+			 BIT(CLOCK_MONOTONIC)		| \
+			 BIT(CLOCK_MONOTONIC_RAW)	| \
+			 BIT(CLOCK_BOOTTIME)		| \
+			 BIT(CLOCK_TAI))
+#define VDSO_COARSE	(BIT(CLOCK_REALTIME_COARSE)	| \
+			 BIT(CLOCK_MONOTONIC_COARSE))
+
+/*
+ * There is one vdso_timestamp object in vvar for each vDSO-accelerated
+ * clock_id. For high-resolution clocks, this encodes the time
+ * corresponding to vdso_data.cycle_last. For coarse clocks this encodes
+ * the actual time.
+ *
+ * To be noticed that nsec is left-shifted by vdso_data.shift.
+ */
+struct vdso_timestamp {
+	u64 sec;
+	u64 nsec;
+};
+
+/*
+ * vdso_data will be accessed by 32 and 64 bit code at the same time
+ * so we should be careful before modifying this structure.
+ */
+struct vdso_data {
+	u32 seq;		/* Timebase sequence counter */
+
+	s32 clock_mode;
+	u64 cycle_last;		/* Timebase at clocksource init */
+	u64 mask;		/* Clocksource mask (mono = raw) */
+	u32 mult;		/* Clocksource multiplier */
+	u32 shift;		/* Clocksource shift (mono = raw) */
+
+	struct vdso_timestamp basetime[VDSO_BASES];
+
+	s32 tz_minuteswest;	/* Timezone definitions */
+	s32 tz_dsttime;
+	u32 use_syscall;
+	u32 __reserved;
+};
+
+#endif /* !__ASSEMBLY__ */
+
+#endif /* __KERNEL__ */
+
+#endif /* __VDSO_DATAPAGE_H */
-- 
2.19.2

WARNING: multiple messages have this Message-ID (diff)
From: Vincenzo Frascino <vincenzo.frascino@arm.com>
To: linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Cc: Arnd Bergmann <arnd@arndb.de>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	Will Deacon <will.deacon@arm.com>,
	Russell King <linux@armlinux.org.uk>,
	Ralf Baechle <ralf@linux-mips.org>,
	Mark Salyzyn <salyzyn@android.com>,
	Paul Burton <paul.burton@mips.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Peter Collingbourne <pcc@google.com>
Subject: [PATCH v3 01/24] kernel: Standardize vdso_datapage
Date: Thu, 13 Dec 2018 16:57:23 +0000	[thread overview]
Message-ID: <20181213165746.56930-2-vincenzo.frascino@arm.com> (raw)
In-Reply-To: <20181213165746.56930-1-vincenzo.frascino@arm.com>

In an effort to unify the common code for managing the vdso library in
between all the architectures that support it, this patch tries to
provide a common format for the vdso datapage.

As a result of this, this patch generalized the data structures in vgtod.h
from x86 private includes to general includes (include/vdso).

Cc: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
---
 include/vdso/datapage.h | 60 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 60 insertions(+)
 create mode 100644 include/vdso/datapage.h

diff --git a/include/vdso/datapage.h b/include/vdso/datapage.h
new file mode 100644
index 000000000000..e88678f918e5
--- /dev/null
+++ b/include/vdso/datapage.h
@@ -0,0 +1,60 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __VDSO_DATAPAGE_H
+#define __VDSO_DATAPAGE_H
+
+#ifdef __KERNEL__
+
+#ifndef __ASSEMBLY__
+
+#include <linux/bits.h>
+#include <linux/types.h>
+#include <linux/time.h>
+
+#define VDSO_BASES	(CLOCK_TAI + 1)
+#define VDSO_HRES	(BIT(CLOCK_REALTIME)		| \
+			 BIT(CLOCK_MONOTONIC)		| \
+			 BIT(CLOCK_MONOTONIC_RAW)	| \
+			 BIT(CLOCK_BOOTTIME)		| \
+			 BIT(CLOCK_TAI))
+#define VDSO_COARSE	(BIT(CLOCK_REALTIME_COARSE)	| \
+			 BIT(CLOCK_MONOTONIC_COARSE))
+
+/*
+ * There is one vdso_timestamp object in vvar for each vDSO-accelerated
+ * clock_id. For high-resolution clocks, this encodes the time
+ * corresponding to vdso_data.cycle_last. For coarse clocks this encodes
+ * the actual time.
+ *
+ * To be noticed that nsec is left-shifted by vdso_data.shift.
+ */
+struct vdso_timestamp {
+	u64 sec;
+	u64 nsec;
+};
+
+/*
+ * vdso_data will be accessed by 32 and 64 bit code at the same time
+ * so we should be careful before modifying this structure.
+ */
+struct vdso_data {
+	u32 seq;		/* Timebase sequence counter */
+
+	s32 clock_mode;
+	u64 cycle_last;		/* Timebase at clocksource init */
+	u64 mask;		/* Clocksource mask (mono = raw) */
+	u32 mult;		/* Clocksource multiplier */
+	u32 shift;		/* Clocksource shift (mono = raw) */
+
+	struct vdso_timestamp basetime[VDSO_BASES];
+
+	s32 tz_minuteswest;	/* Timezone definitions */
+	s32 tz_dsttime;
+	u32 use_syscall;
+	u32 __reserved;
+};
+
+#endif /* !__ASSEMBLY__ */
+
+#endif /* __KERNEL__ */
+
+#endif /* __VDSO_DATAPAGE_H */
-- 
2.19.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2018-12-13 16:57 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-13 16:57 [PATCH v3 00/24] Unify vDSOs across more architectures Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino
2018-12-13 16:57 ` Vincenzo Frascino [this message]
2018-12-13 16:57   ` [PATCH v3 01/24] kernel: Standardize vdso_datapage Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 02/24] kernel: Define gettimeofday vdso common code Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-14 18:15   ` Mark Salyzyn
2018-12-14 18:15     ` Mark Salyzyn
2018-12-14 18:15     ` Mark Salyzyn
2019-01-10 10:36     ` Vincenzo Frascino
2019-01-10 10:36       ` Vincenzo Frascino
2019-01-10 10:36       ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 03/24] arm64: Build vDSO with -ffixed-x18 Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 04/24] arm64: Substitute gettimeofday with C implementation Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 05/24] arm64: compat: Alloc separate pages for vectors and sigpage Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 06/24] arm64: compat: Split kuser32 Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 07/24] arm64: compat: Refactor aarch32_alloc_vdso_pages() Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 08/24] arm64: compat: Add KUSER_HELPERS config option Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 09/24] arm64: compat: Add missing syscall numbers Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 10/24] arm64: compat: Expose signal related structures Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 11/24] arm64: compat: Generate asm offsets for signals Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 12/24] lib: vdso: Add compat support Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 13/24] arm64: compat: Add vDSO Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 14/24] arm64: Refactor vDSO code Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 15/24] arm64: compat: vDSO setup for compat layer Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 16/24] arm64: elf: vDSO code page discovery Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 17/24] arm64: compat: Get sigreturn trampolines from vDSO Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 18/24] arm64: Add vDSO compat support Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-17 15:26   ` Mark Salyzyn
2018-12-17 15:26     ` Mark Salyzyn
2018-12-17 15:26     ` Mark Salyzyn
2019-01-10 10:39     ` Vincenzo Frascino
2019-01-10 10:39       ` Vincenzo Frascino
2019-01-10 10:39       ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 19/24] arm64: Enable compat vDSO support Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 20/24] arm: Add support for generic vDSO Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 21/24] mips: Introduce vdso_direct Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 22/24] clock: csrc-4k: Add support for vdso_direct Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 23/24] clock: gic-timer: " Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57 ` [PATCH v3 24/24] mips: Add support for generic vDSO Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino
2018-12-13 16:57   ` Vincenzo Frascino

Reply instructions:

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

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

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

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

  git send-email \
    --in-reply-to=20181213165746.56930-2-vincenzo.frascino@arm.com \
    --to=vincenzo.frascino@arm.com \
    --cc=arnd@arndb.de \
    --cc=catalin.marinas@arm.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux@armlinux.org.uk \
    --cc=paul.burton@mips.com \
    --cc=pcc@google.com \
    --cc=ralf@linux-mips.org \
    --cc=salyzyn@android.com \
    --cc=tglx@linutronix.de \
    --cc=will.deacon@arm.com \
    /path/to/YOUR_REPLY

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

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.