Page MenuHomeFreeBSD

alc (Alan Cox)
User

Projects

User Details

User Since
Dec 14 2014, 5:52 AM (573 w, 2 d)

Recent Activity

Yesterday

alc accepted D54153: linuxkpi: clean up stray pctrie_iter_reset.
Tue, Dec 9, 5:03 PM

Mon, Dec 8

alc added inline comments to D53412: linuxkpi: gracefully handle page lookup failure in lkpi_vmf_insert_pfn_prot_locked.
Mon, Dec 8, 9:32 PM

Wed, Dec 3

alc accepted D54022: riscv/pmap: Handle superpages in pmap_extract_and_hold().
Wed, Dec 3, 8:44 AM

Tue, Dec 2

alc accepted D54022: riscv/pmap: Handle superpages in pmap_extract_and_hold().
Tue, Dec 2, 5:36 PM
alc added inline comments to D54022: riscv/pmap: Handle superpages in pmap_extract_and_hold().
Tue, Dec 2, 5:28 PM

Fri, Nov 28

alc added inline comments to D53967: stddef.h: add unreachable() for C23 compliance.
Fri, Nov 28, 4:48 PM

Thu, Nov 27

alc added inline comments to D53891: Fixes for dreaded assert in jemalloc page allocator AKA mmap(MAP_ANON) providing non-zeroed pages.
Thu, Nov 27, 9:02 PM
alc added inline comments to D53891: Fixes for dreaded assert in jemalloc page allocator AKA mmap(MAP_ANON) providing non-zeroed pages.
Thu, Nov 27, 8:54 PM

Wed, Nov 26

alc added inline comments to D53891: Fixes for dreaded assert in jemalloc page allocator AKA mmap(MAP_ANON) providing non-zeroed pages.
Wed, Nov 26, 8:54 PM

Tue, Nov 25

alc added a comment to D53891: Fixes for dreaded assert in jemalloc page allocator AKA mmap(MAP_ANON) providing non-zeroed pages.
In D53891#1231869, @kib wrote:
In D53891#1231400, @kib wrote:
In D53891#1231399, @alc wrote:

Can you elaborate on what you saw when debugging this problem? In particular, whether the map entries had OBJ_ONEMAPPING set? In principle, the ref_count and size shouldn't be a concern if the object has OBJ_ONEMAPPING set. For example, suppose there is an anonymous mapping (with OBJ_ONEMAPPING set) for the range [A, D). Further, suppose we punch a hole in the middle of that mapping, by calling munmap() on the range [B, C) where A < B < C < D. Now, we have two mappings, [A, B) and [C, D), that both reference the original object, and that object should still have OBJ_ONEMAPPING set. Because OBJ_ONEMAPPING is set, the munmap() should have freed any physical pages and swap space from the object that fell within the range [B, C). So, if a new anonymous mapping is created starting at either B or D, we should be able to safely coalesce it.

I did not have access to the object state there (all debugging was done remotely).

The situation you described is one of the cases that concerned me. I am not sure that we have a guarantee that doing the coalesce on the object with OBJ_ONEMAPPING flag but ref_count > 1 would not corrupt some other mapping. We need to do vm_object_page_remove(), and in principle that could remove pages which belong to other fragment.

I believe OBJ_ONEMAPPING means, "each page in the object is mapped at most once", so in the case you describe, OBJ_ONEMAPPING should not be set to begin with.

But this is exactly the part of my concern: even if OBJ_ONEMAPPING is not set, other conditions would allow the coalesce.

Tue, Nov 25, 8:08 PM
alc added a comment to D53891: Fixes for dreaded assert in jemalloc page allocator AKA mmap(MAP_ANON) providing non-zeroed pages.
In D53891#1231400, @kib wrote:
In D53891#1231399, @alc wrote:

Can you elaborate on what you saw when debugging this problem? In particular, whether the map entries had OBJ_ONEMAPPING set? In principle, the ref_count and size shouldn't be a concern if the object has OBJ_ONEMAPPING set. For example, suppose there is an anonymous mapping (with OBJ_ONEMAPPING set) for the range [A, D). Further, suppose we punch a hole in the middle of that mapping, by calling munmap() on the range [B, C) where A < B < C < D. Now, we have two mappings, [A, B) and [C, D), that both reference the original object, and that object should still have OBJ_ONEMAPPING set. Because OBJ_ONEMAPPING is set, the munmap() should have freed any physical pages and swap space from the object that fell within the range [B, C). So, if a new anonymous mapping is created starting at either B or D, we should be able to safely coalesce it.

