contigmem: update for FreeBSD 13
FreeBSD 13 has changed the definition of vm_page_replace so we need to have slightly different code paths around this function depending on the BSD version. Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
This commit is contained in:
parent
9ed3385f71
commit
03bff90ccf
@ -297,19 +297,22 @@ contigmem_cdev_pager_fault(vm_object_t object, vm_ooffset_t offset, int prot,
|
||||
VM_OBJECT_WLOCK(object);
|
||||
vm_page_updatefake(page, paddr, memattr);
|
||||
} else {
|
||||
vm_page_t mret;
|
||||
/*
|
||||
* Replace the passed in reqpage page with our own fake page and
|
||||
* free up the original page.
|
||||
*/
|
||||
page = vm_page_getfake(paddr, memattr);
|
||||
VM_OBJECT_WLOCK(object);
|
||||
mret = vm_page_replace(page, object, (*mres)->pindex);
|
||||
#if __FreeBSD__ >= 13
|
||||
vm_page_replace(page, object, (*mres)->pindex, *mres);
|
||||
#else
|
||||
vm_page_t mret = vm_page_replace(page, object, (*mres)->pindex);
|
||||
KASSERT(mret == *mres,
|
||||
("invalid page replacement, old=%p, ret=%p", *mres, mret));
|
||||
vm_page_lock(mret);
|
||||
vm_page_free(mret);
|
||||
vm_page_unlock(mret);
|
||||
#endif
|
||||
*mres = page;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user