<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/sys/vm/vm_page.h, branch stable/13</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src/atom?h=stable%2F13</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src/atom?h=stable%2F13'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/'/>
<updated>2023-08-23T17:43:20Z</updated>
<entry>
<title>sys: Remove $FreeBSD$: two-line .h pattern</title>
<updated>2023-08-23T17:43:20Z</updated>
<author>
<name>Warner Losh</name>
<email>imp@FreeBSD.org</email>
</author>
<published>2023-08-22T01:31:02Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=f8167e0404dab9ffeaca95853dd237ab7c587f82'/>
<id>urn:sha1:f8167e0404dab9ffeaca95853dd237ab7c587f82</id>
<content type='text'>
Remove /^\s*\*\n \*\s+\$FreeBSD\$$\n/

Similar commit in current:
(cherry picked from commit 95ee2897e98f)
</content>
</entry>
<entry>
<title>Add vm_page_any_valid()</title>
<updated>2022-10-26T00:43:43Z</updated>
<author>
<name>Konstantin Belousov</name>
<email>kib@FreeBSD.org</email>
</author>
<published>2022-10-18T09:16:36Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=3e21b50930046fcc03fce56444b86f59c0a915a1'/>
<id>urn:sha1:3e21b50930046fcc03fce56444b86f59c0a915a1</id>
<content type='text'>
(cherry picked from commit 934bfc128efae7dec678dd52f75a28ac3538384a)
</content>
</entry>
<entry>
<title>vm/vm_extern.h, vm/vm_page.h: use sys/kassert.h</title>
<updated>2022-02-08T06:42:07Z</updated>
<author>
<name>Konstantin Belousov</name>
<email>kib@FreeBSD.org</email>
</author>
<published>2022-01-29T03:39:30Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=64e0f75f3928f5d92d7d8d29311f2542668bbb22'/>
<id>urn:sha1:64e0f75f3928f5d92d7d8d29311f2542668bbb22</id>
<content type='text'>
(cherry picked from commit d950c5898a2d8733cd6e75e7ef82b08acac79b34)
</content>
</entry>
<entry>
<title>vm_page: Remove vm_page_sbusy() and vm_page_xbusy()</title>
<updated>2021-11-29T14:11:37Z</updated>
<author>
<name>Mark Johnston</name>
<email>markj@FreeBSD.org</email>
</author>
<published>2021-11-15T16:35:52Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=1556ae13560c18f44b5daed19608c547e0bf6e8a'/>
<id>urn:sha1:1556ae13560c18f44b5daed19608c547e0bf6e8a</id>
<content type='text'>
They are unused today and cannot be safely used in the face of unlocked
lookup, in which pages may be busied without the object lock held.

Obtained from:	jeff (object_concurrency patches)
Reviewed by:	kib

(cherry picked from commit a2665158d03e87dad410384e5c61c72e675f3edd)
</content>
</entry>
<entry>
<title>vm_page: Consolidate page busy sleep mechanisms</title>
<updated>2021-11-29T14:11:29Z</updated>
<author>
<name>Mark Johnston</name>
<email>markj@FreeBSD.org</email>
</author>
<published>2021-11-15T16:35:44Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=cb081566cf868dccce2f96bf5276b6dc561c842d'/>
<id>urn:sha1:cb081566cf868dccce2f96bf5276b6dc561c842d</id>
<content type='text'>
- Modify vm_page_busy_sleep() and vm_page_busy_sleep_unlocked() to take
  a VM_ALLOC_* flag indicating whether to sleep on shared-busy, and fix
  up callers.
- Modify vm_page_busy_sleep() to return a status indicating whether the
  object lock was dropped, and fix up callers.
- Convert callers of vm_page_sleep_if_busy() to use vm_page_busy_sleep()
  instead.
- Remove vm_page_sleep_if_(x)busy().

No functional change intended.

Obtained from:	jeff (object_concurrency patches)
Reviewed by:	kib

(cherry picked from commit 87b646630c4892e21446cd096bea6bcaecea33ac)
</content>
</entry>
<entry>
<title>Introduce vm_page_alloc_noobj_contig()</title>
<updated>2021-11-03T17:41:00Z</updated>
<author>
<name>Mark Johnston</name>
<email>markj@FreeBSD.org</email>
</author>
<published>2021-10-20T00:24:21Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=fb3ba080a18953ef512aee0b93e5185eda91d195'/>
<id>urn:sha1:fb3ba080a18953ef512aee0b93e5185eda91d195</id>
<content type='text'>
This is the same as vm_page_alloc_noobj(), but allocates physically
contiguous runs of memory.  For now it is implemented in terms of
vm_page_alloc_contig(), with the difference that
vm_page_alloc_noobj_contig() implements VM_ALLOC_ZERO by zeroing the
page.