I did not have access to the object state there (all debugging was done remotely).

The situation you described is one of the cases that concerned me. I am not sure that we have a guarantee that doing the coalesce on the object with OBJ_ONEMAPPING flag but ref_count > 1 would not corrupt some other mapping. We need to do vm_object_page_remove(), and in principle that could remove pages which belong to other fragment.

I believe OBJ_ONEMAPPING means, "each page in the object is mapped at most once", so in the case you describe, OBJ_ONEMAPPING should not be set to begin with.

Tue, Nov 25, 8:02 PM

Mon, Nov 24

alc added a comment to D53891: Fixes for dreaded assert in jemalloc page allocator AKA mmap(MAP_ANON) providing non-zeroed pages.
In D53891#1231456, @kib wrote:

After another day of extensive testing, I can confirm that everything is working properly.

I'm happy to perform additional debugging to clarify the problematic condition, should you find it helpful.
Would you like a dump of the affected object for the newly added goto remove_pager case? Or anything else?

Try just this part of the series alone. Do not enable vm_check_pg_zero. Does it help?

diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c
index 9d09224e7346..8850a1b8644e 100644
--- a/sys/vm/vm_object.c
+++ b/sys/vm/vm_object.c
@@ -1988,7 +1988,7 @@ vm_object_page_remove(vm_object_t object, vm_pindex_t start, vm_pindex_t end,
       (options & (OBJPR_CLEANONLY | OBJPR_NOTMAPPED)) == OBJPR_NOTMAPPED,
       ("vm_object_page_remove: illegal options for object %p", object));
   if (object->resident_page_count == 0)
-    return;
+     goto remove_pager;
   vm_object_pip_add(object, 1);
   vm_page_iter_limit_init(&pages, object, end);
 again:
@@ -2061,6 +2061,7 @@ vm_object_page_remove(vm_object_t object, vm_pindex_t start, vm_pindex_t end,
   }
   vm_object_pip_wakeup(object);
 
+remove_pager:
   vm_pager_freespace(object, start, (end == 0 ? object->size : end) -
       start);
 }
Mon, Nov 24, 5:57 PM
alc added a comment to D53891: Fixes for dreaded assert in jemalloc page allocator AKA mmap(MAP_ANON) providing non-zeroed pages.

Confirmed, this part is enough.

Mon, Nov 24, 5:55 PM

Sun, Nov 23

alc added a comment to D53891: Fixes for dreaded assert in jemalloc page allocator AKA mmap(MAP_ANON) providing non-zeroed pages.

Can you elaborate on what you saw when debugging this problem? In particular, whether the map entries had OBJ_ONEMAPPING set? In principle, the ref_count and size shouldn't be a concern if the object has OBJ_ONEMAPPING set. For example, suppose there is an anonymous mapping (with OBJ_ONEMAPPING set) for the range [A, D). Further, suppose we punch a hole in the middle of that mapping, by calling munmap() on the range [B, C) where A < B < C < D. Now, we have two mappings, [A, B) and [C, D), that both reference the original object, and that object should still have OBJ_ONEMAPPING set. Because OBJ_ONEMAPPING is set, the munmap() should have freed any physical pages and swap space from the object that fell within the range [B, C). So, if a new anonymous mapping is created starting at either B or D, we should be able to safely coalesce it.

Sun, Nov 23, 10:36 PM

Oct 10 2025

alc accepted D52982: kstack: Fix iterator usage in vm_thread_stack_create().
Oct 10 2025, 4:34 PM

Oct 9 2025

alc accepted D53008: vm_object: Export the number of wired pages in vm_object_list_handler().
Oct 9 2025, 10:43 PM

Oct 4 2025

alc added a comment to D52744: atomic.9: provide fine details about CAS memory model MD semantic.

It has been a long time since I looked at this man page. In the interest of making sure that these changes were written in an style consistent with the rest of the man page, I decided to take a look, and having done so the following bits concern me:

Oct 4 2025, 8:21 PM

Sep 30 2025

alc added a comment to D52744: atomic.9: provide fine details about CAS memory model MD semantic.
In D52744#1205716, @alc wrote:

Note that the llsc instructions have some subtly when implementing fully sequentially consistent semantics. As the acquire and release are on different instructions this means memory operations may move into the sequence & be swapped. As we don't implement them in atomic(9) this shouldn't be an issue, however will be if we latter add them.

