PERFORCE change 196502 for review
Matt Jacob
mjacob at FreeBSD.org
Thu Jul 21 14:18:36 UTC 2011
http://p4web.freebsd.org/@@196502?ac=10
Change 196502 by mjacob at mjacob-sandbox on 2011/07/21 14:17:50
Updates from Alacritech tree.
Affected files ...
.. //depot/projects/mjacob-dev/sys/dev/mpt2sas/mpt2cam.c#4 edit
.. //depot/projects/mjacob-dev/sys/dev/mpt2sas/mpt2sas.c#6 edit
.. //depot/projects/mjacob-dev/sys/dev/mpt2sas/mpt2sas.h#7 edit
Differences ...
==== //depot/projects/mjacob-dev/sys/dev/mpt2sas/mpt2cam.c#4 (text+ko) ====
@@ -435,7 +435,8 @@
return;
}
- if ((req = mpt2sas_get_request(mpt)) == NULL) {
+ MPT2SAS_GET_REQUEST(mpt, req);
+ if (req == NULL) {
if (mpt->outofbeer == 0) {
mpt->outofbeer = 1;
xpt_freeze_simq(mpt->sim, 1);
@@ -865,7 +866,7 @@
request_t *req;
int error;
- req = mpt2sas_get_request(mpt);
+ MPT2SAS_GET_REQUEST(mpt, req);
if (req == NULL) {
return (ENOMEM);
}
@@ -908,7 +909,7 @@
request_t *req;
int error;
- req = mpt2sas_get_request(mpt);
+ MPT2SAS_GET_REQUEST(mpt, req);
if (req == NULL) {
return (ENOMEM);
}
==== //depot/projects/mjacob-dev/sys/dev/mpt2sas/mpt2sas.c#6 (text+ko) ====
@@ -502,7 +502,8 @@
mpt2sas_ack_event(mpt2sas_t *mpt, MPI2_EVENT_NOTIFICATION_REPLY *reply)
{
MPI2_EVENT_ACK_REQUEST *rqs;
- request_t *req = mpt2sas_get_request(mpt);
+ request_t *req;
+ MPT2SAS_GET_REQUEST(mpt, req);
if (req == NULL) {
mpt2sas_prt(mpt, MP2PRT_ERR, "%s: Unable to allocate request for Event=%x EventContext=%x\n", __func__, reply->Event, reply->EventContext);
mpt->acks_needed = 1;
@@ -1077,7 +1078,7 @@
mpt2sas_prt(mpt, MP2PRT_CONFIG, "%s: internal task management busy for handle 0x%x- retrying\n", __func__, hdl);
return (EBUSY);
}
- req = mpt2sas_get_request(mpt);
+ MPT2SAS_GET_REQUEST(mpt, req);
if (req == NULL) {
mpt2sas_prt(mpt, MP2PRT_ERR, "%s: cannot allocate request\n", __func__);
return (ENOBUFS);
@@ -1129,7 +1130,7 @@
mpt = dp->mpt;
mpt2sas_prt(mpt, MP2PRT_CONFIG, "%s: destroy DeviceHandle %x Phy %x active %u\n", __func__, dp->AttachedDevHandle, dp->PhyNum, dp->active);
dp->destroy_needed = 0;
- req = mpt2sas_get_request(mpt);
+ MPT2SAS_GET_REQUEST(mpt, req);
if (req == NULL) {
mpt2sas_prt(mpt, MP2PRT_ERR, "%s: cannot allocate request\n", __func__);
callout_reset(&dp->actions, 5, mpt2sas_destroy_dev_cb, dp);
@@ -1195,7 +1196,7 @@
request_t *req;
int error;
- req = mpt2sas_get_request(mpt);
+ MPT2SAS_GET_REQUEST(mpt, req);
if (req == NULL) {
return (ENOMEM);
}
@@ -1233,7 +1234,7 @@
mpt2sas_free_cfgbuf(mpt, off);
return (error);
}
- req = mpt2sas_get_request(mpt);
+ MPT2SAS_GET_REQUEST(mpt, req);
if (req == NULL) {
mpt2sas_free_cfgbuf(mpt, off);
return (ENOMEM);
@@ -1275,7 +1276,7 @@
mpt2sas_free_cfgbuf(mpt, off);
return (error);
}
- req = mpt2sas_get_request(mpt);
+ MPT2SAS_GET_REQUEST(mpt, req);
if (req == NULL) {
mpt2sas_free_cfgbuf(mpt, off);
return (ENOMEM);
@@ -1305,7 +1306,7 @@
}
ptr->ReportDeviceMissingDelay = 3;
ptr->IODeviceMissingDelay = 3;
- req = mpt2sas_get_request(mpt);
+ MPT2SAS_GET_REQUEST(mpt, req);
if (req == NULL) {
mpt2sas_free_cfgbuf(mpt, off);
return (ENOMEM);
@@ -1342,7 +1343,7 @@
if (error) {
return (error);
}
- req = mpt2sas_get_request(mpt);
+ MPT2SAS_GET_REQUEST(mpt, req);
if (req == NULL) {
return (ENOMEM);
}
@@ -1383,7 +1384,7 @@
U8 fis[20];
uint32_t flags;
- req = mpt2sas_get_request(mpt);
+ MPT2SAS_GET_REQUEST(mpt, req);
if (req == NULL) {
return (ENOMEM);
}
@@ -1588,6 +1589,17 @@
mpt->nreq_allocated--;
}
+char *
+mpt2sas_decode_request(mpt2sas_t *mpt, request_t *req, char *buf, size_t len)
+{
+ MPI2_REQUEST_HEADER *rqs = MPT2_REQ2RQS(mpt, req);
+ if (req->func)
+ snprintf(buf, len, "%p:%u opcode 0x%02x from %s:%u", req, req->serno, rqs->Function, req->func, req->lineno);
+ else
+ snprintf(buf, len, "%p:%u opcode 0x%02x", req, req->serno, rqs->Function);
+ return (buf);
+}
+
request_t *
mpt2sas_get_request(mpt2sas_t *mpt)
{
@@ -1597,6 +1609,7 @@
req->state = REQ_STATE_ALLOCATED;
mpt2sas_assign_serno(mpt, req);
mpt->nreq_allocated++;
+ req->func = NULL;
}
return (req);
}
@@ -1740,7 +1753,7 @@
request_t *req;
int error;
- req = mpt2sas_get_request(mpt);
+ MPT2SAS_GET_REQUEST(mpt, req);
if (req == NULL) {
mpt2sas_prt(mpt, MP2PRT_ERR, "%s: unable to get request\n", __func__);
return;
@@ -1768,7 +1781,7 @@
MPI2_EVENT_NOTIFICATION_REQUEST *rqs;
request_t *req;
- req = mpt2sas_get_request(mpt);
+ MPT2SAS_GET_REQUEST(mpt, req);
if (req == NULL) {
return (ENOMEM);
}
@@ -2108,7 +2121,7 @@
request_t *req;
int error;
- req = mpt2sas_get_request(mpt);
+ MPT2SAS_GET_REQUEST(mpt, req);
if (req == NULL) {
return (ENOMEM);
}
@@ -2135,7 +2148,7 @@
request_t *req;
int error;
- req = mpt2sas_get_request(mpt);
+ MPT2SAS_GET_REQUEST(mpt, req);
if (req == NULL) {
return (ENOMEM);
}
@@ -2169,6 +2182,7 @@
uint32_t mselapsed;
struct timeval now, save;
request_t *req;
+ char buf[64];
struct topochg *tp;
int r;
@@ -2189,7 +2203,7 @@
}
req->timeout = 0;
req->state |= REQ_STATE_TIMEDOUT;
- mpt2sas_prt(mpt, MP2PRT_ERR, "request %p:%u timed out\n", req, req->serno);
+ mpt2sas_prt(mpt, MP2PRT_ERR, "request %s timed out\n", mpt2sas_decode_request(mpt, req, buf, sizeof (buf)));
if ((req->state & (REQ_STATE_NEED_CALLBACK|REQ_STATE_NEED_WAKEUP)) == 0 && req->ccb) {
mpt2sas_scsi_abort(mpt, req);
}
==== //depot/projects/mjacob-dev/sys/dev/mpt2sas/mpt2sas.h#7 (text+ko) ====
@@ -215,6 +215,7 @@
#define MPT2_APT_DLMASK 0x00ffff00 /* data length mask */
#define MPT2_APT_DLSHFT 8 /* shift */
+/* other definitions */
#define MPT2SAS_SYNC_ERR(m, e) \
if (e == ETIMEDOUT) { \
mpt2sas_prt(m, MP2PRT_ERR, "%s: request timed out (@line %d)\n", __func__, __LINE__); \
@@ -233,6 +234,13 @@
} \
do { ; } while (0)
+#define MPT2SAS_GET_REQUEST(m, r) \
+ if ((r = mpt2sas_get_request(m)) != NULL) { \
+ r->func = __func__; \
+ r->lineno = __LINE__ - 3; \
+ } \
+ do { ; } while (0)
+
/****************************** Global Data References ******************************/
extern struct mtx mpt2sas_global_lock;
@@ -334,6 +342,8 @@
mpt2sas_dma_chunk_t * chain; /* dma chains */
bus_dmamap_t dmap; /* DMA map for data buffers */
uint32_t timeout; /* timeout in seconds */
+ const char * func;
+ uint32_t lineno;
};
/******************* SAS support structures ***********************************/
@@ -701,6 +711,7 @@
void mpt2sas_disable_ints(mpt2sas_t *);
int mpt2sas_shutdown(mpt2sas_t *);
int mpt2sas_handshake_cmd(mpt2sas_t *, size_t, void *, size_t, void *);
+char * mpt2sas_decode_request(mpt2sas_t *, request_t *, char *, size_t);
request_t * mpt2sas_get_request(mpt2sas_t *);
void mpt2sas_free_request(mpt2sas_t *, request_t *);
void mpt2sas_intr(void *);
More information about the p4-projects
mailing list