mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "tip-bot2 for Thomas Weißschuh" <tip-bot2@linutronix.de>
To: linux-tip-commits@vger.kernel.org
Cc: thomas.weissschuh@linutronix.de,
	Thomas Gleixner <tglx@linutronix.de>,
	Andreas Larsson <andreas@gaisler.com>,
	x86@kernel.org, linux-kernel@vger.kernel.org
Subject: [tip: timers/vdso] vdso/datastore: Map pages through struct page
Date: Sat, 01 Nov 2025 19:47:47 -0000	[thread overview]
Message-ID: <176202646793.2601451.2396648642285838920.tip-bot2@tip-bot2> (raw)
In-Reply-To: <20251014-vdso-sparc64-generic-2-v4-23-e0607bf49dea@linutronix.de>

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

Commit-ID:     6a011a22829362bfee8ff9fc1212f803c18af5f2
Gitweb:        https://git.kernel.org/tip/6a011a22829362bfee8ff9fc1212f803c18af5f2
Author:        Thomas Weißschuh <thomas.weissschuh@linutronix.de>
AuthorDate:    Tue, 14 Oct 2025 08:49:09 +02:00
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Sat, 01 Nov 2025 20:44:06 +01:00

vdso/datastore: Map pages through struct page

An upcoming change will allocate the datapages dynamically instead of as
part of the kernel image. Such pages can only be mapped through
'struct page' and not through PFNs.

Prepare for the dynamic allocation by mapping through 'struct page'.

VM_MIXEDMAP is necessary for the call to vmf_insert_page() in the timens
prefault path to work.

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Andreas Larsson <andreas@gaisler.com>
Reviewed-by: Andreas Larsson <andreas@gaisler.com>
Link: https://patch.msgid.link/20251014-vdso-sparc64-generic-2-v4-23-e0607bf49dea@linutronix.de
---
 lib/vdso/datastore.c | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/lib/vdso/datastore.c b/lib/vdso/datastore.c