I vaguely recall Linux having an issue with the aforementioned behavior about 8-10 years ago in the implementation of a synchronization primitive.

I've known about the issue on Linux
This is the fix for Linux issue https://github.com/torvalds/linux/commit/8e86f0b409a44193f1587e87b69c5dcf8f65be67. It's not been a problem on FreeBSD as we don't have atomic operations with a full barrier in atomic(9).

Sep 30 2025, 6:43 PM

Sep 28 2025

alc added a comment to D52744: atomic.9: provide fine details about CAS memory model MD semantic.

On arm64 atomics with an acquire then later memory operations can move before the store, however the store needs to succeed as if it doesn't then we will execute the load-acquire again.

I don't think the CAS instructions allow this. The pseudo-code has the comment All observers in the shareability domain observe the following load and store atomically before listing the load and store operations. This seems to indicate if the load has been observed the store has too.

Note that the llsc instructions have some subtly when implementing fully sequentially consistent semantics. As the acquire and release are on different instructions this means memory operations may move into the sequence & be swapped. As we don't implement them in atomic(9) this shouldn't be an issue, however will be if we latter add them.

Sep 28 2025, 6:42 PM

Sep 24 2025

alc accepted D52708: vm_object: Remove the kmem_object alias.
Sep 24 2025, 2:52 PM

Sep 14 2025

alc accepted D51474: vm_fault: try to only sbusy valid page that is not writeable.

I am happy to see how much simpler this has gotten, particularly the elimination of the range lock.

Sep 14 2025, 6:41 PM

Sep 3 2025

alc accepted D52190: arm64: Add a multiple TLBI workaround.
Sep 3 2025, 6:10 PM

Sep 2 2025

alc accepted D52348: vm/vm_fault.c: rename vm_fault_hold_pages_e() to vm_fault_hold_pages().
Sep 2 2025, 10:20 PM

Sep 1 2025

alc added inline comments to D52183: arm64: Create a TLBI invalidate for the kernel.
Sep 1 2025, 5:39 PM
alc added a comment to D52190: arm64: Add a multiple TLBI workaround.

In principle, I am okay with this change. However, I do have some questions.

Sep 1 2025, 5:06 PM

Aug 29 2025

alc added a comment to D51474: vm_fault: try to only sbusy valid page that is not writeable.

I have been following this, but have not given it a careful reading. I should be able to do so over the weekend.

Aug 29 2025, 5:15 PM

Aug 28 2025

alc accepted D52224: vm_fault.c: rename vm_fault_quick_hold_pages_e() to vm_fault_hold_pages_e().
Aug 28 2025, 5:56 PM
alc added inline comments to D52186: arm64: Cleanup enabling the MMU.
Aug 28 2025, 5:07 PM
alc accepted D52188: arm64: Clean up HW DBM errata detection.
Aug 28 2025, 4:55 PM
alc added a comment to D52165: vm_fault: improve interface for vm_fault_quick_hold_pages().
In D52165#1191863, @imp wrote:

Generally I like it, but the name is very long and specific for the logical concept of 'map this into the physical for I/O and keep it there'. But I have no better name, so I'll just grouse because I never could remember the order of the verbs when I was writing the nvme mapping code.

Aug 28 2025, 4:48 PM
alc accepted D52184: arm64: Replace cpu_tlb_flushID in initarm.
Aug 28 2025, 4:11 PM
alc accepted D52185: arm64: Remove cpu_tlb_flushID now it's unused.
Aug 28 2025, 4:08 PM

Aug 16 2025

alc accepted D51929: amd64: re-enable la57.
Aug 16 2025, 7:11 PM

Aug 10 2025

alc committed rGd88f8a306cfe: pmap_demote_{l2,pde}: never invalidate wired mappings (authored by alc).
pmap_demote_{l2,pde}: never invalidate wired mappings
Aug 10 2025, 11:24 PM
alc committed rGf406b54c806a: pmap_enter_{l2,pde}: correct the handling of an error case (authored by alc).
pmap_enter_{l2,pde}: correct the handling of an error case
Aug 10 2025, 11:24 PM
alc committed rGc0e04a22331e: arm64 pmap: do not panic when unable to insert PTP into trie (authored by alc).
arm64 pmap: do not panic when unable to insert PTP into trie
Aug 10 2025, 11:24 PM
alc committed rGb84a0aa00881: amd64 pmap: simplify recent changes to pmap_enter_pde() (authored by alc).
amd64 pmap: simplify recent changes to pmap_enter_pde()
Aug 10 2025, 12:43 AM

