From nobody Tue May 12 16:55:29 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 4gFN4x3fznz6ckcR for ; Tue, 12 May 2026 16:55:29 +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 4gFN4x1HNGz3w3r for ; Tue, 12 May 2026 16:55:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1778604929; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0fyy/SroxdhHoSvLYJoSLYTizZ2ZWJh87kCTs/ELtzk=; b=boOa+v7pLp4xCz/o//+dukU9o9BXiZrw+fWI41CM74xZkksn2h8XjbEEad1KKGYkEKFnGs cCV9bl2E06hlte+Tg1+ZwxNElB+PIChbb1sDLJEHevnXNwqeszMDh/b1ql/dtk2dIv3WfT 1Q2Jv372HLBey0rpm/wvewD2qXPXSFXFXHX/YFV//hBqI1zT8lNDurM1+mU99eck1Soodo yrHeshedT/NtChrsXqYRNsqafIDtx0IIYV0kBFYmSC2JslrzwJ2tVOoGf2L3Ee5L8JYmYZ iN9khsLgoE8ho0diGVRNB2rFePa8o2AVWVaXQ3rmzfZL6GHGjtauA6muji4g9g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1778604929; a=rsa-sha256; cv=none; b=FSPdxhErmRMUlf0Mano97dgfuPXb4NwrTFJsOTuRUFdgovNnLFEAeIbvTrRgWI2WVy2krd xIyuoI8h/YA0QdKJ+awnSeg3cZGkhZM2RfdfwCk1apzR+bT25bCQwwWjcyidfF9dvQEjfX G1uTx2BCFI8xP2EhLQx+vZSxu4+zTcDMIGnbH0yrB2epZrCeIyzAJF4CVv8uRuzWAnhlm8 Igdlnz1Q5h+XF/Vk/apSpMI5iw1eVJsHdQyVs+J7+7P4/DMOaVFmrm74EE9PrTUxhSaimG fSTlKQZVp7zlSXNq0tqssoX5Aqnmu6y0j1vp2WERmS3n30iEjpT/1wOdkVnCzg== 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=1778604929; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0fyy/SroxdhHoSvLYJoSLYTizZ2ZWJh87kCTs/ELtzk=; b=T9GhkxRCwIcFoIcxYc4JqLrVRMAC4GjrlvAcFX/acgBDCQWoSbmuioIP9nuJ7b7iqn8cza AGAIbReVwfurJVZZxZ8/5MJX+wVdmuWmn5eOILGO/gy6wNiHOj89pMOvOq2CuP3Hg0+Qoy RkykZrP8cxzG33TZ5sx88kZZNbBYxpOX+F9FlO6EwSskMiOd/xEcXDYec3xLf6WFIzW6hx nwhKIcwpWyLdRA77XgByViC6xU2/1fDD68MI8fLSk9cnAtF2enrStL+amxFXyctsYoCpL3 ELuwj6x62cn/MjGUgJ01ErKGV/wKRYdjJMWzs5dPqPXrk2ACOvpBxKJmr57PGA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gFN4x0K4Nz1BSK for ; Tue, 12 May 2026 16:55:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3dcae by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 12 May 2026 16:55:29 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Sarah Walker From: Andrew Turner Subject: git: f9ba99eaa24f - main - physmem: Add a way to read all memory 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 List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f9ba99eaa24fb41a69c5480621427fe64333986f Auto-Submitted: auto-generated Date: Tue, 12 May 2026 16:55:29 +0000 Message-Id: <6a035b81.3dcae.2ec4e6d3@gitrepo.freebsd.org> The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=f9ba99eaa24fb41a69c5480621427fe64333986f commit f9ba99eaa24fb41a69c5480621427fe64333986f Author: Sarah Walker AuthorDate: 2026-05-12 11:10:32 +0000 Commit: Andrew Turner CommitDate: 2026-05-12 16:54:40 +0000 physmem: Add a way to read all memory In Arm CCA we need to find all memory to protect it. This needs to find all memory, ignoring any excluded memory to protect it from the host. Add physmem_all that reads all physical memory regions. Co-developed-by: Andrew Turner (writing tests & commit message) Sponsored by: Arm Ltd --- sys/kern/subr_physmem.c | 6 ++++++ sys/sys/physmem.h | 1 + tests/sys/kern/subr_physmem_test.c | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/sys/kern/subr_physmem.c b/sys/kern/subr_physmem.c index 6b97b36a6c51..7458c8147ad1 100644 --- a/sys/kern/subr_physmem.c +++ b/sys/kern/subr_physmem.c @@ -503,6 +503,12 @@ physmem_avail(vm_paddr_t *avail, size_t maxavail) return (regions_to_avail(avail, EXFLAG_NOALLOC, maxavail, 0, NULL, NULL)); } +size_t +physmem_all(vm_paddr_t *avail, size_t maxavail) +{ + return (regions_to_avail(avail, 0, maxavail, 0, NULL, NULL)); +} + bool physmem_excluded(vm_paddr_t pa, vm_size_t sz) { diff --git a/sys/sys/physmem.h b/sys/sys/physmem.h index 1b75dc63dc40..97c3ad9f3154 100644 --- a/sys/sys/physmem.h +++ b/sys/sys/physmem.h @@ -54,6 +54,7 @@ void physmem_hardware_region(uint64_t pa, uint64_t sz); void physmem_exclude_region(vm_paddr_t pa, vm_size_t sz, uint32_t flags); size_t physmem_avail(vm_paddr_t *avail, size_t maxavail); +size_t physmem_all(vm_paddr_t *avail, size_t maxavail); void physmem_init_kernel_globals(void); void physmem_print_tables(void); bool physmem_excluded(vm_paddr_t pa, vm_size_t sz); diff --git a/tests/sys/kern/subr_physmem_test.c b/tests/sys/kern/subr_physmem_test.c index b810a2016473..31bd30447e3b 100644 --- a/tests/sys/kern/subr_physmem_test.c +++ b/tests/sys/kern/subr_physmem_test.c @@ -79,6 +79,12 @@ ATF_TC_BODY(hwregion, tc) ATF_CHECK_EQ(len, 2); ATF_CHECK_EQ(avail[0], 2 * PAGE_SIZE); ATF_CHECK_EQ(avail[1], 7 * PAGE_SIZE); + + /* Check physmem_all */ + len = physmem_all(avail, nitems(avail)); + ATF_CHECK_EQ(len, 2); + ATF_CHECK_EQ(avail[0], 2 * PAGE_SIZE); + ATF_CHECK_EQ(avail[1], 7 * PAGE_SIZE); } ATF_TC_WITHOUT_HEAD(hwregion_exclude); @@ -106,6 +112,27 @@ ATF_TC_BODY(hwregion_exclude, tc) ATF_CHECK_EQ(avail[1], 3 * PAGE_SIZE); ATF_CHECK_EQ(avail[2], 6 * PAGE_SIZE); ATF_CHECK_EQ(avail[3], 7 * PAGE_SIZE); + + /* Check physmem_all */ + len = physmem_all(avail, 6); + ATF_CHECK_EQ(len, 2); + ATF_CHECK_EQ(avail[0], 2 * PAGE_SIZE); + ATF_CHECK_EQ(avail[1], 7 * PAGE_SIZE); + + /* Check an excluded region out of the included memory works */ + physmem_exclude_region(7 * PAGE_SIZE, PAGE_SIZE, EXFLAG_NOALLOC); + len = physmem_avail(avail, 6); + ATF_CHECK_EQ(len, 4); + ATF_CHECK_EQ(avail[0], 2 * PAGE_SIZE); + ATF_CHECK_EQ(avail[1], 3 * PAGE_SIZE); + ATF_CHECK_EQ(avail[2], 6 * PAGE_SIZE); + ATF_CHECK_EQ(avail[3], 7 * PAGE_SIZE); + + /* Check physmem_all */ + len = physmem_all(avail, 6); + ATF_CHECK_EQ(len, 2); + ATF_CHECK_EQ(avail[0], 2 * PAGE_SIZE); + ATF_CHECK_EQ(avail[1], 7 * PAGE_SIZE); } ATF_TC_WITHOUT_HEAD(hwregion_unordered); @@ -125,6 +152,12 @@ ATF_TC_BODY(hwregion_unordered, tc) ATF_CHECK_EQ(len, 2); ATF_CHECK_EQ(avail[0], PAGE_SIZE); ATF_CHECK_EQ(avail[1], 3 * PAGE_SIZE); + + /* Check physmem_all */ + len = physmem_all(avail, 4); + ATF_CHECK_EQ(len, 2); + ATF_CHECK_EQ(avail[0], PAGE_SIZE); + ATF_CHECK_EQ(avail[1], 3 * PAGE_SIZE); } ATF_TP_ADD_TCS(tp)