index 7377fcb..6e5feb4 100644
--- a/lib/vdso/datastore.c
+++ b/lib/vdso/datastore.c
@@ -39,14 +39,15 @@ struct vdso_arch_data *vdso_k_arch_data = &vdso_arch_data_store.data;
 static vm_fault_t vvar_fault(const struct vm_special_mapping *sm,
 			     struct vm_area_struct *vma, struct vm_fault *vmf)
 {
-	struct page *timens_page = find_timens_vvar_page(vma);
-	unsigned long pfn;
+	struct page *page, *timens_page;
+
+	timens_page = find_timens_vvar_page(vma);
 
 	switch (vmf->pgoff) {
 	case VDSO_TIME_PAGE_OFFSET:
 		if (!IS_ENABLED(CONFIG_GENERIC_GETTIMEOFDAY))
 			return VM_FAULT_SIGBUS;
-		pfn = __phys_to_pfn(__pa_symbol(vdso_k_time_data));
+		page = virt_to_page(vdso_k_time_data);
 		if (timens_page) {
 			/*
 			 * Fault in VVAR page too, since it will be accessed
@@ -56,10 +57,10 @@ static vm_fault_t vvar_fault(const struct vm_special_mapping *sm,
 			vm_fault_t err;
 
 			addr = vmf->address + VDSO_TIMENS_PAGE_OFFSET * PAGE_SIZE;
-			err = vmf_insert_pfn(vma, addr, pfn);
+			err = vmf_insert_page(vma, addr, page);
 			if (unlikely(err & VM_FAULT_ERROR))
 				return err;
-			pfn = page_to_pfn(timens_page);
+			page = timens_page;
 		}
 		break;
 	case VDSO_TIMENS_PAGE_OFFSET:
@@ -72,24 +73,25 @@ static vm_fault_t vvar_fault(const struct vm_special_mapping *sm,
 		 */
 		if (!IS_ENABLED(CONFIG_TIME_NS) || !timens_page)
 			return VM_FAULT_SIGBUS;
-		pfn = __phys_to_pfn(__pa_symbol(vdso_k_time_data));
+		page = virt_to_page(vdso_k_time_data);
 		break;
 	case VDSO_RNG_PAGE_OFFSET:
 		if (!IS_ENABLED(CONFIG_VDSO_GETRANDOM))
 			return VM_FAULT_SIGBUS;
-		pfn = __phys_to_pfn(__pa_symbol(vdso_k_rng_data));
+		page = virt_to_page(vdso_k_rng_data);
 		break;
 	case VDSO_ARCH_PAGES_START ... VDSO_ARCH_PAGES_END:
 		if (!IS_ENABLED(CONFIG_ARCH_HAS_VDSO_ARCH_DATA))
 			return VM_FAULT_SIGBUS;
-		pfn = __phys_to_pfn(__pa_symbol(vdso_k_arch_data)) +
-			vmf->pgoff - VDSO_ARCH_PAGES_START;
+		page = virt_to_page(vdso_k_arch_data) + vmf->pgoff - VDSO_ARCH_PAGES_START;
 		break;
 	default:
 		return VM_FAULT_SIGBUS;
 	}
 
-	return vmf_insert_pfn(vma, vmf->address, pfn);
+	get_page(page);
+	vmf->page = page;
+	return 0;
 }
 
 const struct vm_special_mapping vdso_vvar_mapping = {
@@ -101,7 +103,7 @@ struct vm_area_struct *vdso_install_vvar_mapping(struct mm_struct *mm, unsigned 
 {
 	return _install_special_mapping(mm, addr, VDSO_NR_PAGES * PAGE_SIZE,
 					VM_READ | VM_MAYREAD | VM_IO | VM_DONTDUMP |
-					VM_PFNMAP | VM_SEALED_SYSMAP,
+					VM_MIXEDMAP | VM_SEALED_SYSMAP,
 					&vdso_vvar_mapping);
 }
 

  reply	other threads:[~2025-11-01 19:47 UTC|newest]

Thread overview: 90+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-14  6:48 [PATCH v4 00/35] sparc64: vdso: Switch to the generic vDSO library Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 01/35] selftests: vDSO: vdso_test_correctness: Handle different tv_usec types Thomas Weißschuh
2025-11-01 19:48   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 02/35] arm64: vDSO: getrandom: Explicitly include asm/alternative.h Thomas Weißschuh
2025-11-01 19:48   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 03/35] arm64: vDSO: gettimeofday: Explicitly include vdso/clocksource.h Thomas Weißschuh
2025-11-01 19:48   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 04/35] arm64: vDSO: compat_gettimeofday: Add explicit includes Thomas Weißschuh
2025-11-01 19:48   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 05/35] ARM: vdso: gettimeofday: " Thomas Weißschuh
2025-11-01 19:48   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 06/35] powerpc/vdso/gettimeofday: Explicitly include vdso/time32.h Thomas Weißschuh
2025-10-14  7:42   ` Christophe Leroy
2025-11-01 19:48   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 07/35] powerpc/vdso: Explicitly include asm/cputable.h and asm/feature-fixups.h Thomas Weißschuh
2025-11-01 19:48   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 08/35] LoongArch: vDSO: Explicitly include asm/vdso/vdso.h Thomas Weißschuh
2025-11-01 19:48   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 09/35] MIPS: vdso: Add include guard to asm/vdso/vdso.h Thomas Weißschuh
2025-11-01 19:48   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 10/35] MIPS: vdso: Explicitly include asm/vdso/vdso.h Thomas Weißschuh
2025-11-01 19:48   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 11/35] random: vDSO: Add explicit includes Thomas Weißschuh
2025-11-01 19:48   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 12/35] vdso/gettimeofday: " Thomas Weißschuh
2025-11-01 19:48   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:48 ` [PATCH v4 13/35] vdso/helpers: Explicitly include vdso/processor.h Thomas Weißschuh
2025-11-01 19:48   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 14/35] vdso/datapage: Remove inclusion of gettimeofday.h Thomas Weißschuh
2025-11-01 19:47   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 15/35] vdso/datapage: Trim down unnecessary includes Thomas Weißschuh
2025-11-01 19:47   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 16/35] random: vDSO: trim vDSO includes Thomas Weißschuh
2025-11-01 19:47   ` [tip: timers/vdso] random: vDSO: Trim " tip-bot2 for Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 17/35] random: vDSO: remove ifdeffery Thomas Weißschuh
2025-11-01 19:47   ` [tip: timers/vdso] random: vDSO: Remove ifdeffery tip-bot2 for Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 18/35] random: vDSO: split out datapage update into helper functions Thomas Weißschuh
2025-11-01 19:47   ` [tip: timers/vdso] random: vDSO: Split " tip-bot2 for Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 19/35] random: vDSO: only access vDSO datapage after random_init() Thomas Weißschuh
2025-11-01 19:47   ` [tip: timers/vdso] random: vDSO: Only " tip-bot2 for Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 20/35] s390/time: Set up vDSO datapage later Thomas Weißschuh
2025-11-01 19:47   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 21/35] vdso/datastore: Reduce scope of some variables in vvar_fault() Thomas Weißschuh
2025-11-01 19:47   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 22/35] vdso/datastore: Drop inclusion of linux/mmap_lock.h Thomas Weißschuh
2025-11-01 19:47   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 23/35] vdso/datastore: Map pages through struct page Thomas Weißschuh
2025-11-01 19:47   ` tip-bot2 for Thomas Weißschuh [this message]
2025-11-03 15:24   ` Mark Brown
2025-11-03 15:54     ` Thomas Gleixner
2025-11-03 16:55       ` Mark Brown
     [not found]     ` <CGME20251104084442eucas1p2af1bd88393f4d6a532df1cd41f32a287@eucas1p2.samsung.com>
2025-11-04  8:44       ` Marek Szyprowski
2025-11-04  8:58         ` Thomas Weißschuh
2025-11-04 13:14         ` Mark Brown
2025-11-04 15:43           ` Thomas Weißschuh
2025-11-04 15:47             ` Mark Brown
2025-11-04 16:03               ` Thomas Weißschuh
2025-11-04 16:21                 ` Mark Brown
2025-11-04 13:29         ` Mark Brown
2025-11-06 13:28         ` Mark Brown
2025-11-06 13:32           ` Thomas Weißschuh
2025-11-06 13:39             ` Mark Brown
2025-10-14  6:49 ` [PATCH v4 24/35] vdso/datastore: Allocate data pages dynamically Thomas Weißschuh
2025-11-01 19:47   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-11-04  8:49   ` Lad Prabhakar
2025-11-05 15:34   ` [PATCH v4 24/35] " Heiko Carstens
2025-11-05 16:13     ` Thomas Weißschuh
2025-11-06 12:43     ` Aithal, Srikanth
2025-10-14  6:49 ` [PATCH v4 25/35] sparc64: vdso: Link with -z noexecstack Thomas Weißschuh
2025-11-01 19:47   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 26/35] sparc64: vdso: Remove obsolete "fake section table" reservation Thomas Weißschuh
2025-11-01 19:47   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 27/35] sparc64: vdso: Replace code patching with runtime conditional Thomas Weißschuh
2025-11-01 19:47   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 28/35] sparc64: vdso: Move hardware counter read into header Thomas Weißschuh
2025-11-01 19:47   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 29/35] sparc64: vdso: Move syscall fallbacks " Thomas Weißschuh
2025-11-01 19:47   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 30/35] sparc64: vdso: Introduce vdso/processor.h Thomas Weißschuh
2025-11-01 19:47   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 31/35] sparc64: vdso: Switch to the generic vDSO library Thomas Weißschuh
2025-11-01 19:47   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 32/35] sparc64: vdso2c: Drop sym_vvar_start handling Thomas Weißschuh
2025-11-01 19:47   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 33/35] sparc64: vdso2c: Remove symbol handling Thomas Weißschuh
2025-11-01 19:47   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 34/35] sparc64: vdso: Implement clock_gettime64() Thomas Weißschuh
2025-11-01 19:47   ` [tip: timers/vdso] " tip-bot2 for Thomas Weißschuh
2025-10-14  6:49 ` [PATCH v4 35/35] clocksource: remove ARCH_CLOCKSOURCE_DATA Thomas Weißschuh
2025-11-01 19:47   ` [tip: timers/vdso] clocksource: Remove ARCH_CLOCKSOURCE_DATA tip-bot2 for Arnd Bergmann

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=176202646793.2601451.2396648642285838920.tip-bot2@tip-bot2 \
    --to=tip-bot2@linutronix.de \
    --cc=andreas@gaisler.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=thomas.weissschuh@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®