summaryrefslogtreecommitdiff
path: root/usr/src/uts/sun4u/starfire/io/idn_smr.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/sun4u/starfire/io/idn_smr.c')
-rw-r--r--usr/src/uts/sun4u/starfire/io/idn_smr.c223
1 files changed, 103 insertions, 120 deletions
diff --git a/usr/src/uts/sun4u/starfire/io/idn_smr.c b/usr/src/uts/sun4u/starfire/io/idn_smr.c
index 8a54e3c7be..aaad23616c 100644
--- a/usr/src/uts/sun4u/starfire/io/idn_smr.c
+++ b/usr/src/uts/sun4u/starfire/io/idn_smr.c
@@ -2,9 +2,8 @@
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
@@ -20,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*
* Inter-Domain Network
@@ -28,8 +27,6 @@
* Shared Memory Region (SMR) supporting code.
*/
-#pragma ident "%Z%%M% %I% %E% SMI"
-
#include <sys/types.h>
#include <sys/param.h>
#include <sys/machparam.h>
@@ -240,7 +237,7 @@ smr_slab_alloc_remote(int domid, smr_slab_t **spp)
* First do a quick (no lock) check for global okayness.
*/
if ((idn.state != IDNGS_ONLINE) ||
- ((masterid = IDN_GET_MASTERID()) == IDN_NIL_DOMID)) {
+ ((masterid = IDN_GET_MASTERID()) == IDN_NIL_DOMID)) {
bailout = 1;
serrno = ECANCELED;
}
@@ -301,10 +298,10 @@ smr_slab_alloc_remote(int domid, smr_slab_t **spp)
* will be picked up when we attempt to wait.
*/
PR_SMR("%s: BAILING OUT on behalf domain %d "
- "(err=%d, gs=%s, ms=%s)\n",
- proc, domid, serrno, idngs_str[idn.state],
- (masterid == IDN_NIL_DOMID)
- ? "unknown" : idnds_str[idn_domain[masterid].dstate]);
+ "(err=%d, gs=%s, ms=%s)\n",
+ proc, domid, serrno, idngs_str[idn.state],
+ (masterid == IDN_NIL_DOMID)
+ ? "unknown" : idnds_str[idn_domain[masterid].dstate]);
(void) smr_slabwaiter_abort(domid, serrno);
} else if (nwait == 1) {
@@ -312,8 +309,7 @@ smr_slab_alloc_remote(int domid, smr_slab_t **spp)
* We are the original requester. Initiate the
* actual request to the master.
*/
- idn_send_cmd(masterid, IDNCMD_SLABALLOC,
- IDN_SLAB_SIZE, 0, 0);
+ idn_send_cmd(masterid, IDNCMD_SLABALLOC, IDN_SLAB_SIZE, 0, 0);
ASSERT(mdp);
IDN_DUNLOCK(masterid);
}
@@ -359,7 +355,7 @@ smr_slab_alloc(int domid, smr_slab_t **spp)
switch (dp->dslab_state) {
case DSLAB_STATE_UNKNOWN:
cmn_err(CE_WARN,
- "IDN: 300: no slab allocations without a master");
+ "IDN: 300: no slab allocations without a master");
serrno = EINVAL;
break;
@@ -371,7 +367,7 @@ smr_slab_alloc(int domid, smr_slab_t **spp)
* not been exceeded.
*/
if (((int)dp->dnslabs < IDN_SLAB_MAXPERDOMAIN) ||
- !IDN_SLAB_MAXPERDOMAIN)
+ !IDN_SLAB_MAXPERDOMAIN)
serrno = smr_slab_alloc_local(domid, spp);
else
serrno = EDQUOT;
@@ -391,7 +387,7 @@ smr_slab_alloc(int domid, smr_slab_t **spp)
* itself however it wishes.
*/
if (((int)dp->dnslabs < IDN_SLAB_MAXPERDOMAIN) ||
- !IDN_SLAB_MAXPERDOMAIN)
+ !IDN_SLAB_MAXPERDOMAIN)
serrno = smr_slab_alloc_remote(domid, spp);
else
serrno = EDQUOT;
@@ -399,16 +395,16 @@ smr_slab_alloc(int domid, smr_slab_t **spp)
default:
cmn_err(CE_WARN,
- "IDN: 301: (ALLOC) unknown slab state (%d) "
- "for domain %d", dp->dslab_state, domid);
+ "IDN: 301: (ALLOC) unknown slab state (%d) "
+ "for domain %d", dp->dslab_state, domid);
serrno = EINVAL;
break;
}
if (*spp == NULL) {
PR_SMR("%s: failed to allocate %s slab [serrno = %d]\n",
- proc, (idn.localid == IDN_GET_MASTERID()) ?
- "local" : "remote", serrno);
+ proc, (idn.localid == IDN_GET_MASTERID()) ?
+ "local" : "remote", serrno);
}
if (serrno) {
@@ -475,8 +471,8 @@ smr_slab_free_remote(int domid, smr_slab_t *sp)
FREESTRUCT(sp, smr_slab_t, 1);
IDN_DLOCK_SHARED(masterid);
- idn_send_cmd(masterid, IDNCMD_SLABFREE,
- slab_offset, slab_size, 0);
+ idn_send_cmd(masterid, IDNCMD_SLABFREE, slab_offset, slab_size,
+ 0);
IDN_DUNLOCK(masterid);
}
}
@@ -498,8 +494,7 @@ smr_slab_free(int domid, smr_slab_t *sp)
switch (idn_domain[domid].dslab_state) {
case DSLAB_STATE_UNKNOWN:
- cmn_err(CE_WARN,
- "IDN: 302: no slab free without a master");
+ cmn_err(CE_WARN, "IDN: 302: no slab free without a master");
break;
case DSLAB_STATE_LOCAL:
@@ -526,9 +521,8 @@ smr_slab_free(int domid, smr_slab_t *sp)
default:
cmn_err(CE_WARN,
- "IDN: 301: (FREE) unknown slab state "
- "(%d) for domain %d",
- idn_domain[domid].dslab_state, domid);
+ "IDN: 301: (FREE) unknown slab state (%d) for domain %d",
+ idn_domain[domid].dslab_state, domid);
break;
}
}
@@ -603,8 +597,8 @@ smr_buf_alloc(int domid, uint_t len, caddr_t *bufpp)
if (len > IDN_DATA_SIZE) {
cmn_err(CE_WARN,
- "IDN: 303: buffer len %d > IDN_DATA_SIZE (%lu)",
- len, IDN_DATA_SIZE);
+ "IDN: 303: buffer len %d > IDN_DATA_SIZE (%lu)",
+ len, IDN_DATA_SIZE);
IDN_GKSTAT_GLOBAL_EVENT(gk_buffail, gk_buffail_last);
return (EINVAL);
}
@@ -628,11 +622,11 @@ smr_buf_alloc(int domid, uint_t len, caddr_t *bufpp)
if (sp == NULL) {
if ((serrno = smr_slab_alloc(idn.localid, &sp)) != 0) {
PR_SMR("%s:%d: failed to allocate "
- "slab [serrno = %d]",
- proc, domid, serrno);
+ "slab [serrno = %d]",
+ proc, domid, serrno);
DSLAB_UNLOCK(idn.localid);
IDN_GKSTAT_GLOBAL_EVENT(gk_buffail,
- gk_buffail_last);
+ gk_buffail_last);
return (serrno);
}
/*
@@ -642,11 +636,11 @@ smr_buf_alloc(int domid, uint_t len, caddr_t *bufpp)
*/
if (dp->dstate != IDNDS_CONNECTED) {
PR_SMR("%s:%d: state changed during slab "
- "alloc (dstate = %s)\n",
- proc, domid, idnds_str[dp->dstate]);
+ "alloc (dstate = %s)\n",
+ proc, domid, idnds_str[dp->dstate]);
DSLAB_UNLOCK(idn.localid);
IDN_GKSTAT_GLOBAL_EVENT(gk_buffail,
- gk_buffail_last);
+ gk_buffail_last);
return (ENOLINK);
}
/*
@@ -740,15 +734,15 @@ smr_buf_free(int domid, caddr_t bufp, uint_t len)
if (((uintptr_t)bufp & (IDN_SMR_BUFSIZE-1)) &&
(IDN_ADDR2OFFSET(bufp) % IDN_SMR_BUFSIZE)) {
cmn_err(CE_WARN,
- "IDN: 304: buffer (0x%p) from domain %d not on a "
- "%d boundary", bufp, domid, IDN_SMR_BUFSIZE);
+ "IDN: 304: buffer (0x%p) from domain %d not on a "
+ "%d boundary", bufp, domid, IDN_SMR_BUFSIZE);
goto bfdone;
}
if (!lockheld && (len > IDN_DATA_SIZE)) {
cmn_err(CE_WARN,
- "IDN: 305: buffer length (%d) from domain %d greater "
- "than IDN_DATA_SIZE (%lu)",
- len, domid, IDN_DATA_SIZE);
+ "IDN: 305: buffer length (%d) from domain %d greater "
+ "than IDN_DATA_SIZE (%lu)",
+ len, domid, IDN_DATA_SIZE);
goto bfdone;
}
@@ -785,8 +779,8 @@ bfdone:
DIOCHECK(domid);
} else {
cmn_err(CE_WARN,
- "IDN: 306: unknown buffer (0x%p) from domain %d",
- bufp, domid);
+ "IDN: 306: unknown buffer (0x%p) from domain %d",
+ bufp, domid);
ATOMIC_INC(idn_domain[domid].dioerr);
}
@@ -828,8 +822,7 @@ smr_buf_free_all(int domid)
ASSERT(domid != idn.localid);
if (!VALID_DOMAINID(domid)) {
- cmn_err(CE_WARN,
- "IDN: 307: domain ID (%d) invalid", domid);
+ cmn_err(CE_WARN, "IDN: 307: domain ID (%d) invalid", domid);
return (-1);
}
@@ -866,8 +859,7 @@ smr_buf_free_all(int domid)
DSLAB_UNLOCK(idn.localid);
- PR_SMR("%s: freed %d buffers for domain %d\n",
- proc, nbufsfreed, domid);
+ PR_SMR("%s: freed %d buffers for domain %d\n", proc, nbufsfreed, domid);
return (nbufsfreed);
}
@@ -893,8 +885,7 @@ smr_buf_reclaim(int domid, int nbufs)
return (0);
}
- PR_SMR("%s: requested %d buffers from domain %d\n",
- proc, nbufs, domid);
+ PR_SMR("%s: requested %d buffers from domain %d\n", proc, nbufs, domid);
if (dp->dio && nbufs) {
register smr_slab_t *sp;
@@ -945,7 +936,7 @@ smr_buf_reclaim(int domid, int nbufs)
}
PR_SMR("%s: reclaimed %d buffers from domain %d\n",
- proc, num_reclaimed, domid);
+ proc, num_reclaimed, domid);
return (num_reclaimed);
}
@@ -1107,8 +1098,7 @@ smr_slabwaiter_register(int domid)
nwait = ++(wp->w_nwaiters);
ASSERT(nwait > 0);
- PR_SMR("%s: domain = %d, (new)nwaiters = %d\n",
- proc, domid, nwait);
+ PR_SMR("%s: domain = %d, (new)nwaiters = %d\n", proc, domid, nwait);
if (nwait > 1) {
/*
@@ -1116,7 +1106,7 @@ smr_slabwaiter_register(int domid)
* with respect to this domain.
*/
PR_SMR("%s: existing waiters for slabs for domain %d\n",
- proc, domid);
+ proc, domid);
mutex_exit(&wp->w_mutex);
return (nwait);
@@ -1161,8 +1151,7 @@ smr_slabwaiter_unregister(int domid, smr_slab_t **spp)
mutex_enter(&wp->w_mutex);
- PR_SMR("%s: domain = %d, nwaiters = %d\n",
- proc, domid, wp->w_nwaiters);
+ PR_SMR("%s: domain = %d, nwaiters = %d\n", proc, domid, wp->w_nwaiters);
if (wp->w_nwaiters <= 0) {
/*
@@ -1185,7 +1174,7 @@ smr_slabwaiter_unregister(int domid, smr_slab_t **spp)
* Thus, late sleepers may still get a chance.
*/
PR_SMR("%s: bummer no slab allocated for domain %d\n",
- proc, domid);
+ proc, domid);
ASSERT(wp->w_sp == NULL);
(*spp) = NULL;
serrno = wp->w_closed ? ECANCELED : EBUSY;
@@ -1200,7 +1189,7 @@ smr_slabwaiter_unregister(int domid, smr_slab_t **spp)
ASSERT(wp->w_sp);
PR_SMR("%s: allocation succeeded (domain %d)\n",
- proc, domid);
+ proc, domid);
DSLAB_LOCK_SHARED(domid);
for (sp = idn_domain[domid].dslab; sp; sp = sp->sl_next)
@@ -1208,12 +1197,12 @@ smr_slabwaiter_unregister(int domid, smr_slab_t **spp)
break;
if (sp == NULL)
cmn_err(CE_WARN,
- "%s:%d: slab ptr = NULL",
- proc, domid);
+ "%s:%d: slab ptr = NULL",
+ proc, domid);
DSLAB_UNLOCK(domid);
} else {
PR_SMR("%s: allocation failed (domain %d) "
- "[serrno = %d]\n", proc, domid, serrno);
+ "[serrno = %d]\n", proc, domid, serrno);
}
#endif /* DEBUG */
}
@@ -1222,7 +1211,7 @@ smr_slabwaiter_unregister(int domid, smr_slab_t **spp)
* Last one turns out the lights.
*/
PR_SMR("%s: domain %d last waiter, turning out lights\n",
- proc, domid);
+ proc, domid);
wp->w_sp = NULL;
wp->w_done = 0;
wp->w_serrno = 0;
@@ -1269,14 +1258,13 @@ smr_slaballoc_wait(int domid, smr_slab_t **spp)
mutex_enter(&wp->w_mutex);
PR_SMR("%s: domain = %d, nwaiters = %d, wsp = 0x%p\n",
- proc, domid, wp->w_nwaiters, wp->w_sp);
+ proc, domid, wp->w_nwaiters, wp->w_sp);
if (wp->w_nwaiters <= 0) {
/*
* Hmmm...no waiters registered.
*/
- PR_SMR("%s: domain %d, no waiters!\n",
- proc, domid);
+ PR_SMR("%s: domain %d, no waiters!\n", proc, domid);
mutex_exit(&wp->w_mutex);
return (EINVAL);
}
@@ -1289,17 +1277,15 @@ smr_slaballoc_wait(int domid, smr_slab_t **spp)
/*
* Only wait if data hasn't arrived yet.
*/
- PR_SMR("%s: domain %d, going to sleep...\n",
- proc, domid);
-
+ PR_SMR("%s: domain %d, going to sleep...\n", proc, domid);
- rv = cv_timedwait_sig(&wp->w_cv, &wp->w_mutex,
- lbolt + IDN_SLABALLOC_WAITTIME);
+ rv = cv_reltimedwait_sig(&wp->w_cv, &wp->w_mutex,
+ IDN_SLABALLOC_WAITTIME, TR_CLOCK_TICK);
if (rv == -1)
serrno = ETIMEDOUT;
PR_SMR("%s: domain %d, awakened (reason = %s)\n",
- proc, domid, (rv == -1) ? "TIMEOUT" : "SIGNALED");
+ proc, domid, (rv == -1) ? "TIMEOUT" : "SIGNALED");
}
/*
* We've awakened or request already filled!
@@ -1362,9 +1348,9 @@ smr_slaballoc_put(int domid, smr_slab_t *sp, int forceflag, int serrno)
mutex_enter(&wp->w_mutex);
PR_SMR("%s: domain = %d, bufp = 0x%p, ebufp = 0x%p, "
- "(f = %d, se = %d)\n", proc, domid,
- (sp ? sp->sl_start : 0),
- (sp ? sp->sl_end : 0), forceflag, serrno);
+ "(f = %d, se = %d)\n", proc, domid,
+ (sp ? sp->sl_start : 0),
+ (sp ? sp->sl_end : 0), forceflag, serrno);
if (wp->w_nwaiters <= 0) {
/*
@@ -1372,7 +1358,7 @@ smr_slaballoc_put(int domid, smr_slab_t *sp, int forceflag, int serrno)
* and left. Oh well...
*/
PR_SMR("%s: no slaballoc waiters found for domain %d\n",
- proc, domid);
+ proc, domid);
if (!forceflag || serrno || !sp) {
/*
* No waiters and caller doesn't want to force it.
@@ -1400,7 +1386,7 @@ smr_slaballoc_put(int domid, smr_slab_t *sp, int forceflag, int serrno)
* trying to let everybody know.
*/
ASSERT(wp->w_serrno ?
- (wp->w_sp == NULL) : (wp->w_sp != NULL));
+ (wp->w_sp == NULL) : (wp->w_sp != NULL));
cv_broadcast(&wp->w_cv);
mutex_exit(&wp->w_mutex);
@@ -1412,8 +1398,7 @@ smr_slaballoc_put(int domid, smr_slab_t *sp, int forceflag, int serrno)
* Bummer...allocation failed. This call is simply
* to wake up the sleepers and let them know.
*/
- PR_SMR("%s: slaballoc failed for domain %d\n",
- proc, domid);
+ PR_SMR("%s: slaballoc failed for domain %d\n", proc, domid);
wp->w_serrno = serrno;
wp->w_done = 1;
cv_broadcast(&wp->w_cv);
@@ -1422,7 +1407,7 @@ smr_slaballoc_put(int domid, smr_slab_t *sp, int forceflag, int serrno)
return (0);
}
PR_SMR("%s: putting slab into struct (domid=%d, localid=%d)\n",
- proc, domid, idn.localid);
+ proc, domid, idn.localid);
/*
* Prep the slab structure.
*/
@@ -1506,15 +1491,14 @@ smr_slaballoc_get(int domid, caddr_t bufp, caddr_t ebufp)
procname_t proc = "smr_slaballoc_get";
PR_SMR("%s: getting slab for domain %d [bufp=0x%p, ebufp=0x%p]\n",
- proc, domid, bufp, ebufp);
+ proc, domid, bufp, ebufp);
dp = &idn_domain[domid];
ASSERT(DSLAB_WRITE_HELD(domid));
if ((sp = dp->dslab) == NULL) {
- PR_SMR("%s: oops, no slabs for domain %d\n",
- proc, domid);
+ PR_SMR("%s: oops, no slabs for domain %d\n", proc, domid);
return (NULL);
}
/*
@@ -1532,7 +1516,7 @@ smr_slaballoc_get(int domid, caddr_t bufp, caddr_t ebufp)
nslabs = *(int *)ebufp;
if (nslabs == 0) {
PR_SMR("%s: requested nslabs (%d) <= 0\n",
- proc, nslabs);
+ proc, nslabs);
return (NULL);
} else if (nslabs < 0) {
/*
@@ -1554,8 +1538,8 @@ smr_slaballoc_get(int domid, caddr_t bufp, caddr_t ebufp)
if (bufp && (ebufp > sp->sl_end)) {
PR_SMR("%s: bufp/ebufp (0x%p/0x%p) "
- "expected (0x%p/0x%p)\n", proc, bufp, ebufp,
- sp->sl_start, sp->sl_end);
+ "expected (0x%p/0x%p)\n", proc, bufp, ebufp,
+ sp->sl_start, sp->sl_end);
ASSERT(0);
}
/*
@@ -1611,11 +1595,10 @@ smr_slaballoc_get(int domid, caddr_t bufp, caddr_t ebufp)
dp->dnslabs -= (short)foundit;
if (foundit) {
- PR_SMR("%s: found %d free slabs (domid = %d)\n",
- proc, foundit, domid);
+ PR_SMR("%s: found %d free slabs (domid = %d)\n", proc, foundit,
+ domid);
} else {
- PR_SMR("%s: no free slabs found (domid = %d)\n",
- proc, domid);
+ PR_SMR("%s: no free slabs found (domid = %d)\n", proc, domid);
}
/*
@@ -1678,7 +1661,7 @@ smr_slabpool_init(size_t reserved_size, caddr_t *reserved_area)
idn.slabpool->ntotslabs = ntotslabs = nwr_available / IDN_SLAB_SIZE;
ASSERT(ntotslabs > 0);
minperpool = (ntotslabs < IDN_SLAB_MINPERPOOL) ?
- 1 : IDN_SLAB_MINPERPOOL;
+ 1 : IDN_SLAB_MINPERPOOL;
idn.slabpool->npools = (ntotslabs + (minperpool - 1)) / minperpool;
if ((idn.slabpool->npools & 1) == 0) {
@@ -1689,7 +1672,7 @@ smr_slabpool_init(size_t reserved_size, caddr_t *reserved_area)
}
ASSERT(idn.slabpool->npools > 0);
minperpool = (ntotslabs < idn.slabpool->npools) ?
- 1 : (ntotslabs / idn.slabpool->npools);
+ 1 : (ntotslabs / idn.slabpool->npools);
/*
* Calculate the number of extra slabs that will need to
@@ -1704,7 +1687,7 @@ smr_slabpool_init(size_t reserved_size, caddr_t *reserved_area)
ASSERT((nxslabs >= 0) && (nxslabs < idn.slabpool->npools));
idn.slabpool->pool = GETSTRUCT(struct smr_slabtbl,
- idn.slabpool->npools);
+ idn.slabpool->npools);
sp = GETSTRUCT(smr_slab_t, idn.slabpool->ntotslabs);
idn.slabpool->savep = sp;
@@ -1737,9 +1720,8 @@ smr_slabpool_init(size_t reserved_size, caddr_t *reserved_area)
/*
* We should be at the end of the SMR at this point.
*/
- ASSERT(bufp == (idn.smr.vaddr
- + reserved_size
- + (idn.slabpool->ntotslabs * IDN_SLAB_SIZE)));
+ ASSERT(bufp == (idn.smr.vaddr + reserved_size
+ + (idn.slabpool->ntotslabs * IDN_SLAB_SIZE)));
if (reserved_size != 0)
*reserved_area = idn.smr.vaddr;
@@ -1755,7 +1737,7 @@ smr_slabpool_deinit()
FREESTRUCT(idn.slabpool->savep, smr_slab_t, idn.slabpool->ntotslabs);
FREESTRUCT(idn.slabpool->pool, struct smr_slabtbl,
- idn.slabpool->npools);
+ idn.slabpool->npools);
FREESTRUCT(idn.slabpool, struct slabpool, 1);
idn.slabpool = NULL;
@@ -1849,8 +1831,8 @@ smr_slab_reserve(int domid)
if (foundone) {
ASSERT((&spa[s] >= idn.slabpool->savep) &&
- (&spa[s] < (idn.slabpool->savep +
- idn.slabpool->ntotslabs)));
+ (&spa[s] < (idn.slabpool->savep +
+ idn.slabpool->ntotslabs)));
spa[s].sl_domid = (short)domid;
@@ -1876,7 +1858,7 @@ smr_slab_reserve(int domid)
smr_alloc_buflist(nsp);
spa = nsp;
PR_SMR("%s: allocated full slab struct for domain %d\n",
- proc, domid);
+ proc, domid);
} else {
/*
* Slab structure gets returned locked.
@@ -1885,11 +1867,11 @@ smr_slab_reserve(int domid)
}
PR_SMR("%s: allocated slab 0x%p (start=0x%p, size=%lu) for "
- "domain %d\n", proc, spa, spa->sl_start,
- spa->sl_end - spa->sl_start, domid);
+ "domain %d\n", proc, spa, spa->sl_start,
+ spa->sl_end - spa->sl_start, domid);
} else {
PR_SMR("%s: FAILED to allocate for domain %d\n",
- proc, domid);
+ proc, domid);
spa = NULL;
}
@@ -1931,8 +1913,8 @@ smr_slab_unreserve(int domid, smr_slab_t *sp)
}
if (foundit) {
ASSERT((&spa[s] >= idn.slabpool->savep) &&
- (&spa[s] < (idn.slabpool->savep +
- idn.slabpool->ntotslabs)));
+ (&spa[s] < (idn.slabpool->savep +
+ idn.slabpool->ntotslabs)));
ASSERT(!lock_try(&spa[s].sl_lock));
ASSERT(spa[s].sl_domid == (short)domid);
@@ -1943,7 +1925,7 @@ smr_slab_unreserve(int domid, smr_slab_t *sp)
ATOMIC_INC(idn.slabpool->pool[p].nfree);
PR_SMR("%s: freed (bufp=0x%p) for domain %d\n",
- proc, bufp, domid);
+ proc, bufp, domid);
if (domid == idn.localid) {
/*
@@ -1967,7 +1949,7 @@ smr_slab_unreserve(int domid, smr_slab_t *sp)
* Couldn't find slab entry for given buf!
*/
PR_SMR("%s: FAILED to free (bufp=0x%p) for domain %d\n",
- proc, bufp, domid);
+ proc, bufp, domid);
}
}
@@ -2009,23 +1991,25 @@ smr_slab_reap_global()
register struct smr_slabtbl *tblp;
static clock_t reap_last = 0;
procname_t proc = "smr_slab_reap_global";
+ clock_t now;
ASSERT(IDN_GET_MASTERID() != IDN_NIL_DOMID);
DSLAB_LOCK_SHARED(idn.localid);
if (idn_domain[idn.localid].dslab_state != DSLAB_STATE_LOCAL) {
PR_SMR("%s: only allowed by master (%d)\n",
- proc, IDN_GET_MASTERID());
+ proc, IDN_GET_MASTERID());
DSLAB_UNLOCK(idn.localid);
return;
}
DSLAB_UNLOCK(idn.localid);
- if ((lbolt > 0) && (lbolt > reap_last) &&
- ((lbolt - reap_last) < IDN_REAP_INTERVAL))
+ now = ddi_get_lbolt();
+ if ((now > 0) && (now > reap_last) &&
+ ((now - reap_last) < IDN_REAP_INTERVAL))
return;
- reap_last = lbolt;
+ reap_last = now;
ASSERT(idn.slabpool);
@@ -2039,12 +2023,12 @@ smr_slab_reap_global()
int diff, reap_per_domain;
PR_SMR("%s: kicking off reaping "
- "(total_free = %d, min = %d)\n",
- proc, total_free, IDN_SLAB_THRESHOLD);
+ "(total_free = %d, min = %d)\n",
+ proc, total_free, IDN_SLAB_THRESHOLD);
diff = IDN_SLAB_THRESHOLD - total_free;
- reap_per_domain = (diff < idn.ndomains)
- ? 1 : (diff / idn.ndomains);
+ reap_per_domain = (diff < idn.ndomains) ?
+ 1 : (diff / idn.ndomains);
idn_broadcast_cmd(IDNCMD_SLABREAP, reap_per_domain, 0, 0);
}
@@ -2065,7 +2049,7 @@ smr_slab_reap(int domid, int *nslabs)
*/
if (domid != idn.localid) {
PR_SMR("%s: called by domain %d, should only be local (%d)\n",
- proc, domid, idn.localid);
+ proc, domid, idn.localid);
ASSERT(0);
return;
}
@@ -2119,7 +2103,7 @@ smr_slab_reap(int domid, int *nslabs)
IDN_DUNLOCK(idn.localid);
}
if ((dp->dstate == IDNDS_CONNECTED) &&
- ((nr = idn_reclaim_mboxdata(d, 0, -1)) > 0))
+ ((nr = idn_reclaim_mboxdata(d, 0, -1)) > 0))
nreclaimed += nr;
IDN_DUNLOCK(d);
@@ -2151,7 +2135,7 @@ smr_remap(struct as *as, register caddr_t vaddr,
if (va_to_pfn(vaddr) == new_pfn) {
PR_REMAP("%s: vaddr (0x%p) already mapped to pfn (0x%lx)\n",
- proc, vaddr, new_pfn);
+ proc, vaddr, new_pfn);
return;
}
@@ -2160,7 +2144,7 @@ smr_remap(struct as *as, register caddr_t vaddr,
ASSERT(npgs != 0);
PR_REMAP("%s: va = 0x%p, pfn = 0x%lx, npgs = %ld, mb = %d MB (%ld)\n",
- proc, vaddr, new_pfn, npgs, mblen, blen);
+ proc, vaddr, new_pfn, npgs, mblen, blen);
/*
* Unmap the SMR virtual address from it's current
@@ -2178,9 +2162,8 @@ smr_remap(struct as *as, register caddr_t vaddr,
* i.e. space since it may beyond his physmax.
*/
for (p = 0; p < npgs; p++) {
- sfmmu_memtte(&tte, new_pfn,
- PROT_READ | PROT_WRITE | HAT_NOSYNC,
- TTE8K);
+ sfmmu_memtte(&tte, new_pfn, PROT_READ | PROT_WRITE | HAT_NOSYNC,
+ TTE8K);
sfmmu_tteload(as->a_hat, &tte, vaddr, NULL, HAT_LOAD_LOCK);
vaddr += MMU_PAGESIZE;
@@ -2188,5 +2171,5 @@ smr_remap(struct as *as, register caddr_t vaddr,
}
PR_REMAP("%s: remapped %ld pages (expected %ld)\n",
- proc, npgs, btopr(MB2B(mblen)));
+ proc, npgs, btopr(MB2B(mblen)));
}