git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net/bnxt: fix LRO configuration
[dpdk.git]
/
kernel
/
freebsd
/
contigmem
/
contigmem.c
diff --git
a/kernel/freebsd/contigmem/contigmem.c
b/kernel/freebsd/contigmem/contigmem.c
index
1715b5d
..
bd72f4d
100644
(file)
--- a/
kernel/freebsd/contigmem/contigmem.c
+++ b/
kernel/freebsd/contigmem/contigmem.c
@@
-13,10
+13,13
@@
__FBSDID("$FreeBSD$");
#include <sys/malloc.h>
#include <sys/module.h>
#include <sys/proc.h>
#include <sys/malloc.h>
#include <sys/module.h>
#include <sys/proc.h>
+#include <sys/lock.h>
#include <sys/rwlock.h>
#include <sys/rwlock.h>
+#include <sys/mutex.h>
#include <sys/systm.h>
#include <sys/sysctl.h>
#include <sys/vmmeter.h>
#include <sys/systm.h>
#include <sys/sysctl.h>
#include <sys/vmmeter.h>
+#include <sys/eventhandler.h>
#include <machine/bus.h>
#include <machine/bus.h>
@@
-162,9
+165,11
@@
contigmem_load()
error:
for (i = 0; i < contigmem_num_buffers; i++) {
error:
for (i = 0; i < contigmem_num_buffers; i++) {
- if (contigmem_buffers[i].addr != NULL)
+ if (contigmem_buffers[i].addr != NULL)
{
contigfree(contigmem_buffers[i].addr,
contigmem_buffer_size, M_CONTIGMEM);
contigfree(contigmem_buffers[i].addr,
contigmem_buffer_size, M_CONTIGMEM);
+ contigmem_buffers[i].addr = NULL;
+ }
if (mtx_initialized(&contigmem_buffers[i].mtx))
mtx_destroy(&contigmem_buffers[i].mtx);
}
if (mtx_initialized(&contigmem_buffers[i].mtx))
mtx_destroy(&contigmem_buffers[i].mtx);
}
@@
-294,19
+299,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_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);
/*
* 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);
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;
}
*mres = page;
}