The branch stable/13 has been updated by dougm:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=dd8ea1c755b3cc2c9c4eaa8611a97ac8f0f9b755

commit dd8ea1c755b3cc2c9c4eaa8611a97ac8f0f9b755
Author:     Doug Moore <do...@freebsd.org>
AuthorDate: 2021-12-26 17:40:27 +0000
Commit:     Doug Moore <do...@freebsd.org>
CommitDate: 2021-12-29 17:23:48 +0000

    vm_reserv: fix zero-boundary error
    
    Handle specially the boundary==0 case of vm_reserv_reclaim_config,
    by turning off boundary adjustment in that case.
    
    Reviewed by:    alc
    Tested by:      pho, madpilot
    
    (cherry picked from commit 49fd2d51f07fb29af3fd239f83f249c00cd84123)
---
 sys/vm/vm_reserv.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/sys/vm/vm_reserv.c b/sys/vm/vm_reserv.c
index d578d67dbe59..f3344f8a9cd2 100644
--- a/sys/vm/vm_reserv.c
+++ b/sys/vm/vm_reserv.c
@@ -1332,7 +1332,7 @@ vm_reserv_reclaim_contig(int domain, u_long npages, 
vm_paddr_t low,
         * doesn't include a boundary-multiple within it.  Otherwise,
         * no boundary-constrained allocation is possible.
         */
-       if (size > boundary)
+       if (size > boundary && boundary > 0)
                return (false);
        marker = &vm_rvd[domain].marker;
        queue = &vm_rvd[domain].partpop;
@@ -1343,7 +1343,8 @@ vm_reserv_reclaim_contig(int domain, u_long npages, 
vm_paddr_t low,
         */
        ppn_align = (int)(ulmin(ulmax(PAGE_SIZE, alignment),
            VM_LEVEL_0_SIZE) >> PAGE_SHIFT);
-       ppn_bound = (int)(MIN(MAX(PAGE_SIZE, boundary),
+       ppn_bound = boundary == 0 ? VM_LEVEL_0_NPAGES :
+           (int)(MIN(MAX(PAGE_SIZE, boundary),
             VM_LEVEL_0_SIZE) >> PAGE_SHIFT);
 
        vm_reserv_domain_scan_lock(domain);

Reply via email to