Aug 9 2025

alc committed rG9810fb151938: amd64 pmap: convert panics to KASSERTs (authored by alc).
amd64 pmap: convert panics to KASSERTs
Aug 9 2025, 9:10 PM
alc committed rG84df9c02785b: amd64 pmap: fix mismerge (authored by alc).
amd64 pmap: fix mismerge
Aug 9 2025, 8:38 PM
alc committed rG702224d7e082: amd64 pmap: preallocate another page table page in pmap_demote_DMAP() (authored by alc).
amd64 pmap: preallocate another page table page in pmap_demote_DMAP()
Aug 9 2025, 8:08 PM

Aug 2 2025

alc committed rG6fb848f2ff91: amd64 pmap: Use INVPCID_CTXGLOB on Ryzen processors (authored by alc).
amd64 pmap: Use INVPCID_CTXGLOB on Ryzen processors
Aug 2 2025, 5:15 PM
alc closed D51565: amd64 pmap: enable the use of INVPCID_CTXGLOB on AMD Ryzen processors.
Aug 2 2025, 5:15 PM
alc accepted D51692: vm_page: Clear VM_ALLOC_NOCREAT in vm_page_grab_pflags().
Aug 2 2025, 2:48 AM

Jul 30 2025

alc accepted D51636: swapongeom: destroy consumer in case swaponsomething failed.
Jul 30 2025, 5:23 PM

Jul 29 2025

alc accepted D51618: sys_swapon: reject too small devices.
Jul 29 2025, 7:56 PM

Jul 27 2025

alc added inline comments to D51565: amd64 pmap: enable the use of INVPCID_CTXGLOB on AMD Ryzen processors.
Jul 27 2025, 9:16 PM
alc updated the diff for D51565: amd64 pmap: enable the use of INVPCID_CTXGLOB on AMD Ryzen processors.

Eliminate unnecessary indirection.

Jul 27 2025, 9:06 PM
alc added inline comments to D51565: amd64 pmap: enable the use of INVPCID_CTXGLOB on AMD Ryzen processors.
Jul 27 2025, 4:55 PM

Jul 26 2025

alc added inline comments to D51565: amd64 pmap: enable the use of INVPCID_CTXGLOB on AMD Ryzen processors.
Jul 26 2025, 9:09 PM
alc requested review of D51565: amd64 pmap: enable the use of INVPCID_CTXGLOB on AMD Ryzen processors.
Jul 26 2025, 9:05 PM

Jul 25 2025

alc added inline comments to D49442: pmap: Avoid clearing the accessed bit for wired mappings.
Jul 25 2025, 8:05 PM
alc added a comment to D49442: pmap: Avoid clearing the accessed bit for wired mappings.
In D49442#1163641, @alc wrote:

I'm really on the fence about this. I could make a respectable argument for either approach.

Perhaps it's reasonable to simply implement both approaches? The patch in review makes some sense on its own, independent of the bug which motivated it: I can't see any practical reason for madvise(DONTNEED or FREE) to have any side effects on wired mappings. On the other hand, it seems sensible to modify the demotion path to handle this case, since we have no rule which says that wired mappings must have PG_A set, so this case could arise again in the future.

Jul 25 2025, 8:01 PM

Jul 23 2025

alc committed rG7502c1f27082: pmap_demote_{l2,pde}: never invalidate wired mappings (authored by alc).
pmap_demote_{l2,pde}: never invalidate wired mappings
Jul 23 2025, 6:03 PM
alc closed D51431: pmap_demote_{l2,pde}: never invalidate wired mappings.
Jul 23 2025, 6:03 PM
alc added a comment to D51431: pmap_demote_{l2,pde}: never invalidate wired mappings.

I believe this makes D49442 unnecessary, at least as far as fixing the bug is concerned.

Jul 23 2025, 5:58 PM

Jul 20 2025

alc requested review of D51431: pmap_demote_{l2,pde}: never invalidate wired mappings.
Jul 20 2025, 12:37 AM
alc accepted D51364: LA57: move large map out of kernel pml4.
Jul 20 2025, 12:16 AM

Jul 19 2025

alc added a comment to D51345: amd64/pmap: Remove !SMP TLB invalidation routines.
In D51345#1173585, @kib wrote:
In D51345#1172943, @kib wrote:

