Re: git: 74e4a8d208f0 - main - pmap: add pmap_kextract(9) man page
Date: Sat, 14 Oct 2023 13:28:14 UTC
On Fri, Oct 13, 2023 at 06:27:33PM +0000, Mitchell Horne wrote: > The branch main has been updated by mhorne: > > URL: https://cgit.FreeBSD.org/src/commit/?id=74e4a8d208f0b3cf2525e3786f3efba71fcdb752 > > commit 74e4a8d208f0b3cf2525e3786f3efba71fcdb752 > Author: Mina Galić <freebsd@igalic.co> > AuthorDate: 2023-08-23 00:12:49 +0000 > Commit: Mitchell Horne <mhorne@FreeBSD.org> > CommitDate: 2023-10-13 18:27:24 +0000 > > pmap: add pmap_kextract(9) man page > > Add a man page for pmap_kextract(9), with alias to vtophys(9). This man > page is based on pmap_extract(9). > > Add it as cross reference in pmap(9), and add comments above the > function implementations. > > Co-authored-by: Graham Perrin <grahamperrin@gmail.com> > Co-authored-by: mhorne > Sponsored by: The FreeBSD Foundation > Pull Request: https://github.com/freebsd/freebsd-src/pull/827 > --- > share/man/man9/Makefile | 2 ++ > share/man/man9/pmap.9 | 1 + > share/man/man9/pmap_kextract.9 | 65 ++++++++++++++++++++++++++++++++++++++++++ > sys/amd64/amd64/pmap.c | 8 +++++- > sys/arm64/arm64/pmap.c | 6 ++++ > sys/riscv/riscv/pmap.c | 6 ++++ > 6 files changed, 87 insertions(+), 1 deletion(-) > > diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile > index 0b56a47db332..6768f52a38d6 100644 > --- a/share/man/man9/Makefile > +++ b/share/man/man9/Makefile > @@ -268,6 +268,7 @@ MAN= accept_filter.9 \ > pmap_copy.9 \ > pmap_enter.9 \ > pmap_extract.9 \ > + pmap_kextract.9 \ > pmap_growkernel.9 \ > pmap_init.9 \ > pmap_is_modified.9 \ > @@ -1807,6 +1808,7 @@ MLINKS+=PHOLD.9 PRELE.9 \ > PHOLD.9 PROC_ASSERT_NOT_HELD.9 > MLINKS+=pmap_copy.9 pmap_copy_page.9 > MLINKS+=pmap_extract.9 pmap_extract_and_hold.9 > +MLINKS+=pmap_kextract.9 vtophys.9 > MLINKS+=pmap_init.9 pmap_init2.9 > MLINKS+=pmap_is_modified.9 pmap_ts_referenced.9 > MLINKS+=pmap_pinit.9 pmap_pinit0.9 \ > diff --git a/share/man/man9/pmap.9 b/share/man/man9/pmap.9 > index 3f6a0f63c264..db27fe880afc 100644 > --- a/share/man/man9/pmap.9 > +++ b/share/man/man9/pmap.9 > @@ -97,6 +97,7 @@ operation. > .Xr pmap_init2 9 , > .Xr pmap_is_modified 9 , > .Xr pmap_is_prefaultable 9 , > +.Xr pmap_kextract 9 , > .Xr pmap_map 9 , > .Xr pmap_mincore 9 , > .Xr pmap_object_init_pt 9 , > diff --git a/share/man/man9/pmap_kextract.9 b/share/man/man9/pmap_kextract.9 > new file mode 100644 > index 000000000000..dd73446648f2 > --- /dev/null > +++ b/share/man/man9/pmap_kextract.9 > @@ -0,0 +1,65 @@ > +.\" > +.\" SPDX-License-Identifier: BSD-2-Clause > +.\" > +.\" Copyright (c) 2023 The FreeBSD Foundation > +.\" > +.\" This manual page was written by Mina Galić <FreeBSD@igalic.co> under > +.\" sponsorship from the FreeBSD Foundation. > +.\" > +.Dd August 24, 2023 > +.Dt PMAP_KEXTRACT 9 > +.Os > +.Sh NAME > +.Nm pmap_kextract , > +.Nm vtophys > +.Nd extract a physical address from the kernel page table > +.Sh SYNOPSIS > +.In sys/param.h > +.In vm/vm.h > +.In vm/pmap.h > +.Ft vm_paddr_t > +.Fo pmap_kextract > +.Fa "vm_offset_t va" > +.Fc > +.Ft vm_paddr_t > +.Fo vtophys > +.Fa "vm_offset_t va" > +.Fc > +.Sh DESCRIPTION > +The > +.Fn pmap_kextract > +function retrieves the underlying physical memory address corresponding to the given kernel virtual address Line too long. > +.Fa va . > +The value of > +.Fa va > +must correlate to an active mapping in the kernel address space. What does it mean 'correlate'? > +.Pp > +.Fn vtophys > +is an alias for > +.Fn pmap_kextract > +and behaves identically. > +.Sh RETURN VALUES > +The > +.Fn pmap_kextract > +function will return the physical address > +.Pq Vt vm_paddr_t > +associated with the kernel virtual address and 'associated'? The function returns address of physical memory mapped at the supplied kernel virtual address. > +.Fa va . > +.Pp > +.Fn pmap_kextract > +generally does not fail. > +However, if supplied with an illegitimate value for > +.Fa va , > +the function may return zero, an invalid non-zero value, or call > +.Xr panic 9 . > +.Sh SEE ALSO > +.Xr pmap 9 , > +.Xr pmap_extract 9 > +.Sh AUTHORS > +.An -nosplit > +This manual page was written by > +.An Mina Galić Aq Mt FreeBSD@igalic.co , > +based on the > +.Xr pmap_extract 9 > +page written by > +.An Bruce M Simpson Aq Mt bms@spc.org . > diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c > index ff83d8749313..8c438cfb4639 100644 > --- a/sys/amd64/amd64/pmap.c > +++ b/sys/amd64/amd64/pmap.c > @@ -3846,7 +3846,7 @@ pmap_flush_cache_phys_range(vm_paddr_t spa, vm_paddr_t epa, vm_memattr_t mattr) > * Extract the physical page address associated > * with the given map/virtual_address pair. > */ > -vm_paddr_t > +vm_paddr_t > pmap_extract(pmap_t pmap, vm_offset_t va) > { > pdp_entry_t *pdpe; > @@ -3933,6 +3933,12 @@ out: > return (m); > } > > +/* > + * Routine: pmap_kextract > + * Function: > + * Extract the physical page address associated with the given kernel > + * virtual address. > + */ > vm_paddr_t > pmap_kextract(vm_offset_t va) > { > diff --git a/sys/arm64/arm64/pmap.c b/sys/arm64/arm64/pmap.c > index 6f2afa0b98a3..8c2c6f9d7b81 100644 > --- a/sys/arm64/arm64/pmap.c > +++ b/sys/arm64/arm64/pmap.c > @@ -1949,6 +1949,12 @@ pmap_klookup(vm_offset_t va, vm_paddr_t *pa) > return (true); > } > > +/* > + * Routine: pmap_kextract > + * Function: > + * Extract the physical page address associated with the given kernel > + * virtual address. > + */ > vm_paddr_t > pmap_kextract(vm_offset_t va) > { > diff --git a/sys/riscv/riscv/pmap.c b/sys/riscv/riscv/pmap.c > index 49ee54b37918..66054898b281 100644 > --- a/sys/riscv/riscv/pmap.c > +++ b/sys/riscv/riscv/pmap.c > @@ -970,6 +970,12 @@ pmap_extract_and_hold(pmap_t pmap, vm_offset_t va, vm_prot_t prot) > return (m); > } > > +/* > + * Routine: pmap_kextract > + * Function: > + * Extract the physical page address associated with the given kernel > + * virtual address. > + */ > vm_paddr_t > pmap_kextract(vm_offset_t va) > {