From nobody Thu Apr 23 18:16:18 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 4g1kmy6wlBz6bG3p for ; Thu, 23 Apr 2026 18:16:18 +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" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4g1kmy3tZ7z3QyT for ; Thu, 23 Apr 2026 18:16:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1776968178; 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=Pr/sbLpdIyTt7SOLR7NtMv47mz6BQ5vadTb9pTUMCrk=; b=I9k2iST7VqEwgkA4xJOqOUN1r5i9xMZtQR2VkEguUZ2dOXvzPj59MvbBIBUqWRYN7XFT64 1EwD25lNfm1/yATznEcVcgd6Zut7zzscI0fQjAf+UnvK98e1RpKfRjQLUZkZir4UiJpS9Q cWhaSlmD6jR0Fjyw4hTXTKlRmdKLRZEYcUEpyK46iu/N6eccZWS325tbZaNWgiVtSw2pnk H6SY9dH5WuBln3J5+u/CcFuWddr+6S5V4Zk1cvzlEtHlfW1MbsYo5tJ5dXYH9i6j3Jv/Id gsIeo8cC1TzsnTZCkPwUe5AhWoYwQbXgtdKGHqC29YUT4xJrybXNAxj4w67qXw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1776968178; a=rsa-sha256; cv=none; b=ZxWYvn4Lx5b9btNFlpww79/0izKthKUuSVXNpB8TQzFXCeqc51FnofSO9nvnUifcH7InPZ nXXAFyOBfHshpwmWEQZ74eSU85MSYKr7spriKqtdQhO4iKBaj4iSDboNdtTUwNeh4i+GqJ 6LalIIVoHiQtrclvVkDLkKONvtrybfTgPH1p6nxktB992DqOyDNumkk8KGTWQWO/9lt62y V0/OMPA7sHRIxLXVHoFG6KOTLIkqgYCa4wr0zqfDhK1tOzHK8f+enmpHE1oGxq8loGN01P mHBrD2K0bJbHvKhcf4P0X/SuN3GsVlAFC3pdBMypplwYt9dj32an5w4J6w+AYA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1776968178; 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=Pr/sbLpdIyTt7SOLR7NtMv47mz6BQ5vadTb9pTUMCrk=; b=mSVOpHz9KK8RtNKA64i7+rYFVGgnwvfP6PB2kMoBU8/EKuqtScM/MqcgBXhTAARUFBtcfJ wKzhJpnqXabdwZFARahiOg+cYZit6uIoViifIALMfDAu4405qpcK+dFZzasJ+EhKma0Kaa VJkokZk8UkgJzKEZTRM77GYQ7vHRR3MUgG7af/xda/oqMpVTKN25Et6HfYD+MnA8xlI7YE ccomqCXKz1hOqayYqSHjrfBRFu/PQ8G/yqgkLHnsCL9+bXNPrp6PNBy4vcEomVgEZSTUaY q2zp0uN66eQvTITx/ruOXeZtcdKRE7a+PBhuxuZa7v/30eec4vgyVx3s+BXZ6g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g1kmy2ww9zCSn for ; Thu, 23 Apr 2026 18:16:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 46825 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 23 Apr 2026 18:16:18 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 8a0ff500d713 - main - vm_kstack: Use void * instead of vm_offset_t 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: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8a0ff500d713ab314d2a728fdd1f34960ee055b7 Auto-Submitted: auto-generated Date: Thu, 23 Apr 2026 18:16:18 +0000 Message-Id: <69ea61f2.46825.7dcd94b1@gitrepo.freebsd.org> The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=8a0ff500d713ab314d2a728fdd1f34960ee055b7 commit 8a0ff500d713ab314d2a728fdd1f34960ee055b7 Author: John Baldwin AuthorDate: 2026-04-23 17:05:54 +0000 Commit: John Baldwin CommitDate: 2026-04-23 17:05:54 +0000 vm_kstack: Use void * instead of vm_offset_t Effort: CHERI upstreaming Reviewed by: kib Sponsored by: AFRL, DARPA Pull Request: https://github.com/freebsd/freebsd-src/pull/2068 --- sys/vm/vm_glue.c | 69 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 34 insertions(+), 35 deletions(-) diff --git a/sys/vm/vm_glue.c b/sys/vm/vm_glue.c index 9a359a20e614..0b90f1804935 100644 --- a/sys/vm/vm_glue.c +++ b/sys/vm/vm_glue.c @@ -279,9 +279,9 @@ static uma_zone_t kstack_cache; static int kstack_cache_size; static vmem_t *vmd_kstack_arena[MAXMEMDOM]; -static vm_pindex_t vm_kstack_pindex(vm_offset_t ks, int npages); +static vm_pindex_t vm_kstack_pindex(void *ks, int npages); static vm_object_t vm_thread_kstack_size_to_obj(int npages); -static int vm_thread_stack_back(vm_offset_t kaddr, vm_page_t ma[], int npages, +static int vm_thread_stack_back(void *kaddr, vm_page_t ma[], int npages, int req_class, int domain); static int @@ -303,13 +303,13 @@ SYSCTL_PROC(_vm, OID_AUTO, kstack_cache_size, * Allocate a virtual address range from a domain kstack arena, following * the specified NUMA policy. */ -static vm_offset_t +static void * vm_thread_alloc_kstack_kva(vm_size_t size, int domain) { #ifndef __ILP32__ int rv; vmem_t *arena; - vm_offset_t addr = 0; + vmem_addr_t addr = 0; size = round_page(size); /* Allocate from the kernel arena for non-standard kstack sizes. */ @@ -328,9 +328,9 @@ vm_thread_alloc_kstack_kva(vm_size_t size, int domain) __func__)); } - return (addr); + return ((void *)addr); #else - return ((vm_offset_t)kva_alloc(size)); + return (kva_alloc(size)); #endif } @@ -339,7 +339,7 @@ vm_thread_alloc_kstack_kva(vm_size_t size, int domain) * allocated from the kstack arena. */ static __noinline void -vm_thread_free_kstack_kva(vm_offset_t addr, vm_size_t size, int domain) +vm_thread_free_kstack_kva(void *addr, vm_size_t size, int domain) { vmem_t *arena; @@ -352,7 +352,7 @@ vm_thread_free_kstack_kva(vm_offset_t addr, vm_size_t size, int domain) arena = vm_dom[domain].vmd_kernel_arena; } #endif - vmem_free(arena, addr, size); + vmem_free(arena, (uintptr_t)addr, size); } static vmem_size_t @@ -442,13 +442,13 @@ vm_thread_kstack_arena_release(void *arena, vmem_addr_t addr, vmem_size_t size) /* * Create the kernel stack for a new thread. */ -static vm_offset_t +static void * vm_thread_stack_create(struct domainset *ds, int pages, int flags) { vm_page_t ma[KSTACK_MAX_PAGES]; struct vm_domainset_iter di; int req; - vm_offset_t ks; + char *ks; int domain, i; vm_domainset_iter_policy_init(&di, ds, &domain, &flags); @@ -459,7 +459,7 @@ vm_thread_stack_create(struct domainset *ds, int pages, int flags) */ ks = vm_thread_alloc_kstack_kva(ptoa(pages + KSTACK_GUARD_PAGES), domain); - if (ks == 0) + if (ks == NULL) continue; ks += ptoa(KSTACK_GUARD_PAGES); @@ -472,12 +472,12 @@ vm_thread_stack_create(struct domainset *ds, int pages, int flags) continue; } if (KSTACK_GUARD_PAGES != 0) { - pmap_qremove((char *)ks - ptoa(KSTACK_GUARD_PAGES), + pmap_qremove(ks - ptoa(KSTACK_GUARD_PAGES), KSTACK_GUARD_PAGES); } for (i = 0; i < pages; i++) vm_page_valid(ma[i]); - pmap_qenter((char *)ks, ma, pages); + pmap_qenter(ks, ma, pages); return (ks); } while (vm_domainset_iter_policy(&di, &domain) == 0); @@ -485,7 +485,7 @@ vm_thread_stack_create(struct domainset *ds, int pages, int flags) } static __noinline void -vm_thread_stack_dispose(vm_offset_t ks, int pages) +vm_thread_stack_dispose(void *ks, int pages) { vm_page_t m; vm_pindex_t pindex; @@ -493,8 +493,8 @@ vm_thread_stack_dispose(vm_offset_t ks, int pages) vm_object_t obj = vm_thread_kstack_size_to_obj(pages); pindex = vm_kstack_pindex(ks, pages); - domain = vm_phys_domain(vtophys(ks)); - pmap_qremove((void *)ks, pages); + domain = vm_phys_domain(vtophys((vm_offset_t)ks)); + pmap_qremove(ks, pages); VM_OBJECT_WLOCK(obj); for (i = 0; i < pages; i++) { m = vm_page_lookup(obj, pindex + i); @@ -508,8 +508,8 @@ vm_thread_stack_dispose(vm_offset_t ks, int pages) vm_page_free(m); } VM_OBJECT_WUNLOCK(obj); - kasan_mark((void *)ks, ptoa(pages), ptoa(pages), 0); - vm_thread_free_kstack_kva(ks - (KSTACK_GUARD_PAGES * PAGE_SIZE), + kasan_mark(ks, ptoa(pages), ptoa(pages), 0); + vm_thread_free_kstack_kva((char *)ks - (KSTACK_GUARD_PAGES * PAGE_SIZE), ptoa(pages + KSTACK_GUARD_PAGES), domain); } @@ -519,7 +519,7 @@ vm_thread_stack_dispose(vm_offset_t ks, int pages) int vm_thread_new(struct thread *td, int pages) { - vm_offset_t ks; + void *ks; u_short ks_domain; /* Bounds check */ @@ -528,19 +528,19 @@ vm_thread_new(struct thread *td, int pages) else if (pages > KSTACK_MAX_PAGES) pages = KSTACK_MAX_PAGES; - ks = 0; + ks = NULL; if (pages == kstack_pages && kstack_cache != NULL) - ks = (vm_offset_t)uma_zalloc(kstack_cache, M_NOWAIT); - if (ks == 0) + ks = uma_zalloc(kstack_cache, M_NOWAIT); + if (ks == NULL) ks = vm_thread_stack_create(DOMAINSET_PREF(PCPU_GET(domain)), pages, M_NOWAIT); - if (ks == 0) + if (ks == NULL) return (0); ks_domain = vm_phys_domain(vtophys(ks)); KASSERT(ks_domain >= 0 && ks_domain < vm_ndomains, ("%s: invalid domain for kstack %p", __func__, (void *)ks)); - td->td_kstack = ks; + td->td_kstack = (vm_offset_t)ks; td->td_kstack_pages = pages; td->td_kstack_domain = ks_domain; return (1); @@ -552,17 +552,17 @@ vm_thread_new(struct thread *td, int pages) void vm_thread_dispose(struct thread *td) { - vm_offset_t ks; + void *ks; int pages; pages = td->td_kstack_pages; - ks = td->td_kstack; + ks = (void *)td->td_kstack; td->td_kstack = 0; td->td_kstack_pages = 0; td->td_kstack_domain = MAXMEMDOM; if (pages == kstack_pages) { - kasan_mark((void *)ks, 0, ptoa(pages), KASAN_KSTACK_FREED); - uma_zfree(kstack_cache, (void *)ks); + kasan_mark(ks, 0, ptoa(pages), KASAN_KSTACK_FREED); + uma_zfree(kstack_cache, ks); } else { vm_thread_stack_dispose(ks, pages); } @@ -575,9 +575,9 @@ vm_thread_dispose(struct thread *td) * active to avoid pindex holes in the kstack object. */ static vm_pindex_t -vm_kstack_pindex(vm_offset_t ks, int kpages) +vm_kstack_pindex(void *ks, int kpages) { - vm_pindex_t pindex = atop(ks - VM_MIN_KERNEL_ADDRESS); + vm_pindex_t pindex = atop((vm_offset_t)ks - VM_MIN_KERNEL_ADDRESS); #ifdef __ILP32__ return (pindex); @@ -602,7 +602,7 @@ vm_kstack_pindex(vm_offset_t ks, int kpages) * kernel stack. */ static int -vm_thread_stack_back(vm_offset_t ks, vm_page_t ma[], int npages, int req_class, +vm_thread_stack_back(void *ks, vm_page_t ma[], int npages, int req_class, int domain) { struct pctrie_iter pages; @@ -653,8 +653,7 @@ kstack_import(void *arg, void **store, int cnt, int domain, int flags) ds = DOMAINSET_PREF(domain); for (i = 0; i < cnt; i++) { - store[i] = (void *)vm_thread_stack_create(ds, kstack_pages, - flags); + store[i] = vm_thread_stack_create(ds, kstack_pages, flags); if (store[i] == NULL) break; } @@ -664,11 +663,11 @@ kstack_import(void *arg, void **store, int cnt, int domain, int flags) static void kstack_release(void *arg, void **store, int cnt) { - vm_offset_t ks; + void *ks; int i; for (i = 0; i < cnt; i++) { - ks = (vm_offset_t)store[i]; + ks = store[i]; vm_thread_stack_dispose(ks, kstack_pages); } }