From nobody Tue May 10 20:56:45 2022 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 A64471ADB528; Tue, 10 May 2022 20:56:45 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4KyVhY4Kkcz3qK1; Tue, 10 May 2022 20:56:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1652216205; 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=TMcSmDji90CLIFlXOwfiWzP3pqaaJ96/8LuF0dbb18c=; b=B4VY5hGR4wT7e0NSKmJSd9TWE+PMNnSbJlwd3eGlep6apVSYP7YJlpDGEPncV3BiFd3QzF tr1hK552IocdkmfplN1mb+jnChDl5w/rNSv34tF4jhh/lgDGGCmtZr6RjqI66XLMdh9rS7 I6+2COpddesXR/OnLAv6VHdOTN5nFuXmul9ZV5Rmo4FTxClT3dlV2/2fiZ9wN+dnr7+0fb l2yorG4cNZQPb/QScx0SvMgHk00Pk7PygaujDTtxHwLQSH5vYi5X17iRIbdW9KPmAMfpzN D5sHrr9LHgQowuzroEZs/JVD27kw3h/MNvovBVul6YISuIkOwqIEjc/HJxSAJg== 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 74BC54948; Tue, 10 May 2022 20:56:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 24AKuj45069217; Tue, 10 May 2022 20:56:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 24AKujtW069216; Tue, 10 May 2022 20:56:45 GMT (envelope-from git) Date: Tue, 10 May 2022 20:56:45 GMT Message-Id: <202205102056.24AKujtW069216@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 0c1258e7079b - stable/13 - Add a VA_IS_CLEANMAP() macro. 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: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 0c1258e7079b678a763dc2c851f6c83c2ad6978f Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1652216205; 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=TMcSmDji90CLIFlXOwfiWzP3pqaaJ96/8LuF0dbb18c=; b=osN4MT8Zc4SVRVnqqyj55STRip83P2zw9mUTR5dNngx3EO3DBxCwP53jSHY3mm6vmtvD4S zPpxS4RW0Nvs6F+orfXBdfa5+cQPjRSo8o78cnNoceLIVZU41CMeCOXz9lVAhk+OD9f4Ln YwKxQiflLW6+tbMOv48bou4BK2GvzaeQFXLMTfz016Q7Wz3sjVq9oviUG6Wk+8O9M+1b2b RA1nUvU7DcNNNSeWUZMqDiR3/fhyMSnmQUDWOQ5tRt913xqxeJWjdKy7L2LzNmxX2FBDXD RJa+8vkqMF57IUmT7YObbvBZv7WeEexgTVmwp06eBxjpRCuiBMKqp1ppcwbH/Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1652216205; a=rsa-sha256; cv=none; b=pxQBpDtoNhYFa5HfvQaiao69z1Fla3rgFEUo2sjkc6UyGQlWAKyb3cC9x9SGya9/a+PgPF nwtrnCEiJazn1c//RC6SYJwmJKIr3XklAGK8q4ooO6ELVPbkgWfQKkrYf13pCSI80hlnUV KYyV8ojif0oq6SpcI9xoxfAALMNxMTwFKv74gT0CQ55JcN+srQHAJpIyVT5Zw2J+8phcyd djUwTmnBIQD+iO1Jgf2W9RcKhqw1iYBQ3CZPZkJe8CoN5tiEbjOHqIaWV0THNlqtuW5pb0 A3bN34ypMbMN9mqqPrnnQuxMPc3zMtEpR7vJtM2BWkc0NjWWWd3HXmr83sPrJw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=0c1258e7079b678a763dc2c851f6c83c2ad6978f commit 0c1258e7079b678a763dc2c851f6c83c2ad6978f Author: John Baldwin AuthorDate: 2021-02-18 00:32:11 +0000 Commit: John Baldwin CommitDate: 2022-05-10 17:47:07 +0000 Add a VA_IS_CLEANMAP() macro. This macro returns true if a provided virtual address is contained in the kernel's clean submap. In CHERI kernels, the buffer cache and transient I/O map are allocated as separate regions. Abstracting this check reduces the diff relative to FreeBSD. It is perhaps slightly more readable as well. Reviewed by: kib Obtained from: CheriBSD Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D28710 (cherry picked from commit 67932460c7b6893a637a47d98d5f29d63e92c727) --- sys/amd64/amd64/pmap.c | 5 ++--- sys/arm/arm/pmap-v6.c | 5 ++--- sys/arm64/arm64/pmap.c | 2 +- sys/i386/i386/pmap.c | 6 +++--- sys/mips/mips/pmap.c | 5 ++--- sys/powerpc/aim/mmu_radix.c | 5 ++--- sys/riscv/riscv/pmap.c | 2 +- sys/vm/vm.h | 3 +++ 8 files changed, 16 insertions(+), 17 deletions(-) diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c index 228dcac22b27..f6b7238d39d7 100644 --- a/sys/amd64/amd64/pmap.c +++ b/sys/amd64/amd64/pmap.c @@ -6880,8 +6880,7 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot, KASSERT(va < UPT_MIN_ADDRESS || va >= UPT_MAX_ADDRESS, ("pmap_enter: invalid to pmap_enter page table pages (va: 0x%lx)", va)); - KASSERT((m->oflags & VPO_UNMANAGED) != 0 || va < kmi.clean_sva || - va >= kmi.clean_eva, + KASSERT((m->oflags & VPO_UNMANAGED) != 0 || !VA_IS_CLEANMAP(va), ("pmap_enter: managed mapping within the clean submap")); if ((m->oflags & VPO_UNMANAGED) == 0) VM_PAGE_OBJECT_BUSY_ASSERT(m); @@ -7394,7 +7393,7 @@ pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, vm_page_t m, { pt_entry_t newpte, *pte, PG_V; - KASSERT(va < kmi.clean_sva || va >= kmi.clean_eva || + KASSERT(!VA_IS_CLEANMAP(va) || (m->oflags & VPO_UNMANAGED) != 0, ("pmap_enter_quick_locked: managed mapping within the clean submap")); PG_V = pmap_valid_bit(pmap); diff --git a/sys/arm/arm/pmap-v6.c b/sys/arm/arm/pmap-v6.c index 445f750178a8..51438274f1ff 100644 --- a/sys/arm/arm/pmap-v6.c +++ b/sys/arm/arm/pmap-v6.c @@ -3873,8 +3873,7 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot, KASSERT(va < UPT2V_MIN_ADDRESS || va >= UPT2V_MAX_ADDRESS, ("%s: invalid to pmap_enter page table pages (va: 0x%x)", __func__, va)); - KASSERT((m->oflags & VPO_UNMANAGED) != 0 || va < kmi.clean_sva || - va >= kmi.clean_eva, + KASSERT((m->oflags & VPO_UNMANAGED) != 0 || !VA_IS_CLEANMAP(va), ("%s: managed mapping within the clean submap", __func__)); if ((m->oflags & VPO_UNMANAGED) == 0) VM_PAGE_OBJECT_BUSY_ASSERT(m); @@ -4535,7 +4534,7 @@ pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, vm_page_t m, struct spglist free; uint32_t l2prot; - KASSERT(va < kmi.clean_sva || va >= kmi.clean_eva || + KASSERT(!VA_IS_CLEANMAP(va) || (m->oflags & VPO_UNMANAGED) != 0, ("%s: managed mapping within the clean submap", __func__)); rw_assert(&pvh_global_lock, RA_WLOCKED); diff --git a/sys/arm64/arm64/pmap.c b/sys/arm64/arm64/pmap.c index 95587b84f403..534c2562d33d 100644 --- a/sys/arm64/arm64/pmap.c +++ b/sys/arm64/arm64/pmap.c @@ -4451,7 +4451,7 @@ pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_paddr_t pa; int lvl; - KASSERT(va < kmi.clean_sva || va >= kmi.clean_eva || + KASSERT(!VA_IS_CLEANMAP(va) || (m->oflags & VPO_UNMANAGED) != 0, ("pmap_enter_quick_locked: managed mapping within the clean submap")); PMAP_LOCK_ASSERT(pmap, MA_OWNED); diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c index 226e76eb0a64..23bac689f558 100644 --- a/sys/i386/i386/pmap.c +++ b/sys/i386/i386/pmap.c @@ -3646,7 +3646,7 @@ __CONCAT(PMTYPE, enter)(pmap_t pmap, vm_offset_t va, vm_page_t m, ("pmap_enter: invalid to pmap_enter into trampoline (va: 0x%x)", va)); KASSERT(pmap != kernel_pmap || (m->oflags & VPO_UNMANAGED) != 0 || - va < kmi.clean_sva || va >= kmi.clean_eva, + !VA_IS_CLEANMAP(va), ("pmap_enter: managed mapping within the clean submap")); if ((m->oflags & VPO_UNMANAGED) == 0) VM_PAGE_OBJECT_BUSY_ASSERT(m); @@ -4100,8 +4100,8 @@ pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, vm_page_t m, { pt_entry_t newpte, *pte; - KASSERT(pmap != kernel_pmap || va < kmi.clean_sva || - va >= kmi.clean_eva || (m->oflags & VPO_UNMANAGED) != 0, + KASSERT(pmap != kernel_pmap || !VA_IS_CLEANMAP(va) || + (m->oflags & VPO_UNMANAGED) != 0, ("pmap_enter_quick_locked: managed mapping within the clean submap")); rw_assert(&pvh_global_lock, RA_WLOCKED); PMAP_LOCK_ASSERT(pmap, MA_OWNED); diff --git a/sys/mips/mips/pmap.c b/sys/mips/mips/pmap.c index 9ca43048ecca..a41614c5457b 100644 --- a/sys/mips/mips/pmap.c +++ b/sys/mips/mips/pmap.c @@ -2125,8 +2125,7 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot, va &= ~PAGE_MASK; KASSERT(va <= VM_MAX_KERNEL_ADDRESS, ("pmap_enter: toobig")); - KASSERT((m->oflags & VPO_UNMANAGED) != 0 || va < kmi.clean_sva || - va >= kmi.clean_eva, + KASSERT((m->oflags & VPO_UNMANAGED) != 0 || !VA_IS_CLEANMAP(va), ("pmap_enter: managed mapping within the clean submap")); if ((m->oflags & VPO_UNMANAGED) == 0) VM_PAGE_OBJECT_BUSY_ASSERT(m); @@ -2328,7 +2327,7 @@ pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, vm_page_t m, pt_entry_t *pte, npte; vm_paddr_t pa; - KASSERT(va < kmi.clean_sva || va >= kmi.clean_eva || + KASSERT(!VA_IS_CLEANMAP(va) || (m->oflags & VPO_UNMANAGED) != 0, ("pmap_enter_quick_locked: managed mapping within the clean submap")); rw_assert(&pvh_global_lock, RA_WLOCKED); diff --git a/sys/powerpc/aim/mmu_radix.c b/sys/powerpc/aim/mmu_radix.c index da32b66334a0..b9311e999588 100644 --- a/sys/powerpc/aim/mmu_radix.c +++ b/sys/powerpc/aim/mmu_radix.c @@ -2805,8 +2805,7 @@ mmu_radix_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, CTR6(KTR_PMAP, "pmap_enter(%p, %#lx, %p, %#x, %#x, %d)", pmap, va, m, prot, flags, psind); KASSERT(va <= VM_MAX_KERNEL_ADDRESS, ("pmap_enter: toobig")); - KASSERT((m->oflags & VPO_UNMANAGED) != 0 || va < kmi.clean_sva || - va >= kmi.clean_eva, + KASSERT((m->oflags & VPO_UNMANAGED) != 0 || !VA_IS_CLEANMAP(va), ("pmap_enter: managed mapping within the clean submap")); if ((m->oflags & VPO_UNMANAGED) == 0) VM_PAGE_OBJECT_BUSY_ASSERT(m); @@ -3292,7 +3291,7 @@ mmu_radix_enter_quick_locked(pmap_t pmap, vm_offset_t va, vm_page_t m, pt_entry_t *pte; vm_paddr_t pa; - KASSERT(va < kmi.clean_sva || va >= kmi.clean_eva || + KASSERT(!VA_IS_CLEANMAP(va) || (m->oflags & VPO_UNMANAGED) != 0, ("mmu_radix_enter_quick_locked: managed mapping within the clean submap")); PMAP_LOCK_ASSERT(pmap, MA_OWNED); diff --git a/sys/riscv/riscv/pmap.c b/sys/riscv/riscv/pmap.c index a44c3990bcff..ee8b332bcb8c 100644 --- a/sys/riscv/riscv/pmap.c +++ b/sys/riscv/riscv/pmap.c @@ -3339,7 +3339,7 @@ pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, vm_page_t m, pd_entry_t *l2; pt_entry_t *l3, newl3; - KASSERT(va < kmi.clean_sva || va >= kmi.clean_eva || + KASSERT(!VA_IS_CLEANMAP(va) || (m->oflags & VPO_UNMANAGED) != 0, ("pmap_enter_quick_locked: managed mapping within the clean submap")); rw_assert(&pvh_global_lock, RA_LOCKED); diff --git a/sys/vm/vm.h b/sys/vm/vm.h index 42d799d025b9..8dce853e684d 100644 --- a/sys/vm/vm.h +++ b/sys/vm/vm.h @@ -154,6 +154,9 @@ struct kva_md_info { vm_offset_t clean_eva; }; +#define VA_IS_CLEANMAP(va) \ + ((va) >= kmi.clean_sva && (va) < kmi.clean_eva) + extern struct kva_md_info kmi; extern void vm_ksubmap_init(struct kva_md_info *);