From nobody Fri Apr 18 23:38:56 2025 X-Original-To: dev-commits-src-main@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 4ZfWS075pRz5tYlr; Fri, 18 Apr 2025 23:38:56 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZfWS067Prz3wVp; Fri, 18 Apr 2025 23:38:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1745019536; 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=VKuyGn3YjZfw/Kk4/sR2Wp+bcVmeRRau2yYPO4qcCos=; b=Ip8QZpKMcb0npfNWVbSspjG1RRQGxSyQjHz4n0oftIeL+9BbrcajDvJqqx6opZBgziklo1 C1Qa4hc0pxcuHDhb1u+t1zWuILVT0l0B99zvcAZlt0uDiIel06v42JRBM3X+rx8CoBNfEz 5qRP7L4WmQ4gcAcZ6IkWIbCjkoRDePIGowR3lXpUmC8bf6rhxjSzgQ2HbO9Jmmz23NCvog KMj3n+ooLgwNtmzAsf9zAo2WIxMcXjivnQTtzfcI8qor3lIiy9MwlsjcVLjUTMMqYRFR4J C3yVgvtOzyfJA/vhyTHoCEXmlUeljpAogR+Al+wvDS3+4kHkvsleJ7lOC2NzBg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1745019536; a=rsa-sha256; cv=none; b=Te6uBYH4XV/zTs1EgL/18Pab1lF+N0ueR1O2tM9BwrkNQzwicOwbyvZFrIVfzs42JbhjoI nIxAkPYFmTbS5Sb/BoZzoS/0s5hQyaSLwAPP6uTg9jhN9bUf8WyWQ0ZbpbmzMRYs/lhUpn TsL4NFqCl+s3b1kocNE28MX9mN2PvTWGhLpfY2qyQfAQwaOV6PgzfmrZGO2wMWxYl+4rS/ G8ex+gkW6Yu35HH782n0fvmpVMjwXIeUDnC7s2h7o9lVki9MweVZfNEiA7M+XZM6Jk1pec QhJOQJp2k8iNojUXZRkp7BKNtXaECi7idJthmn4MgScsqeF9Gk7meHXy02iB4Q== 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=1745019536; 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=VKuyGn3YjZfw/Kk4/sR2Wp+bcVmeRRau2yYPO4qcCos=; b=dF5tEniw/kPvlgUwiKRjZyTSwrKamosuekiQf2Xmn5dU+/05Y8+OysQU/+/6/yfT8vwkvn FURv4VWtL/MIS4y86ZVkWVwdgOFNRzx/tE8nHfKiRAfBJHWPgciG7jGk15FDYJpyLyflJL ramdYeAsvvejJn3+aCCAS9YujfG0F5ajR8WSxVht3J2tpxdqKTOjH0T5vtptRY1Jrwn22z XvtqjZoy41Lft8V6jdzlvzY9nxAe6vvpSOidtP8o6OlbkYXutFVHbj1NvB4GkkQKglE4Tz zQ0LN5LWOwMAv78lxUckx769FN6MqXLxhLZxaCCcLOQcZdtZbqO2Qj4bs/YQRg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZfWS057HrzvTV; Fri, 18 Apr 2025 23:38:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 53INcuSN001025; Fri, 18 Apr 2025 23:38:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 53INcuf7001022; Fri, 18 Apr 2025 23:38:56 GMT (envelope-from git) Date: Fri, 18 Apr 2025 23:38:56 GMT Message-Id: <202504182338.53INcuf7001022@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Doug Moore Subject: git: b3d89a0cde94 - main - vm_map: use page iterators in pmap_enter List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dougm X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b3d89a0cde94b22ce1b4ca620b77986291137132 Auto-Submitted: auto-generated The branch main has been updated by dougm: URL: https://cgit.FreeBSD.org/src/commit/?id=b3d89a0cde94b22ce1b4ca620b77986291137132 commit b3d89a0cde94b22ce1b4ca620b77986291137132 Author: Doug Moore AuthorDate: 2025-04-18 23:37:49 +0000 Commit: Doug Moore CommitDate: 2025-04-18 23:37:49 +0000 vm_map: use page iterators in pmap_enter Change vm_map_pmap_enter to use pctrie iterators to iterate over pages, rather than using TAILQ links. Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D49896 --- sys/vm/vm_map.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c index 564ef59950e4..0371680f6df5 100644 --- a/sys/vm/vm_map.c +++ b/sys/vm/vm_map.c @@ -89,6 +89,7 @@ #include #include #include +#include #include #include #include @@ -2674,6 +2675,7 @@ static void vm_map_pmap_enter(vm_map_t map, vm_offset_t addr, vm_prot_t prot, vm_object_t object, vm_pindex_t pindex, vm_size_t size, int flags) { + struct pctrie_iter pages; vm_offset_t start; vm_page_t p, p_start; vm_pindex_t mask, psize, threshold, tmpidx; @@ -2706,19 +2708,14 @@ vm_map_pmap_enter(vm_map_t map, vm_offset_t addr, vm_prot_t prot, p_start = NULL; threshold = MAX_INIT_PT; - p = vm_page_find_least(object, pindex); - /* - * Assert: the variable p is either (1) the page with the - * least pindex greater than or equal to the parameter pindex - * or (2) NULL. - */ - for (; - p != NULL && (tmpidx = p->pindex - pindex) < psize; - p = TAILQ_NEXT(p, listq)) { + vm_page_iter_limit_init(&pages, object, pindex + psize); + for (p = vm_radix_iter_lookup_ge(&pages, pindex); p != NULL; + p = vm_radix_iter_jump(&pages, mask + 1)) { /* * don't allow an madvise to blow away our really * free pages allocating pv entries. */ + tmpidx = p->pindex - pindex; if (((flags & MAP_PREFAULT_MADVISE) != 0 && vm_page_count_severe()) || ((flags & MAP_PREFAULT_PARTIAL) != 0 && @@ -2726,6 +2723,7 @@ vm_map_pmap_enter(vm_map_t map, vm_offset_t addr, vm_prot_t prot, psize = tmpidx; break; } + mask = 0; if (vm_page_all_valid(p)) { if (p_start == NULL) { start = addr + ptoa(tmpidx); @@ -2739,7 +2737,6 @@ vm_map_pmap_enter(vm_map_t map, vm_offset_t addr, vm_prot_t prot, if (tmpidx + mask < psize && vm_page_ps_test(p, psind, PS_ALL_VALID, NULL)) { - p += mask; threshold += mask; break; }