From: Tiwei Bie <tiwei.bie@linux.dev>
To: richard@nod.at, anton.ivanov@cambridgegreys.com,
johannes@sipsolutions.net
Cc: linux-um@lists.infradead.org, linux-kernel@vger.kernel.org,
benjamin@sipsolutions.net, arnd@arndb.de, tiwei.btw@antgroup.com,
tiwei.bie@linux.dev
Subject: [PATCH v2 03/10] um: vdso: Implement __vdso_getcpu() via syscall
Date: Sun, 10 Aug 2025 13:51:29 +0800 [thread overview]
Message-ID: <20250810055136.897712-4-tiwei.bie@linux.dev> (raw)
In-Reply-To: <20250810055136.897712-1-tiwei.bie@linux.dev>
From: Tiwei Bie <tiwei.btw@antgroup.com>
We are going to support SMP in UML, so we can not hard code
the CPU and NUMA node in __vdso_getcpu() anymore.
Signed-off-by: Tiwei Bie <tiwei.btw@antgroup.com>
---
arch/x86/um/vdso/um_vdso.c | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/arch/x86/um/vdso/um_vdso.c b/arch/x86/um/vdso/um_vdso.c
index cbae2584124f..ee40ac446c1c 100644
--- a/arch/x86/um/vdso/um_vdso.c
+++ b/arch/x86/um/vdso/um_vdso.c
@@ -17,7 +17,7 @@
int __vdso_clock_gettime(clockid_t clock, struct __kernel_old_timespec *ts);
int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz);
__kernel_old_time_t __vdso_time(__kernel_old_time_t *t);
-long __vdso_getcpu(unsigned int *cpu, unsigned int *node, struct getcpu_cache *unused);
+long __vdso_getcpu(unsigned int *cpu, unsigned int *node, struct getcpu_cache *tcache);
int __vdso_clock_gettime(clockid_t clock, struct __kernel_old_timespec *ts)
{
@@ -60,18 +60,16 @@ __kernel_old_time_t __vdso_time(__kernel_old_time_t *t)
__kernel_old_time_t time(__kernel_old_time_t *t) __attribute__((weak, alias("__vdso_time")));
long
-__vdso_getcpu(unsigned int *cpu, unsigned int *node, struct getcpu_cache *unused)
+__vdso_getcpu(unsigned int *cpu, unsigned int *node, struct getcpu_cache *tcache)
{
- /*
- * UML does not support SMP, we can cheat here. :)
- */
+ long ret;
- if (cpu)
- *cpu = 0;
- if (node)
- *node = 0;
+ asm volatile("syscall"
+ : "=a" (ret)
+ : "0" (__NR_getcpu), "D" (cpu), "S" (node), "d" (tcache)
+ : "rcx", "r11", "memory");
- return 0;
+ return ret;
}
long getcpu(unsigned int *cpu, unsigned int *node, struct getcpu_cache *tcache)
--
2.34.1
next prev parent reply other threads:[~2025-08-10 5:52 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-10 5:51 [PATCH v2 00/10] um: Add SMP support Tiwei Bie
2025-08-10 5:51 ` [PATCH v2 01/10] um: Stop tracking virtual CPUs via mm_cpumask() Tiwei Bie
2025-08-10 5:51 ` [PATCH v2 02/10] um: Remove unused cpu_data and current_cpu_data macros Tiwei Bie
2025-08-10 5:51 ` Tiwei Bie [this message]
2025-09-10 11:59 ` [PATCH v2 03/10] um: vdso: Implement __vdso_getcpu() via syscall Johannes Berg
2025-09-11 4:29 ` Tiwei Bie
2025-09-21 20:00 ` Thomas Weißschuh
2025-09-22 4:50 ` Tiwei Bie
2025-09-22 12:05 ` Thomas Weißschuh
2025-09-22 12:12 ` Johannes Berg
2025-09-22 14:01 ` Thomas Weißschuh
2025-09-22 15:14 ` Johannes Berg
2025-09-22 16:04 ` Thomas Weißschuh
2025-09-22 17:07 ` Johannes Berg
2025-09-25 17:08 ` Thomas Weißschuh
2025-10-21 13:20 ` Johannes Berg
2025-08-10 5:51 ` [PATCH v2 04/10] um: Turn signals_* into thread-local variables Tiwei Bie
2025-09-10 12:15 ` Johannes Berg
2025-09-11 4:34 ` Tiwei Bie
2025-09-11 7:37 ` Benjamin Berg
2025-09-11 8:06 ` Benjamin Berg
2025-09-12 0:30 ` Tiwei Bie
2025-09-12 7:58 ` Benjamin Berg
2025-09-12 13:27 ` Tiwei Bie
2025-09-11 9:44 ` Johannes Berg
2025-09-11 10:35 ` Benjamin Berg
2025-08-10 5:51 ` [PATCH v2 05/10] um: Determine sleep based on need_resched() Tiwei Bie
2025-09-10 12:10 ` Johannes Berg
2025-09-11 4:39 ` Tiwei Bie
2025-09-11 6:59 ` Johannes Berg
2025-09-12 0:59 ` Tiwei Bie
2025-09-11 9:27 ` Johannes Berg
2025-09-12 0:54 ` Tiwei Bie
2025-08-10 5:51 ` [PATCH v2 06/10] um: Define timers on a per-CPU basis Tiwei Bie
2025-08-10 9:49 ` kernel test robot
2025-08-10 5:51 ` [PATCH v2 07/10] um: Remove unused ipi_pipe field from cpuinfo_um Tiwei Bie
2025-08-10 5:51 ` [PATCH v2 08/10] um: Add initial SMP support Tiwei Bie
2025-09-11 9:32 ` Johannes Berg
2025-09-12 0:45 ` Tiwei Bie
2025-09-12 7:58 ` Johannes Berg
2025-08-10 5:51 ` [PATCH v2 09/10] asm-generic: percpu: Add assembly guard Tiwei Bie
2025-09-10 12:12 ` Johannes Berg
2025-08-10 5:51 ` [PATCH v2 10/10] um: Enable SMP support on x86 Tiwei Bie
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=20250810055136.897712-4-tiwei.bie@linux.dev \
--to=tiwei.bie@linux.dev \
--cc=anton.ivanov@cambridgegreys.com \
--cc=arnd@arndb.de \
--cc=benjamin@sipsolutions.net \
--cc=johannes@sipsolutions.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-um@lists.infradead.org \
--cc=richard@nod.at \
--cc=tiwei.btw@antgroup.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.