:I have also looked into this a while ago, but got stuck at some
:point. I have just looked at it again, and I think I have found a solution.
:
:...
:
:This is probably because the map entries do have a NULL object
:pointer. vm_map_pageable() calls vm_fault_wire(), so this will fail.
:
:I have attached a patch which works for me. It duplicates most of the
:logic of kmem_alloc in that it calls vm_map_findspace() first, then
:vm_map_insert() (which basically is what is done in
:kmem_alloc_pageable() too, but here, kernel_object is passed instead
:of a NULL pointer, so that the map entry will have a valid object
:pointer). Then, the pages are inserted into the object as before, and
:finally, the map entries are marked as wired by using
:vm_map_pageable(). Because this will also call vm_fault_wire(), which
:will among other things do a vm_page_wire(), contigmalloc does not
:need to wire the pages itself. 
:
:The pmap_kenter() calls can also be reomved, since the pages will be
:mapped in any case by vm_fault(). 
:
:       - thomas

    Ach, of course.  I see what's happening now!  Thomas, your patch looks
    good!  I'm going to patch it in and test it a bit.

                                                -Matt


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to