Reviewed by:	alc, kib
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 92db9f3bb7623883231214e74ec38788c3dffc6a)
</content>
</entry>
<entry>
<title>vm_page: Add a new page allocator interface for unnamed pages</title>
<updated>2021-11-03T17:35:25Z</updated>
<author>
<name>Mark Johnston</name>
<email>markj@FreeBSD.org</email>
</author>
<published>2021-10-20T00:22:12Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=24204bede3ad8126348c568420a25d47e5bdfe42'/>
<id>urn:sha1:24204bede3ad8126348c568420a25d47e5bdfe42</id>
<content type='text'>
The diff adds vm_page_alloc_noobj() and vm_page_alloc_noobj_domain().
These mostly correspond to vm_page_alloc() and vm_page_alloc_domain()
when no VM object is specified, with the exception that they handle
VM_ALLOC_ZERO by zeroing the page, rather than by preserving PG_ZERO.

This simplifies callers and will permit simplification of the
vm_page_alloc_domain() definition.

Since the new allocator variant is similar to vm_page_alloc_freelist(),
implement both of them using a common backend allocator function.  No
functional change intended.

Reviewed by:	alc, kib
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit b498f71bc56af0069d9a4685b8385ee613a00727)
</content>
</entry>
<entry>
<title>Add a VM flag to prevent reclaim on a failed contig allocation</title>
<updated>2021-11-03T17:35:16Z</updated>
<author>
<name>Ryan Stone</name>
<email>rstone@FreeBSD.org</email>
</author>
<published>2021-01-29T21:13:57Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=8deb5f2f641581fc547710e9db04e5d784f374b9'/>
<id>urn:sha1:8deb5f2f641581fc547710e9db04e5d784f374b9</id>
<content type='text'>
If a M_WAITOK contig alloc fails, the VM subsystem will try to
reclaim contiguous memory twice before actually failing the
request.  On a system with 64GB of RAM I've observed this take
400-500ms before it finally gives up, and I believe that this
will only be worse on systems with even more memory.

In certain contexts this delay is extremely harmful, so add a flag
that will skip reclaim for allocation requests to allow those
paths to opt-out of doing an expensive reclaim.

Sponsored by: Dell Inc
Differential Revision:	https://reviews.freebsd.org/D28422
Reviewed by: markj, kib

(cherry picked from commit 660344ca44c63bfe4a16c3e57d0f6dbcbb5e083e)
</content>
</entry>
<entry>
<title>Un-staticise vm_page_init_page()</title>
<updated>2021-06-24T02:20:33Z</updated>
<author>
<name>Konstantin Belousov</name>
<email>kib@FreeBSD.org</email>
</author>
<published>2021-06-17T10:58:13Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=57184d6a6c7eaa74a69520769ddbb8a85ae0475e'/>
<id>urn:sha1:57184d6a6c7eaa74a69520769ddbb8a85ae0475e</id>
<content type='text'>
(cherry picked from commit 5b10e79edba561270001c097fbffcf05d07e9a4a)
</content>
</entry>
<entry>
<title>vm_phys: Try to clean up NUMA KPIs</title>
<updated>2020-11-19T03:59:21Z</updated>
<author>
<name>Mark Johnston</name>
<email>markj@FreeBSD.org</email>
</author>
<published>2020-11-19T03:59:21Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=431fb8abd7946ccb6710b41337ba8476fea448f2'/>
<id>urn:sha1:431fb8abd7946ccb6710b41337ba8476fea448f2</id>
<content type='text'>
It can useful for code outside the VM system to look up the NUMA domain
of a page backing a virtual or physical address, specifically when
creating NUMA-aware data structures.  We have _vm_phys_domain() for
this, but the leading underscore implies that it's an internal function,
and vm_phys.h has dependencies on a number of other headers.

Rename vm_phys_domain() to vm_page_domain(), and _vm_phys_domain() to
vm_phys_domain().  Make the latter an inline function.

Add _vm_phys.h and define struct vm_phys_seg there so that it's easier
to use in other headers.  Include it from vm_page.h so that
vm_page_domain() can be defined there.

Include machine/vmparam.h from _vm_phys.h since it depends directly on
some constants defined there.

Reviewed by:	alc
Reviewed by:	dougm, kib (earlier versions)
Differential Revision:	https://reviews.freebsd.org/D27207
</content>
</entry>
</feed>
