contigmalloc for low address in SI_SUB_KMEM

Matthew Dillon dillon at apollo.backplane.com
Tue Sep 16 12:37:57 PDT 2003


:But if this is the case, removing
:    options         NO_KMEM_MAP
:    options         USE_SLAB_ALLOCATOR
:fixes the contigmalloc(), no? When I first noticed the error message,
:I didn't have these in my kernel config file.
:
:>     The solution is to try to figure out why that is occuring.
:
:Absolutely :)
:...
:I'm going to dig into FreeBSD-STABLE code and how it behaves differently
:from ours.

    This should all be fixed now in vm/vm_page.c 1.10.  Make sure you have
    cleared any priority patches I posted and update your tree.

    In FreeBSD we made a number of commits that had issues with
    VM_ALLOC_ZERO verses not.  In the last commit I made to DragonFly
    I adjusted the code so both VM_ALLOC_ZERO and non-VM_ALLOC_ZERO 
    allocations should obtain high addresses first.  The new vm_add_new_page()
    and related code adds memory to the free lists from low-to-high
    physical addresses, to both ends of the list, building the free page list
    outwards from the center so higher addresses should be at both ends.

    If it still isn't working properly for you then perhaps the phys_avail[]
    array is not in ascending order.  To find out you can add a debugging
    printf() to the for() loop in vm_page_startup().

					-Matt
					Matthew Dillon 
					<dillon at xxxxxxxxxxxxx>







More information about the Bugs mailing list