I am curious how does the patch build.
For instance, pmap_invalidate_page() calls smp_masked_invlpg(), which is provided by amd64/mp_machdep.c. And mp_machdep.c is 'optional smp' in files.amd64.

Oops, yes. This was from a larger patch series which entirely removes the SMP option for amd64. With just this patch, a nooptions SMP kernel cannot build.

It is enough to #ifdef SMP the calls to smp_masked_*() in each of the SMP invalidation functions.

What do you think of this goal overall? My belief is that !SMP amd64 kernels are not used very much and are not worth the maintenance overhead. With the complete patch series, all of sys/amd64 simply ignores the SMP option. If you think it's the right direction, I'll post the remaining patches.

I stated publicly more than once that I would like to remove UP at all, and not only for x86. But the discussion never ignited. In other words, I fully support removing as much #ifdef SMPs as we can.

Rather than fix this commit, I propose going further: https://reviews.freebsd.org/D51403

I brought up removal of !SMP support for amd64 last year at bsdcan and there was no objection. I am not sure about the importance of !SMP in general, e.g., maybe it is somewhat important to support it for embedded arm devices. But for amd64 I think there is no reasonable objection to its removal. GENERIC with nooptions SMP is broken in multiple ways and has been for a while.

Jul 19 2025, 7:18 PM
alc added inline comments to D51364: LA57: move large map out of kernel pml4.
Jul 19 2025, 6:50 PM

Jul 18 2025

alc accepted D51364: LA57: move large map out of kernel pml4.
Jul 18 2025, 5:48 PM
alc accepted D51406: arm64: Add ADDR_IS_USER.
Jul 18 2025, 5:22 PM

Jul 17 2025

alc committed rG5a846c48f209: pmap_enter_{l2,pde}: correct the handling of an error case (authored by alc).
pmap_enter_{l2,pde}: correct the handling of an error case
Jul 17 2025, 11:34 PM
alc closed D51353: pmap_enter_{l2,pde}: correct the handling of an error case.
Jul 17 2025, 11:34 PM
alc added a comment to D51353: pmap_enter_{l2,pde}: correct the handling of an error case.

I have two related observations:

Jul 17 2025, 7:13 PM

Jul 16 2025

alc updated the diff for D51353: pmap_enter_{l2,pde}: correct the handling of an error case.

Use ADDR_IS_KERNEL.

Jul 16 2025, 7:07 PM
alc added a comment to D51345: amd64/pmap: Remove !SMP TLB invalidation routines.

I also have an upcoming change in this area. AMD Ryzen processors have long supported a subset of the invpcid instruction’s functionality, even though they don’t support PCID. Specifically, they support the functionality to invalidate PG_G mappings, and not surprisingly this is supposed to be faster than toggling the PGE bit in CR4.

Jul 16 2025, 6:01 PM
alc accepted D51345: amd64/pmap: Remove !SMP TLB invalidation routines.
Jul 16 2025, 5:18 PM
alc updated the summary of D51353: pmap_enter_{l2,pde}: correct the handling of an error case.
Jul 16 2025, 5:00 PM
alc requested review of D51353: pmap_enter_{l2,pde}: correct the handling of an error case.
Jul 16 2025, 4:58 PM
alc added inline comments to D51345: amd64/pmap: Remove !SMP TLB invalidation routines.
Jul 16 2025, 4:22 PM

Jul 15 2025

alc accepted D48337: vm_pageout: Scan inactive dirty pages less aggressively.
Jul 15 2025, 3:00 AM
alc accepted D51322: vm_pageout: Remove a volatile qualifier from some vm_domain members.
Jul 15 2025, 2:58 AM
alc accepted D51321: swap_pager: Convert swap-space-full flags to bools.
Jul 15 2025, 1:16 AM
alc added a comment to D50333: vm_phys: Ensure that pages are removed from pagequeues before freeing.

This can be abandoned.

Jul 15 2025, 12:45 AM
alc accepted D48337: vm_pageout: Scan inactive dirty pages less aggressively.
Jul 15 2025, 12:42 AM
alc accepted D51311: i386: Avoid calling kmem_alloc_contig(M_NEVERFREED).
Jul 15 2025, 12:17 AM

Jul 14 2025

alc committed rGb87aa791533f: amd64 pmap: simplify recent changes to pmap_enter_pde() (authored by alc).
amd64 pmap: simplify recent changes to pmap_enter_pde()
Jul 14 2025, 12:29 AM
alc closed D51235: amd64 pmap: avoid an unnecessary demotion.
Jul 14 2025, 12:29 AM

