diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
---|---|---|
committer | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
commit | c71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch) | |
tree | ecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /drivers/scsi/u14-34f.c | |
parent | ea53c912f8a86a8567697115b6a0d8152beee5c8 (diff) | |
parent | 6a00f206debf8a5c8899055726ad127dbeeed098 (diff) |
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts:
litmus/sched_cedf.c
Diffstat (limited to 'drivers/scsi/u14-34f.c')
-rw-r--r-- | drivers/scsi/u14-34f.c | 67 |
1 files changed, 31 insertions, 36 deletions
diff --git a/drivers/scsi/u14-34f.c b/drivers/scsi/u14-34f.c index 5d9fdeeb2315..90e104d6b558 100644 --- a/drivers/scsi/u14-34f.c +++ b/drivers/scsi/u14-34f.c | |||
@@ -433,7 +433,7 @@ | |||
433 | 433 | ||
434 | static int u14_34f_detect(struct scsi_host_template *); | 434 | static int u14_34f_detect(struct scsi_host_template *); |
435 | static int u14_34f_release(struct Scsi_Host *); | 435 | static int u14_34f_release(struct Scsi_Host *); |
436 | static int u14_34f_queuecommand(struct scsi_cmnd *, void (*done)(struct scsi_cmnd *)); | 436 | static int u14_34f_queuecommand(struct Scsi_Host *, struct scsi_cmnd *); |
437 | static int u14_34f_eh_abort(struct scsi_cmnd *); | 437 | static int u14_34f_eh_abort(struct scsi_cmnd *); |
438 | static int u14_34f_eh_host_reset(struct scsi_cmnd *); | 438 | static int u14_34f_eh_host_reset(struct scsi_cmnd *); |
439 | static int u14_34f_bios_param(struct scsi_device *, struct block_device *, | 439 | static int u14_34f_bios_param(struct scsi_device *, struct block_device *, |
@@ -1248,7 +1248,7 @@ static void scsi_to_dev_dir(unsigned int i, unsigned int j) { | |||
1248 | 1248 | ||
1249 | } | 1249 | } |
1250 | 1250 | ||
1251 | static int u14_34f_queuecommand(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *)) { | 1251 | static int u14_34f_queuecommand_lck(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *)) { |
1252 | unsigned int i, j, k; | 1252 | unsigned int i, j, k; |
1253 | struct mscp *cpp; | 1253 | struct mscp *cpp; |
1254 | 1254 | ||
@@ -1256,8 +1256,8 @@ static int u14_34f_queuecommand(struct scsi_cmnd *SCpnt, void (*done)(struct scs | |||
1256 | j = ((struct hostdata *) SCpnt->device->host->hostdata)->board_number; | 1256 | j = ((struct hostdata *) SCpnt->device->host->hostdata)->board_number; |
1257 | 1257 | ||
1258 | if (SCpnt->host_scribble) | 1258 | if (SCpnt->host_scribble) |
1259 | panic("%s: qcomm, pid %ld, SCpnt %p already active.\n", | 1259 | panic("%s: qcomm, SCpnt %p already active.\n", |
1260 | BN(j), SCpnt->serial_number, SCpnt); | 1260 | BN(j), SCpnt); |
1261 | 1261 | ||
1262 | /* i is the mailbox number, look for the first free mailbox | 1262 | /* i is the mailbox number, look for the first free mailbox |
1263 | starting from last_cp_used */ | 1263 | starting from last_cp_used */ |
@@ -1286,9 +1286,9 @@ static int u14_34f_queuecommand(struct scsi_cmnd *SCpnt, void (*done)(struct scs | |||
1286 | cpp->cpp_index = i; | 1286 | cpp->cpp_index = i; |
1287 | SCpnt->host_scribble = (unsigned char *) &cpp->cpp_index; | 1287 | SCpnt->host_scribble = (unsigned char *) &cpp->cpp_index; |
1288 | 1288 | ||
1289 | if (do_trace) printk("%s: qcomm, mbox %d, target %d.%d:%d, pid %ld.\n", | 1289 | if (do_trace) printk("%s: qcomm, mbox %d, target %d.%d:%d.\n", |
1290 | BN(j), i, SCpnt->device->channel, SCpnt->device->id, | 1290 | BN(j), i, SCpnt->device->channel, SCpnt->device->id, |
1291 | SCpnt->device->lun, SCpnt->serial_number); | 1291 | SCpnt->device->lun); |
1292 | 1292 | ||
1293 | cpp->opcode = OP_SCSI; | 1293 | cpp->opcode = OP_SCSI; |
1294 | cpp->channel = SCpnt->device->channel; | 1294 | cpp->channel = SCpnt->device->channel; |
@@ -1315,7 +1315,7 @@ static int u14_34f_queuecommand(struct scsi_cmnd *SCpnt, void (*done)(struct scs | |||
1315 | unmap_dma(i, j); | 1315 | unmap_dma(i, j); |
1316 | SCpnt->host_scribble = NULL; | 1316 | SCpnt->host_scribble = NULL; |
1317 | scmd_printk(KERN_INFO, SCpnt, | 1317 | scmd_printk(KERN_INFO, SCpnt, |
1318 | "qcomm, pid %ld, adapter busy.\n", SCpnt->serial_number); | 1318 | "qcomm, adapter busy.\n"); |
1319 | return 1; | 1319 | return 1; |
1320 | } | 1320 | } |
1321 | 1321 | ||
@@ -1329,20 +1329,20 @@ static int u14_34f_queuecommand(struct scsi_cmnd *SCpnt, void (*done)(struct scs | |||
1329 | return 0; | 1329 | return 0; |
1330 | } | 1330 | } |
1331 | 1331 | ||
1332 | static DEF_SCSI_QCMD(u14_34f_queuecommand) | ||
1333 | |||
1332 | static int u14_34f_eh_abort(struct scsi_cmnd *SCarg) { | 1334 | static int u14_34f_eh_abort(struct scsi_cmnd *SCarg) { |
1333 | unsigned int i, j; | 1335 | unsigned int i, j; |
1334 | 1336 | ||
1335 | j = ((struct hostdata *) SCarg->device->host->hostdata)->board_number; | 1337 | j = ((struct hostdata *) SCarg->device->host->hostdata)->board_number; |
1336 | 1338 | ||
1337 | if (SCarg->host_scribble == NULL) { | 1339 | if (SCarg->host_scribble == NULL) { |
1338 | scmd_printk(KERN_INFO, SCarg, "abort, pid %ld inactive.\n", | 1340 | scmd_printk(KERN_INFO, SCarg, "abort, command inactive.\n"); |
1339 | SCarg->serial_number); | ||
1340 | return SUCCESS; | 1341 | return SUCCESS; |
1341 | } | 1342 | } |
1342 | 1343 | ||
1343 | i = *(unsigned int *)SCarg->host_scribble; | 1344 | i = *(unsigned int *)SCarg->host_scribble; |
1344 | scmd_printk(KERN_INFO, SCarg, "abort, mbox %d, pid %ld.\n", | 1345 | scmd_printk(KERN_INFO, SCarg, "abort, mbox %d.\n", i); |
1345 | i, SCarg->serial_number); | ||
1346 | 1346 | ||
1347 | if (i >= sh[j]->can_queue) | 1347 | if (i >= sh[j]->can_queue) |
1348 | panic("%s: abort, invalid SCarg->host_scribble.\n", BN(j)); | 1348 | panic("%s: abort, invalid SCarg->host_scribble.\n", BN(j)); |
@@ -1385,8 +1385,7 @@ static int u14_34f_eh_abort(struct scsi_cmnd *SCarg) { | |||
1385 | SCarg->result = DID_ABORT << 16; | 1385 | SCarg->result = DID_ABORT << 16; |
1386 | SCarg->host_scribble = NULL; | 1386 | SCarg->host_scribble = NULL; |
1387 | HD(j)->cp_stat[i] = FREE; | 1387 | HD(j)->cp_stat[i] = FREE; |
1388 | printk("%s, abort, mbox %d ready, DID_ABORT, pid %ld done.\n", | 1388 | printk("%s, abort, mbox %d ready, DID_ABORT, done.\n", BN(j), i); |
1389 | BN(j), i, SCarg->serial_number); | ||
1390 | SCarg->scsi_done(SCarg); | 1389 | SCarg->scsi_done(SCarg); |
1391 | return SUCCESS; | 1390 | return SUCCESS; |
1392 | } | 1391 | } |
@@ -1401,12 +1400,12 @@ static int u14_34f_eh_host_reset(struct scsi_cmnd *SCarg) { | |||
1401 | struct scsi_cmnd *SCpnt; | 1400 | struct scsi_cmnd *SCpnt; |
1402 | 1401 | ||
1403 | j = ((struct hostdata *) SCarg->device->host->hostdata)->board_number; | 1402 | j = ((struct hostdata *) SCarg->device->host->hostdata)->board_number; |
1404 | scmd_printk(KERN_INFO, SCarg, "reset, enter, pid %ld.\n", SCarg->serial_number); | 1403 | scmd_printk(KERN_INFO, SCarg, "reset, enter.\n"); |
1405 | 1404 | ||
1406 | spin_lock_irq(sh[j]->host_lock); | 1405 | spin_lock_irq(sh[j]->host_lock); |
1407 | 1406 | ||
1408 | if (SCarg->host_scribble == NULL) | 1407 | if (SCarg->host_scribble == NULL) |
1409 | printk("%s: reset, pid %ld inactive.\n", BN(j), SCarg->serial_number); | 1408 | printk("%s: reset, inactive.\n", BN(j)); |
1410 | 1409 | ||
1411 | if (HD(j)->in_reset) { | 1410 | if (HD(j)->in_reset) { |
1412 | printk("%s: reset, exit, already in reset.\n", BN(j)); | 1411 | printk("%s: reset, exit, already in reset.\n", BN(j)); |
@@ -1443,14 +1442,12 @@ static int u14_34f_eh_host_reset(struct scsi_cmnd *SCarg) { | |||
1443 | 1442 | ||
1444 | if (HD(j)->cp_stat[i] == READY || HD(j)->cp_stat[i] == ABORTING) { | 1443 | if (HD(j)->cp_stat[i] == READY || HD(j)->cp_stat[i] == ABORTING) { |
1445 | HD(j)->cp_stat[i] = ABORTING; | 1444 | HD(j)->cp_stat[i] = ABORTING; |
1446 | printk("%s: reset, mbox %d aborting, pid %ld.\n", | 1445 | printk("%s: reset, mbox %d aborting.\n", BN(j), i); |
1447 | BN(j), i, SCpnt->serial_number); | ||
1448 | } | 1446 | } |
1449 | 1447 | ||
1450 | else { | 1448 | else { |
1451 | HD(j)->cp_stat[i] = IN_RESET; | 1449 | HD(j)->cp_stat[i] = IN_RESET; |
1452 | printk("%s: reset, mbox %d in reset, pid %ld.\n", | 1450 | printk("%s: reset, mbox %d in reset.\n", BN(j), i); |
1453 | BN(j), i, SCpnt->serial_number); | ||
1454 | } | 1451 | } |
1455 | 1452 | ||
1456 | if (SCpnt->host_scribble == NULL) | 1453 | if (SCpnt->host_scribble == NULL) |
@@ -1498,8 +1495,7 @@ static int u14_34f_eh_host_reset(struct scsi_cmnd *SCarg) { | |||
1498 | /* This mailbox is still waiting for its interrupt */ | 1495 | /* This mailbox is still waiting for its interrupt */ |
1499 | HD(j)->cp_stat[i] = LOCKED; | 1496 | HD(j)->cp_stat[i] = LOCKED; |
1500 | 1497 | ||
1501 | printk("%s, reset, mbox %d locked, DID_RESET, pid %ld done.\n", | 1498 | printk("%s, reset, mbox %d locked, DID_RESET, done.\n", BN(j), i); |
1502 | BN(j), i, SCpnt->serial_number); | ||
1503 | } | 1499 | } |
1504 | 1500 | ||
1505 | else if (HD(j)->cp_stat[i] == ABORTING) { | 1501 | else if (HD(j)->cp_stat[i] == ABORTING) { |
@@ -1511,8 +1507,7 @@ static int u14_34f_eh_host_reset(struct scsi_cmnd *SCarg) { | |||
1511 | /* This mailbox was never queued to the adapter */ | 1507 | /* This mailbox was never queued to the adapter */ |
1512 | HD(j)->cp_stat[i] = FREE; | 1508 | HD(j)->cp_stat[i] = FREE; |
1513 | 1509 | ||
1514 | printk("%s, reset, mbox %d aborting, DID_RESET, pid %ld done.\n", | 1510 | printk("%s, reset, mbox %d aborting, DID_RESET, done.\n", BN(j), i); |
1515 | BN(j), i, SCpnt->serial_number); | ||
1516 | } | 1511 | } |
1517 | 1512 | ||
1518 | else | 1513 | else |
@@ -1526,7 +1521,7 @@ static int u14_34f_eh_host_reset(struct scsi_cmnd *SCarg) { | |||
1526 | HD(j)->in_reset = FALSE; | 1521 | HD(j)->in_reset = FALSE; |
1527 | do_trace = FALSE; | 1522 | do_trace = FALSE; |
1528 | 1523 | ||
1529 | if (arg_done) printk("%s: reset, exit, pid %ld done.\n", BN(j), SCarg->serial_number); | 1524 | if (arg_done) printk("%s: reset, exit, done.\n", BN(j)); |
1530 | else printk("%s: reset, exit.\n", BN(j)); | 1525 | else printk("%s: reset, exit.\n", BN(j)); |
1531 | 1526 | ||
1532 | spin_unlock_irq(sh[j]->host_lock); | 1527 | spin_unlock_irq(sh[j]->host_lock); |
@@ -1669,10 +1664,10 @@ static int reorder(unsigned int j, unsigned long cursec, | |||
1669 | if (link_statistics && (overlap || !(flushcount % link_statistics))) | 1664 | if (link_statistics && (overlap || !(flushcount % link_statistics))) |
1670 | for (n = 0; n < n_ready; n++) { | 1665 | for (n = 0; n < n_ready; n++) { |
1671 | k = il[n]; cpp = &HD(j)->cp[k]; SCpnt = cpp->SCpnt; | 1666 | k = il[n]; cpp = &HD(j)->cp[k]; SCpnt = cpp->SCpnt; |
1672 | printk("%s %d.%d:%d pid %ld mb %d fc %d nr %d sec %ld ns %u"\ | 1667 | printk("%s %d.%d:%d mb %d fc %d nr %d sec %ld ns %u"\ |
1673 | " cur %ld s:%c r:%c rev:%c in:%c ov:%c xd %d.\n", | 1668 | " cur %ld s:%c r:%c rev:%c in:%c ov:%c xd %d.\n", |
1674 | (ihdlr ? "ihdlr" : "qcomm"), SCpnt->channel, SCpnt->target, | 1669 | (ihdlr ? "ihdlr" : "qcomm"), SCpnt->channel, SCpnt->target, |
1675 | SCpnt->lun, SCpnt->serial_number, k, flushcount, n_ready, | 1670 | SCpnt->lun, k, flushcount, n_ready, |
1676 | blk_rq_pos(SCpnt->request), blk_rq_sectors(SCpnt->request), | 1671 | blk_rq_pos(SCpnt->request), blk_rq_sectors(SCpnt->request), |
1677 | cursec, YESNO(s), YESNO(r), YESNO(rev), YESNO(input_only), | 1672 | cursec, YESNO(s), YESNO(r), YESNO(rev), YESNO(input_only), |
1678 | YESNO(overlap), cpp->xdir); | 1673 | YESNO(overlap), cpp->xdir); |
@@ -1707,9 +1702,9 @@ static void flush_dev(struct scsi_device *dev, unsigned long cursec, unsigned in | |||
1707 | 1702 | ||
1708 | if (wait_on_busy(sh[j]->io_port, MAXLOOP)) { | 1703 | if (wait_on_busy(sh[j]->io_port, MAXLOOP)) { |
1709 | scmd_printk(KERN_INFO, SCpnt, | 1704 | scmd_printk(KERN_INFO, SCpnt, |
1710 | "%s, pid %ld, mbox %d, adapter" | 1705 | "%s, mbox %d, adapter" |
1711 | " busy, will abort.\n", (ihdlr ? "ihdlr" : "qcomm"), | 1706 | " busy, will abort.\n", (ihdlr ? "ihdlr" : "qcomm"), |
1712 | SCpnt->serial_number, k); | 1707 | k); |
1713 | HD(j)->cp_stat[k] = ABORTING; | 1708 | HD(j)->cp_stat[k] = ABORTING; |
1714 | continue; | 1709 | continue; |
1715 | } | 1710 | } |
@@ -1791,12 +1786,12 @@ static irqreturn_t ihdlr(unsigned int j) | |||
1791 | if (SCpnt == NULL) panic("%s: ihdlr, mbox %d, SCpnt == NULL.\n", BN(j), i); | 1786 | if (SCpnt == NULL) panic("%s: ihdlr, mbox %d, SCpnt == NULL.\n", BN(j), i); |
1792 | 1787 | ||
1793 | if (SCpnt->host_scribble == NULL) | 1788 | if (SCpnt->host_scribble == NULL) |
1794 | panic("%s: ihdlr, mbox %d, pid %ld, SCpnt %p garbled.\n", BN(j), i, | 1789 | panic("%s: ihdlr, mbox %d, SCpnt %p garbled.\n", BN(j), i, |
1795 | SCpnt->serial_number, SCpnt); | 1790 | SCpnt); |
1796 | 1791 | ||
1797 | if (*(unsigned int *)SCpnt->host_scribble != i) | 1792 | if (*(unsigned int *)SCpnt->host_scribble != i) |
1798 | panic("%s: ihdlr, mbox %d, pid %ld, index mismatch %d.\n", | 1793 | panic("%s: ihdlr, mbox %d, index mismatch %d.\n", |
1799 | BN(j), i, SCpnt->serial_number, *(unsigned int *)SCpnt->host_scribble); | 1794 | BN(j), i, *(unsigned int *)SCpnt->host_scribble); |
1800 | 1795 | ||
1801 | sync_dma(i, j); | 1796 | sync_dma(i, j); |
1802 | 1797 | ||
@@ -1839,8 +1834,8 @@ static irqreturn_t ihdlr(unsigned int j) | |||
1839 | (!(tstatus == CHECK_CONDITION && HD(j)->iocount <= 1000 && | 1834 | (!(tstatus == CHECK_CONDITION && HD(j)->iocount <= 1000 && |
1840 | (SCpnt->sense_buffer[2] & 0xf) == NOT_READY))) | 1835 | (SCpnt->sense_buffer[2] & 0xf) == NOT_READY))) |
1841 | scmd_printk(KERN_INFO, SCpnt, | 1836 | scmd_printk(KERN_INFO, SCpnt, |
1842 | "ihdlr, pid %ld, target_status 0x%x, sense key 0x%x.\n", | 1837 | "ihdlr, target_status 0x%x, sense key 0x%x.\n", |
1843 | SCpnt->serial_number, spp->target_status, | 1838 | spp->target_status, |
1844 | SCpnt->sense_buffer[2]); | 1839 | SCpnt->sense_buffer[2]); |
1845 | 1840 | ||
1846 | HD(j)->target_to[scmd_id(SCpnt)][scmd_channel(SCpnt)] = 0; | 1841 | HD(j)->target_to[scmd_id(SCpnt)][scmd_channel(SCpnt)] = 0; |
@@ -1911,8 +1906,8 @@ static irqreturn_t ihdlr(unsigned int j) | |||
1911 | do_trace || msg_byte(spp->target_status)) | 1906 | do_trace || msg_byte(spp->target_status)) |
1912 | #endif | 1907 | #endif |
1913 | scmd_printk(KERN_INFO, SCpnt, "ihdlr, mbox %2d, err 0x%x:%x,"\ | 1908 | scmd_printk(KERN_INFO, SCpnt, "ihdlr, mbox %2d, err 0x%x:%x,"\ |
1914 | " pid %ld, reg 0x%x, count %d.\n", | 1909 | " reg 0x%x, count %d.\n", |
1915 | i, spp->adapter_status, spp->target_status, SCpnt->serial_number, | 1910 | i, spp->adapter_status, spp->target_status, |
1916 | reg, HD(j)->iocount); | 1911 | reg, HD(j)->iocount); |
1917 | 1912 | ||
1918 | unmap_dma(i, j); | 1913 | unmap_dma(i, j); |