From nobody Wed Jun 18 23:07:05 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 4bMzs52b20z5yD1v; Wed, 18 Jun 2025 23:07:05 +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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bMzs51p0Sz3qxN; Wed, 18 Jun 2025 23:07:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1750288025; 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=6E9Ljdx8GEqUrJ0YlJ+tZmlpJwWshOvP3MEIJNtvKP8=; b=ZDExLkMSNCITb/HOD7WIij1AGTccouhzta0ePD3/Zksl8x52ttmw8ED6jGFhMbzC6ZyVl7 efnp5tF3y4bWddbY6djTy+XARHjAya8d7bb/9jPfNGmVJ2NxfvUZoTjfACbGzpo8zyrlic JiIUiFKYzFjhh92CtGIdvwXX+0kYPq0MfGAeFUcx7NFW9dcvG53Z+/nLPalwsttDKmr7Fv mLmPN2UFm+Ec+Ijz9z6QHZK9zmkYzvIibqR3qAyWAWXp1Sq74bzu4Buc0kOXf/jwTzUYfy MbLXt2Hw/UXMLAd/Mpdfdkb89ks5W0zwBCCtPizRtO9Vsu0vvcvFHLyXHGv37Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1750288025; 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=6E9Ljdx8GEqUrJ0YlJ+tZmlpJwWshOvP3MEIJNtvKP8=; b=axt+DH8FKlsAS1NlFD7rcBIG2gX4etyqPCSM1Ft1QxQCf6oVfoZU70F4k+Pj/f2L9fZtaj co+/dwfnlsiPd+FZlMNeOHiwFSs4BP6nv8s4s74q3itB2F5onZ5sPNFLx5u+hKv1moruob AF1kWmkR2yrT3Z4sM97Pn0+9VrmDlnrBUASPNGysWYrYl3tGz7WKcSN2UaUJ8VMnGlK+hW c4vUyg6sxm0egAFZTuh6/TqHvxdhJToRsia8FM3cShxa/HDK/LTAlVMKdZdPZ7KZPqBoTa gzt6RLuTJWZU3kre9wONxftn8+Lc/IfcadJZvGJF6sqZcT3YTaU6oVbq0Vp7Cw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1750288025; a=rsa-sha256; cv=none; b=Om/gUYhJnSpljRkNHn3wf0ilnN43aMDWzRnvbA1KcCanQm4o1XTWGidDkcahx3Afzuu6PE RO5a5FOnekQln60r8U+fPvgojIKrVCk8DlLsAPNS0dmh55+0s0zrUDrre5RC/DOkaJo3Qm kjeijNixp6b3tsIHcYda4GlEBKfBI/ZFZwkB0RruSzgjBxXfatScw1FRUo2adVbSSt+BVr CbL+0RKnkl4QMSGp/Vrv0xAKQdi2GLoqpwT5TcgJkLhLRF6dDnSQmZDo5LI3/cj6Kxq3ns ZRBQsKS/Sq+FTN+3Zc92s+FBwVFURBvk9zlVhxrLNUjolipl9GdTDa3IHv7Xgw== 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 4bMzs51HywzqXQ; Wed, 18 Jun 2025 23:07:05 +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 55IN75Vc074112; Wed, 18 Jun 2025 23:07:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 55IN75Ro074109; Wed, 18 Jun 2025 23:07:05 GMT (envelope-from git) Date: Wed, 18 Jun 2025 23:07:05 GMT Message-Id: <202506182307.55IN75Ro074109@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alan Cox Subject: git: deddede58e83 - main - arm64 pmap: use the counter(9) KPI for L2 superpages 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: alc X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: deddede58e834966149b00757d61de537ed81542 Auto-Submitted: auto-generated The branch main has been updated by alc: URL: https://cgit.FreeBSD.org/src/commit/?id=deddede58e834966149b00757d61de537ed81542 commit deddede58e834966149b00757d61de537ed81542 Author: Alan Cox AuthorDate: 2025-06-14 20:18:01 +0000 Commit: Alan Cox CommitDate: 2025-06-18 23:05:58 +0000 arm64 pmap: use the counter(9) KPI for L2 superpages Use the counter(9) KPI instead of atomics to maintain the L2 superpage mapping counts. (A similar change was made to the amd64 pmap in 2021.) While here, update the SYSCTL descriptions to reflect the possibility that the base page size is 16KB. --- sys/arm64/arm64/pmap.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/sys/arm64/arm64/pmap.c b/sys/arm64/arm64/pmap.c index 3529314b07c7..a53e8b3684e3 100644 --- a/sys/arm64/arm64/pmap.c +++ b/sys/arm64/arm64/pmap.c @@ -1798,21 +1798,21 @@ SYSCTL_COUNTER_U64(_vm_pmap_l2c, OID_AUTO, demotions, CTLFLAG_RD, static SYSCTL_NODE(_vm_pmap, OID_AUTO, l2, CTLFLAG_RD | CTLFLAG_MPSAFE, 0, "2MB page mapping counters"); -static u_long pmap_l2_demotions; -SYSCTL_ULONG(_vm_pmap_l2, OID_AUTO, demotions, CTLFLAG_RD, - &pmap_l2_demotions, 0, "2MB page demotions"); +static COUNTER_U64_DEFINE_EARLY(pmap_l2_demotions); +SYSCTL_COUNTER_U64(_vm_pmap_l2, OID_AUTO, demotions, CTLFLAG_RD, + &pmap_l2_demotions, "L2 (2MB/32MB) page demotions"); -static u_long pmap_l2_mappings; -SYSCTL_ULONG(_vm_pmap_l2, OID_AUTO, mappings, CTLFLAG_RD, - &pmap_l2_mappings, 0, "2MB page mappings"); +static COUNTER_U64_DEFINE_EARLY(pmap_l2_mappings); +SYSCTL_COUNTER_U64(_vm_pmap_l2, OID_AUTO, mappings, CTLFLAG_RD, + &pmap_l2_mappings, "L2 (2MB/32MB) page mappings"); -static u_long pmap_l2_p_failures; -SYSCTL_ULONG(_vm_pmap_l2, OID_AUTO, p_failures, CTLFLAG_RD, - &pmap_l2_p_failures, 0, "2MB page promotion failures"); +static COUNTER_U64_DEFINE_EARLY(pmap_l2_p_failures); +SYSCTL_COUNTER_U64(_vm_pmap_l2, OID_AUTO, p_failures, CTLFLAG_RD, + &pmap_l2_p_failures, "L2 (2MB/32MB) page promotion failures"); -static u_long pmap_l2_promotions; -SYSCTL_ULONG(_vm_pmap_l2, OID_AUTO, promotions, CTLFLAG_RD, - &pmap_l2_promotions, 0, "2MB page promotions"); +static COUNTER_U64_DEFINE_EARLY(pmap_l2_promotions); +SYSCTL_COUNTER_U64(_vm_pmap_l2, OID_AUTO, promotions, CTLFLAG_RD, + &pmap_l2_promotions, "L2 (2MB/32MB) page promotions"); static SYSCTL_NODE(_vm_pmap, OID_AUTO, l3c, CTLFLAG_RD | CTLFLAG_MPSAFE, 0, "L3C (64KB/2MB) page mapping counters"); @@ -4875,7 +4875,7 @@ pmap_promote_l2(pmap_t pmap, pd_entry_t *l2, vm_offset_t va, vm_page_t mpte, /* ... is not the first physical page within an L2 block */ if ((PTE_TO_PHYS(newl2) & L2_OFFSET) != 0 || ((newl2 & ATTR_DESCR_MASK) != L3_PAGE)) { /* ... or is invalid */ - atomic_add_long(&pmap_l2_p_failures, 1); + counter_u64_add(pmap_l2_p_failures, 1); CTR2(KTR_PMAP, "pmap_promote_l2: failure for va %#lx" " in pmap %p", va, pmap); return (false); @@ -4923,7 +4923,7 @@ setl2: for (l3 = firstl3 + NL3PG - 1; l3 > firstl3; l3--) { oldl3 = pmap_load(l3); if ((PTE_TO_PHYS(oldl3) | (oldl3 & ATTR_DESCR_MASK)) != pa) { - atomic_add_long(&pmap_l2_p_failures, 1); + counter_u64_add(pmap_l2_p_failures, 1); CTR2(KTR_PMAP, "pmap_promote_l2: failure for va %#lx" " in pmap %p", va, pmap); return (false); @@ -4942,7 +4942,7 @@ setl3: oldl3 &= ~ATTR_SW_DBM; } if ((oldl3 & ATTR_PROMOTE) != (newl2 & ATTR_PROMOTE)) { - atomic_add_long(&pmap_l2_p_failures, 1); + counter_u64_add(pmap_l2_p_failures, 1); CTR2(KTR_PMAP, "pmap_promote_l2: failure for va %#lx" " in pmap %p", va, pmap); return (false); @@ -4972,7 +4972,7 @@ setl3: KASSERT(mpte->pindex == pmap_l2_pindex(va), ("pmap_promote_l2: page table page's pindex is wrong")); if (pmap_insert_pt_page(pmap, mpte, true, all_l3e_AF != 0)) { - atomic_add_long(&pmap_l2_p_failures, 1); + counter_u64_add(pmap_l2_p_failures, 1); CTR2(KTR_PMAP, "pmap_promote_l2: failure for va %#lx in pmap %p", va, pmap); @@ -4984,7 +4984,7 @@ setl3: pmap_update_entry(pmap, l2, newl2 | L2_BLOCK, va & ~L2_OFFSET, L2_SIZE); - atomic_add_long(&pmap_l2_promotions, 1); + counter_u64_add(pmap_l2_promotions, 1); CTR2(KTR_PMAP, "pmap_promote_l2: success for va %#lx in pmap %p", va, pmap); return (true); @@ -5830,7 +5830,7 @@ pmap_enter_l2(pmap_t pmap, vm_offset_t va, pd_entry_t new_l2, u_int flags, pmap_store(l2, new_l2); dsb(ishst); - atomic_add_long(&pmap_l2_mappings, 1); + counter_u64_add(pmap_l2_mappings, 1); CTR2(KTR_PMAP, "pmap_enter_l2: success for va %#lx in pmap %p", va, pmap); @@ -6602,7 +6602,7 @@ pmap_copy(pmap_t dst_pmap, pmap_t src_pmap, vm_offset_t dst_addr, vm_size_t len, pmap_store(l2, srcptepaddr); pmap_resident_count_inc(dst_pmap, L2_SIZE / PAGE_SIZE); - atomic_add_long(&pmap_l2_mappings, 1); + counter_u64_add(pmap_l2_mappings, 1); } else pmap_abort_ptp(dst_pmap, addr, dst_m); continue; @@ -8563,7 +8563,7 @@ pmap_demote_l2_locked(pmap_t pmap, pt_entry_t *l2, vm_offset_t va, if ((oldl2 & ATTR_SW_MANAGED) != 0) pmap_pv_demote_l2(pmap, va, PTE_TO_PHYS(oldl2), lockp); - atomic_add_long(&pmap_l2_demotions, 1); + counter_u64_add(pmap_l2_demotions, 1); CTR3(KTR_PMAP, "pmap_demote_l2: success for va %#lx" " in pmap %p %lx", va, pmap, l3[0]);