All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: linux-kernel@vger.kernel.org, x86@kernel.org
Cc: Roland Mainz <roland.mainz@nrubsig.org>,
	"H. Peter Anvin" <hpa@zytor.com>, Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Ingo Molnar <mingo@redhat.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Subject: [PATCH 2/3] x86/vdso: Provide getcpu for x86-32.
Date: Fri, 25 Nov 2022 10:42:15 +0100	[thread overview]
Message-ID: <20221125094216.3663444-3-bigeasy@linutronix.de> (raw)
In-Reply-To: <20221125094216.3663444-1-bigeasy@linutronix.de>

Wire up __vdso_getcpu() for x86-32. The version for 64bit can be reused.
The defines must no be faked (like it is done for vclock_gettime.c)
because we need the 64bit defines for the 32bit VDSO because the segment
number of the host kernel is required.

Reuse the vgetcpu.c for vdso32. Remove the time* header files which lead
to compile errors on 32bit. Add segment.h which provides
vdso_read_cpunode() and its requirements.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 arch/x86/entry/vdso/Makefile            | 3 ++-
 arch/x86/entry/vdso/vdso32/vdso32.lds.S | 1 +
 arch/x86/entry/vdso/vdso32/vgetcpu.c    | 2 ++
 arch/x86/entry/vdso/vgetcpu.c           | 3 +--
 4 files changed, 6 insertions(+), 3 deletions(-)
 create mode 100644 arch/x86/entry/vdso/vdso32/vgetcpu.c

diff --git a/arch/x86/entry/vdso/Makefile b/arch/x86/entry/vdso/Makefile
index 3e88b9df8c8f1..fcbcfc2b4e1a7 100644
--- a/arch/x86/entry/vdso/Makefile
+++ b/arch/x86/entry/vdso/Makefile
@@ -29,7 +29,7 @@ VDSO32-$(CONFIG_IA32_EMULATION)	:= y
 # files to link into the vdso
 vobjs-y := vdso-note.o vclock_gettime.o vgetcpu.o
 vobjs32-y := vdso32/note.o vdso32/system_call.o vdso32/sigreturn.o
-vobjs32-y += vdso32/vclock_gettime.o
+vobjs32-y += vdso32/vclock_gettime.o vdso32/vgetcpu.o
 vobjs-$(CONFIG_X86_SGX)	+= vsgx.o
 
 # files to link into kernel
@@ -103,6 +103,7 @@ $(vobjs): KBUILD_AFLAGS += -DBUILD_VDSO
 CFLAGS_REMOVE_vclock_gettime.o = -pg
 CFLAGS_REMOVE_vdso32/vclock_gettime.o = -pg
 CFLAGS_REMOVE_vgetcpu.o = -pg
+CFLAGS_REMOVE_vdso32/vgetcpu.o = -pg
 CFLAGS_REMOVE_vsgx.o = -pg
 
 #
diff --git a/arch/x86/entry/vdso/vdso32/vdso32.lds.S b/arch/x86/entry/vdso/vdso32/vdso32.lds.S
index c7720995ab1af..8a3be07006bb6 100644
--- a/arch/x86/entry/vdso/vdso32/vdso32.lds.S
+++ b/arch/x86/entry/vdso/vdso32/vdso32.lds.S
@@ -28,6 +28,7 @@ VERSION
 		__vdso_time;
 		__vdso_clock_getres;
 		__vdso_clock_gettime64;
+		__vdso_getcpu;
 	};
 
 	LINUX_2.5 {
diff --git a/arch/x86/entry/vdso/vdso32/vgetcpu.c b/arch/x86/entry/vdso/vdso32/vgetcpu.c
new file mode 100644
index 0000000000000..b777f84ffae9b
--- /dev/null
+++ b/arch/x86/entry/vdso/vdso32/vgetcpu.c
@@ -0,0 +1,2 @@
+// SPDX-License-Identifier: GPL-2.0
+#include "../vgetcpu.c"
diff --git a/arch/x86/entry/vdso/vgetcpu.c b/arch/x86/entry/vdso/vgetcpu.c
index b88a82bbc3593..0a9007c240568 100644
--- a/arch/x86/entry/vdso/vgetcpu.c
+++ b/arch/x86/entry/vdso/vgetcpu.c
@@ -7,8 +7,7 @@
 
 #include <linux/kernel.h>
 #include <linux/getcpu.h>
-#include <linux/time.h>
-#include <asm/vgtod.h>
+#include <asm/segment.h>
 
 notrace long
 __vdso_getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *unused)
-- 
2.38.1


  parent reply	other threads:[~2022-11-25  9:43 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-25  9:42 [PATCH 0/3] x86: Provide a vdso for getcpu on x86-32 Sebastian Andrzej Siewior
2022-11-25  9:42 ` [PATCH 1/3] x86: Provide a full setup " Sebastian Andrzej Siewior
2023-02-06 14:57   ` [tip: x86/vdso] x86/cpu: Provide the full setup for getcpu() " tip-bot2 for Sebastian Andrzej Siewior
2022-11-25  9:42 ` Sebastian Andrzej Siewior [this message]
2023-02-06 14:57   ` [tip: x86/vdso] x86/vdso: Provide getcpu for x86-32 tip-bot2 for Sebastian Andrzej Siewior
2022-11-25  9:42 ` [PATCH 3/3] selftests: Make a warning if getcpu is missing on 32bit Sebastian Andrzej Siewior
2022-11-29 21:54   ` Shuah Khan
2023-02-06 14:57   ` [tip: x86/vdso] selftests: Emit a warning if getcpu() " tip-bot2 for Sebastian Andrzej Siewior
2023-01-12  8:52 ` [PATCH 0/3] x86: Provide a vdso for getcpu on x86-32 Sebastian Andrzej Siewior
2023-02-01 12:30   ` Roland Mainz

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=20221125094216.3663444-3-bigeasy@linutronix.de \
    --to=bigeasy@linutronix.de \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=roland.mainz@nrubsig.org \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

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

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