aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/cxgbe/tom
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2019-07-08 19:46:20 +0000
committerMark Johnston <markj@FreeBSD.org>2019-07-08 19:46:20 +0000
commiteeacb3b02ff5e7dd916c852c69cf2839c0d33627 (patch)
treee482e7f7b0ba782bac82424cbd9c7fb5b41fc9f6 /sys/dev/cxgbe/tom
parente64f3dee49fac728bc39e2e39e5fbe9e07e4efcb (diff)
Notes
Diffstat (limited to 'sys/dev/cxgbe/tom')
-rw-r--r--sys/dev/cxgbe/tom/t4_cpl_io.c2
-rw-r--r--sys/dev/cxgbe/tom/t4_ddp.c40
-rw-r--r--sys/dev/cxgbe/tom/t4_tom.h3
3 files changed, 10 insertions, 35 deletions
diff --git a/sys/dev/cxgbe/tom/t4_cpl_io.c b/sys/dev/cxgbe/tom/t4_cpl_io.c
index adb9e59744aa0..b3e5f5f962110 100644
--- a/sys/dev/cxgbe/tom/t4_cpl_io.c
+++ b/sys/dev/cxgbe/tom/t4_cpl_io.c
@@ -1944,7 +1944,7 @@ aiotx_free_pgs(struct mbuf *m)
for (int i = 0; i < ext_pgs->npgs; i++) {
pg = PHYS_TO_VM_PAGE(ext_pgs->pa[i]);
vm_page_change_lock(pg, &mtx);
- vm_page_unhold(pg);
+ vm_page_unwire(pg, PQ_ACTIVE);
}
if (mtx != NULL)
mtx_unlock(mtx);
diff --git a/sys/dev/cxgbe/tom/t4_ddp.c b/sys/dev/cxgbe/tom/t4_ddp.c
index f3707f00eb857..5f814bb80ecc2 100644
--- a/sys/dev/cxgbe/tom/t4_ddp.c
+++ b/sys/dev/cxgbe/tom/t4_ddp.c
@@ -112,15 +112,12 @@ free_pageset(struct tom_data *td, struct pageset *ps)
if (ps->prsv.prsv_nppods > 0)
t4_free_page_pods(&ps->prsv);
- if (ps->flags & PS_WIRED) {
- for (i = 0; i < ps->npages; i++) {
- p = ps->pages[i];
- vm_page_lock(p);
- vm_page_unwire(p, PQ_INACTIVE);
- vm_page_unlock(p);
- }
- } else
- vm_page_unhold_pages(ps->pages, ps->npages);
+ for (i = 0; i < ps->npages; i++) {
+ p = ps->pages[i];
+ vm_page_lock(p);
+ vm_page_unwire(p, PQ_INACTIVE);
+ vm_page_unlock(p);
+ }
mtx_lock(&ddp_orphan_pagesets_lock);
TAILQ_INSERT_TAIL(&ddp_orphan_pagesets, ps, link);
taskqueue_enqueue(taskqueue_thread, &ddp_orphan_task);
@@ -150,7 +147,7 @@ recycle_pageset(struct toepcb *toep, struct pageset *ps)
{
DDP_ASSERT_LOCKED(toep);
- if (!(toep->ddp.flags & DDP_DEAD) && ps->flags & PS_WIRED) {
+ if (!(toep->ddp.flags & DDP_DEAD)) {
KASSERT(toep->ddp.cached_count + toep->ddp.active_count <
nitems(toep->ddp.db), ("too many wired pagesets"));
TAILQ_INSERT_HEAD(&toep->ddp.cached_pagesets, ps, link);
@@ -1179,35 +1176,14 @@ t4_write_page_pods_for_buf(struct adapter *sc, struct sge_wrq *wrq, int tid,
return (0);
}
-static void
-wire_pageset(struct pageset *ps)
-{
- vm_page_t p;
- int i;
-
- KASSERT(!(ps->flags & PS_WIRED), ("pageset already wired"));
-
- for (i = 0; i < ps->npages; i++) {
- p = ps->pages[i];
- vm_page_lock(p);
- vm_page_wire(p);
- vm_page_unhold(p);
- vm_page_unlock(p);
- }
- ps->flags |= PS_WIRED;
-}
-
/*
- * Prepare a pageset for DDP. This wires the pageset and sets up page
- * pods.
+ * Prepare a pageset for DDP. This sets up page pods.
*/
static int
prep_pageset(struct adapter *sc, struct toepcb *toep, struct pageset *ps)
{
struct tom_data *td = sc->tom_softc;
- if (!(ps->flags & PS_WIRED))
- wire_pageset(ps);
if (ps->prsv.prsv_nppods == 0 &&
!t4_alloc_page_pods_for_ps(&td->pr, ps)) {
return (0);
diff --git a/sys/dev/cxgbe/tom/t4_tom.h b/sys/dev/cxgbe/tom/t4_tom.h
index 967f64cdaded1..e5556985b4fbb 100644
--- a/sys/dev/cxgbe/tom/t4_tom.h
+++ b/sys/dev/cxgbe/tom/t4_tom.h
@@ -124,8 +124,7 @@ struct pageset {
TAILQ_HEAD(pagesetq, pageset);
-#define PS_WIRED 0x0001 /* Pages wired rather than held. */
-#define PS_PPODS_WRITTEN 0x0002 /* Page pods written to the card. */
+#define PS_PPODS_WRITTEN 0x0001 /* Page pods written to the card. */
struct ddp_buffer {
struct pageset *ps;