From nobody Sun Jan 25 00:24:47 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4dzC9C3Z0cz6Pv0N for ; Sun, 25 Jan 2026 00:24:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4dzC9C0tMPz3cyH for ; Sun, 25 Jan 2026 00:24:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1769300687; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=iNt+IyyXhBEEJLC6UpAIGyk3Kj10cNxJ2hL6uQozEEg=; b=ugy9D5kyjhTRauORrJxgzIr0DpNZ3yfmbyboQOH1FLvG2knRPg47LiNyfVfjFBTfuv/+J1 VIvxHPbeLmR6+EqQGWZInZDymkqiqj00MIhWpY2FHhseX8aw/jQUXEJHz/jVBbZSOEzeZ2 klqgRWaptaEIjj3CxtP0BoK3hNEbGohpSRHm4SkRM5p8SnpvXMo3OcTH9XjZHDgdemwKHk 8OwSa/qAuf48QmVXm0/syejazlFu41stICcFUT77sM1YH9X/0oBpRqjFL1Hfu3VBJ8nH1Y tVIfeucUyBtABJ2HnBGr9LBZDsr/nnW9EIyYYEF2xqGVteilT38pm/0BT/Q1Qg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1769300687; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=iNt+IyyXhBEEJLC6UpAIGyk3Kj10cNxJ2hL6uQozEEg=; b=T1fhGzbGDlxKwZINbXS5HRGn0kHabCHfMp115Q/2N1BeXtgO4e/3Hs0KLVeNuS/TqNY9Gg gmEPq4RDAsCDZd3nVf7j/LafnPVnzSD3LyQqoDirpZjlog64fyjYEFlSuoftT9VNbG8BTb GSJ4tr/RIIh/33HUIQXI+S+X8fklzXjVWgmnvlQdPn+3DlAk6DKXQqIMeK9hnxABOZS7kd kaoKiWtve3bVsAxTY1GWDa+OOCOGY31MUbZV4ImRfB/UdUf3GKBIyQDaA3pOz6FgeqUKX1 LoMuL+E7pADLJKpVvEeKWosrDBo+uvGLgEgYvjfUrU6cB/cDgFwToDTCgD2mQQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1769300687; a=rsa-sha256; cv=none; b=osGc0dP6HwOiQ/2e+MYgSNrRj80t78Bq+CDPvmQV+qknXWRTML2G5VSRYVIv/nx8BJAzym bFOMS4oxCb+HlRX5mH+SoHzbrUFXI5UdBaT1virD8kclZ0Rt5Xg8pUjbfGMGWKBF4lF2Dj Ox3Sg9TNw7ArRafwfs0qTKfBsq0ni8qAA63D8uhg+APjgDaM6eBnKIY4yeFbVi2syOTiyF ATU7vN8rGc8WWl/XmCGCyQnC15rKKxyET/cT6kNNtjS+guUDiJOCBuDcSOUGap3NwTi+z2 ZF7TTjoZTkzlzTpjQhlyZy6i2B+XZI8KG4DqizmkXPXMy6BAQuIOB9mbuC2vpg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4dzC9C0Rkfz1Qfr for ; Sun, 25 Jan 2026 00:24:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 8088 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 25 Jan 2026 00:24:47 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 21dd894a5e0f - stable/15 - sys: do not allow entering vm_fault() on boot until VM is initialized List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 21dd894a5e0ff42f2a7f34ad2fe4e4fc06a00126 Auto-Submitted: auto-generated Date: Sun, 25 Jan 2026 00:24:47 +0000 Message-Id: <697562cf.8088.11c51627@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=21dd894a5e0ff42f2a7f34ad2fe4e4fc06a00126 commit 21dd894a5e0ff42f2a7f34ad2fe4e4fc06a00126 Author: Konstantin Belousov AuthorDate: 2026-01-18 21:14:59 +0000 Commit: Konstantin Belousov CommitDate: 2026-01-25 00:23:35 +0000 sys: do not allow entering vm_fault() on boot until VM is initialized (cherry picked from commit 83d98828867591b5d842573ed6edcec7392f82df) --- sys/amd64/amd64/machdep.c | 5 +---- sys/kern/init_main.c | 12 +++++++++++- sys/vm/vm_init.c | 8 ++++++++ 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c index 2fce1a7e64b6..cae58181000f 100644 --- a/sys/amd64/amd64/machdep.c +++ b/sys/amd64/amd64/machdep.c @@ -1518,13 +1518,11 @@ hammer_time(u_int64_t modulep, u_int64_t physfree) /* * We initialize the PCB pointer early so that exception - * handlers will work. Also set up td_critnest to short-cut - * the page fault handler. + * handlers will work. */ cpu_max_ext_state_size = sizeof(struct savefpu); set_top_of_stack_td(&thread0); thread0.td_pcb = get_pcb_td(&thread0); - thread0.td_critnest = 1; /* * The console and kdb should be initialized even earlier than here, @@ -1615,7 +1613,6 @@ hammer_time(u_int64_t modulep, u_int64_t physfree) #ifdef FDT x86_init_fdt(); #endif - thread0.td_critnest = 0; kasan_init(); kmsan_init(); diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c index 48cc9c1d95c4..4cccb2546a9a 100644 --- a/sys/kern/init_main.c +++ b/sys/kern/init_main.c @@ -104,7 +104,17 @@ void mi_startup(void); /* Should be elsewhere */ static struct session session0; static struct pgrp pgrp0; struct proc proc0; -struct thread0_storage thread0_st __aligned(32); +struct thread0_storage thread0_st __aligned(32) = { + .t0st_thread = { + /* + * thread0.td_pflags is set with TDP_NOFAULTING to + * short-cut the vm page fault handler until it is + * ready. It is cleared in vm_init() after VM + * initialization. + */ + .td_pflags = TDP_NOFAULTING, + }, +}; struct vmspace vmspace0; struct proc *initproc; diff --git a/sys/vm/vm_init.c b/sys/vm/vm_init.c index a0d3651ba266..2764b438d27b 100644 --- a/sys/vm/vm_init.c +++ b/sys/vm/vm_init.c @@ -159,6 +159,14 @@ vm_mem_init(void *dummy) pmap_init(); vm_pager_init(); + /* + * Now we can properly handle calls into vm_fault() from + * kernel page faults during initialization, typically to + * panic. Clear the nofaulting flag set for thread0 in the + * image, see kern/init_main.c + */ + curthread->td_pflags &= ~TDP_NOFAULTING; + #ifdef INVARIANTS vm_check_pagesizes(); #endif