[2/2] kernel/freebsd: update contigmem for FreeBSD 13

Message ID 20200103115243.59502-3-bruce.richardson@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series Fix build with FreeBSD 13-CURRENT |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/travis-robot success Travis build: passed
ci/Intel-compilation success Compilation OK

Commit Message

Bruce Richardson Jan. 3, 2020, 11:52 a.m. UTC
  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>
---
 kernel/freebsd/contigmem/contigmem.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
  

Patch

diff --git a/kernel/freebsd/contigmem/contigmem.c b/kernel/freebsd/contigmem/contigmem.c
index 64e0a7fec..7ea0bc617 100644
--- a/kernel/freebsd/contigmem/contigmem.c
+++ b/kernel/freebsd/contigmem/contigmem.c
@@ -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;
 	}