Jul 13 2025

alc accepted D48337: vm_pageout: Scan inactive dirty pages less aggressively.
Jul 13 2025, 11:40 PM
alc added inline comments to D51235: amd64 pmap: avoid an unnecessary demotion.
Jul 13 2025, 8:07 PM
alc added inline comments to D51235: amd64 pmap: avoid an unnecessary demotion.
Jul 13 2025, 6:34 PM
alc committed rG2cfd6342ac84: arm64 pmap: do not panic when unable to insert PTP into trie (authored by alc).
arm64 pmap: do not panic when unable to insert PTP into trie
Jul 13 2025, 5:09 PM
alc closed D51220: arm64 pmap: do not panic on inability to insert ptp into trie.
Jul 13 2025, 5:09 PM

Jul 12 2025

alc added a comment to D51220: arm64 pmap: do not panic on inability to insert ptp into trie.

Do you have some local modifications to test the ADDR_IS_KERNEL(va) code path in pmap_enter_l2()?

Jul 12 2025, 9:32 PM
alc updated the diff for D51220: arm64 pmap: do not panic on inability to insert ptp into trie.

See inline comment for an explanation.

Jul 12 2025, 9:27 PM

Jul 11 2025

alc accepted D51248: vm_domainset: Print correct function in KASSERT()/panic().
Jul 11 2025, 4:49 PM

Jul 10 2025

alc requested review of D51235: amd64 pmap: avoid an unnecessary demotion.
Jul 10 2025, 7:45 PM
alc accepted D51232: pctrie: leave pctrie top as current after [gl]e_lookup failure.
Jul 10 2025, 7:53 AM

Jul 9 2025

alc updated the diff for D51220: arm64 pmap: do not panic on inability to insert ptp into trie.

Rename remove_pt to demote_kl2e to better reflect what it controls.

Jul 9 2025, 7:35 PM
alc added inline comments to D51220: arm64 pmap: do not panic on inability to insert ptp into trie.
Jul 9 2025, 7:54 AM
alc requested review of D51220: arm64 pmap: do not panic on inability to insert ptp into trie.
Jul 9 2025, 7:38 AM

Jul 7 2025

alc closed D51180: amd64 pmap: convert some panics to KASSERTs.
Jul 7 2025, 12:07 AM
alc committed rG6a7761b4d27c: amd64 pmap: convert panics to KASSERTs (authored by alc).
amd64 pmap: convert panics to KASSERTs
Jul 7 2025, 12:07 AM

Jul 6 2025

alc added a comment to D51180: amd64 pmap: convert some panics to KASSERTs.
In D51180#1168328, @kib wrote:

Should the pmap_demote_pde() in pmap_unwire() get the same treatment? As I understand, wire should saved the pt page in radix.

Jul 6 2025, 8:16 PM
alc accepted D51179: vm_fault: drop never-true busy_sleep test.
Jul 6 2025, 8:09 PM
alc added a comment to D51179: vm_fault: drop never-true busy_sleep test.
In D51179#1168325, @alc wrote:

This lookup originated here:

commit 87b646630c4892e21446cd096bea6bcaecea33ac
Author: Mark Johnston <markj@FreeBSD.org>
Date:   Mon Nov 15 11:35:44 2021 -0500

    vm_page: Consolidate page busy sleep mechanisms
    
    - 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
    MFC after:      2 weeks
    Differential Revision:  https://reviews.freebsd.org/D32947
Jul 6 2025, 6:20 PM
alc added a comment to D51179: vm_fault: drop never-true busy_sleep test.

This lookup originated here:

commit 87b646630c4892e21446cd096bea6bcaecea33ac
Author: Mark Johnston <markj@FreeBSD.org>
Date:   Mon Nov 15 11:35:44 2021 -0500
Jul 6 2025, 6:01 PM
alc requested review of D51180: amd64 pmap: convert some panics to KASSERTs.
Jul 6 2025, 5:53 PM
alc committed rG88c8cba04395: amd64 pmap: preallocate another page table page in pmap_demote_DMAP() (authored by alc).
amd64 pmap: preallocate another page table page in pmap_demote_DMAP()
Jul 6 2025, 5:09 PM
alc closed D51091: amd64 pmap: demotion changes for kib@.
Jul 6 2025, 5:09 PM