Symbol: smrt
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
174
smrt_t *smrt;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
188
smrt = ddi_get_soft_state(smrt_state, instance);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
189
VERIFY(smrt != NULL);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
192
if (smrt_logvol_hba_setup(smrt, dip) != DDI_SUCCESS)
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
194
smrt->smrt_virt_iport = dip;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
196
if (smrt_phys_hba_setup(smrt, dip) != DDI_SUCCESS)
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
198
smrt->smrt_phys_iport = dip;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
211
smrt_t *smrt;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
218
smrt = tran->tran_hba_private;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
219
VERIFY(smrt != NULL);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
225
smrt_logvol_hba_teardown(smrt, dip);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
226
smrt->smrt_virt_iport = NULL;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
228
smrt_phys_hba_teardown(smrt, dip);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
229
smrt->smrt_phys_iport = NULL;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
241
smrt_t *smrt;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
262
if ((smrt = ddi_get_soft_state(smrt_state, instance)) == NULL) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
271
smrt->smrt_dip = dip;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
272
smrt->smrt_instance = instance;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
273
smrt->smrt_next_tag = SMRT_MIN_TAG_NUMBER;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
274
list_create(&smrt->smrt_commands, sizeof (smrt_command_t),
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
276
list_create(&smrt->smrt_finishq, sizeof (smrt_command_t),
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
278
list_create(&smrt->smrt_abortq, sizeof (smrt_command_t),
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
280
list_create(&smrt->smrt_volumes, sizeof (smrt_volume_t),
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
282
list_create(&smrt->smrt_physicals, sizeof (smrt_physical_t),
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
284
list_create(&smrt->smrt_targets, sizeof (smrt_target_t),
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
286
avl_create(&smrt->smrt_inflight, smrt_command_comparator,
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
289
cv_init(&smrt->smrt_cv_finishq, NULL, CV_DRIVER, NULL);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
291
smrt->smrt_init_level |= SMRT_INITLEVEL_BASIC;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
297
if (smrt_device_setup(smrt) != DDI_SUCCESS) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
307
if (smrt_ctlr_init(smrt) != DDI_SUCCESS) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
317
VERIFY(smrt->smrt_sg_cnt > 0);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
318
smrt->smrt_dma_attr = smrt_dma_attr_template;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
319
smrt->smrt_dma_attr.dma_attr_sgllen = smrt->smrt_sg_cnt;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
325
if (smrt_interrupts_setup(smrt) != DDI_SUCCESS) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
335
mutex_init(&smrt->smrt_mutex, NULL, MUTEX_DRIVER,
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
336
DDI_INTR_PRI(smrt->smrt_interrupt_pri));
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
337
smrt->smrt_init_level |= SMRT_INITLEVEL_MUTEX;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
344
smrt->smrt_status |= SMRT_CTLR_STATUS_RUNNING;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
346
if (smrt_interrupts_enable(smrt) != DDI_SUCCESS) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
351
if (smrt_ctrl_hba_setup(smrt) != DDI_SUCCESS) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
360
smrt_intr_set(smrt, B_TRUE);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
366
smrt->smrt_periodic = ddi_periodic_add(smrt_periodic, smrt,
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
368
smrt->smrt_init_level |= SMRT_INITLEVEL_PERIODIC;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
372
smrt->smrt_discover_taskq = ddi_taskq_create(smrt->smrt_dip, taskq_name,
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
374
if (smrt->smrt_discover_taskq == NULL) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
378
smrt->smrt_init_level |= SMRT_INITLEVEL_TASKQ;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
380
if ((r = smrt_event_init(smrt)) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
385
smrt->smrt_init_level |= SMRT_INITLEVEL_ASYNC_EVENT;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
402
if (smrt->smrt_stats.smrts_claimed_interrupts == 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
407
smrt_cleanup(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
415
smrt_t *smrt = (smrt_t *)tran->tran_hba_private;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
428
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
429
if (!list_is_empty(&smrt->smrt_targets)) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
430
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
431
dev_err(smrt->smrt_dip, CE_WARN, "cannot detach; targets still "
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
436
if (smrt->smrt_virt_iport != NULL || smrt->smrt_phys_iport != NULL) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
437
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
438
dev_err(smrt->smrt_dip, CE_WARN, "cannot detach: iports still "
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
446
smrt->smrt_status |= SMRT_CTLR_STATUS_DETACHING;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
447
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
452
smrt_cleanup(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
485
smrt_cleanup(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
487
if (smrt->smrt_init_level & SMRT_INITLEVEL_ASYNC_EVENT) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
488
smrt_event_fini(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
489
smrt->smrt_init_level &= ~SMRT_INITLEVEL_ASYNC_EVENT;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
492
smrt_interrupts_teardown(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
494
if (smrt->smrt_init_level & SMRT_INITLEVEL_TASKQ) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
495
ddi_taskq_destroy(smrt->smrt_discover_taskq);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
496
smrt->smrt_discover_taskq = NULL;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
497
smrt->smrt_init_level &= ~SMRT_INITLEVEL_TASKQ;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
500
if (smrt->smrt_init_level & SMRT_INITLEVEL_PERIODIC) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
501
ddi_periodic_delete(smrt->smrt_periodic);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
502
smrt->smrt_init_level &= ~SMRT_INITLEVEL_PERIODIC;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
505
smrt_ctrl_hba_teardown(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
507
smrt_ctlr_teardown(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
509
smrt_device_teardown(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
511
if (smrt->smrt_init_level & SMRT_INITLEVEL_BASIC) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
512
smrt_logvol_teardown(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
513
smrt_phys_teardown(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
515
cv_destroy(&smrt->smrt_cv_finishq);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
517
VERIFY(list_is_empty(&smrt->smrt_commands));
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
518
list_destroy(&smrt->smrt_commands);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
519
list_destroy(&smrt->smrt_finishq);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
520
list_destroy(&smrt->smrt_abortq);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
522
VERIFY(list_is_empty(&smrt->smrt_volumes));
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
523
list_destroy(&smrt->smrt_volumes);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
525
VERIFY(list_is_empty(&smrt->smrt_physicals));
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
526
list_destroy(&smrt->smrt_physicals);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
528
VERIFY(list_is_empty(&smrt->smrt_targets));
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
529
list_destroy(&smrt->smrt_targets);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
531
VERIFY(avl_is_empty(&smrt->smrt_inflight));
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
532
avl_destroy(&smrt->smrt_inflight);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
534
smrt->smrt_init_level &= ~SMRT_INITLEVEL_BASIC;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
537
if (smrt->smrt_init_level & SMRT_INITLEVEL_MUTEX) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
538
mutex_destroy(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
540
smrt->smrt_init_level &= ~SMRT_INITLEVEL_MUTEX;
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
543
VERIFY0(smrt->smrt_init_level);
usr/src/uts/common/io/scsi/adapters/smrt/smrt.c
545
ddi_soft_state_free(smrt_state, ddi_get_instance(smrt->smrt_dip));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1001
smrt_ctlr_get_hostdrvsup(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1003
return (ddi_get32(smrt->smrt_ct_handle,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1004
&smrt->smrt_ct->HostDrvrSupport));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1008
smrt_ctlr_init(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1013
if ((e = smrt_ctlr_wait_for_state(smrt,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1024
if (ddi_get8(smrt->smrt_ct_handle,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1025
&smrt->smrt_ct->Signature[i]) != signature[i]) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1026
dev_err(smrt->smrt_dip, CE_WARN, "invalid signature "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1036
if ((e = smrt_ctlr_init_simple(smrt)) != DDI_SUCCESS) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1043
smrt->smrt_host_support = smrt_ctlr_get_hostdrvsup(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1044
smrt->smrt_bus_support = ddi_get32(smrt->smrt_ct_handle,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1045
&smrt->smrt_ct->BusTypes);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1051
smrt->smrt_last_heartbeat = ddi_get32(smrt->smrt_ct_handle,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1052
&smrt->smrt_ct->HeartBeat);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1053
smrt->smrt_last_heartbeat_time = gethrtime();
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1059
if ((e = smrt_ctlr_versions(smrt, SMRT_DISCOVER_TIMEOUT,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1060
&smrt->smrt_versions)) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1061
dev_err(smrt->smrt_dip, CE_WARN, "could not identify "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1066
dev_err(smrt->smrt_dip, CE_NOTE, "!firmware rev %s",
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1067
smrt->smrt_versions.smrtv_firmware_rev);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1073
smrt_ctlr_teardown(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1075
smrt->smrt_status &= ~SMRT_CTLR_STATUS_RUNNING;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1077
switch (smrt->smrt_ctlr_mode) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1079
smrt_ctlr_teardown_simple(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1090
smrt_ctlr_wait_for_state(smrt_t *smrt, smrt_wait_state_t state)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1108
uint32_t spr = smrt_get32(smrt, CISS_I2O_SCRATCHPAD);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1138
dev_err(smrt->smrt_dip, CE_WARN, "time out waiting for controller "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1145
smrt_lockup_check(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1150
uint32_t heartbeat = ddi_get32(smrt->smrt_ct_handle,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1151
&smrt->smrt_ct->HeartBeat);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1153
VERIFY(MUTEX_HELD(&smrt->smrt_mutex));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1158
if (heartbeat != smrt->smrt_last_heartbeat) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1164
smrt->smrt_last_heartbeat = heartbeat;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1165
smrt->smrt_last_heartbeat_time = gethrtime();
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1175
uint32_t odr = smrt_get32(smrt, CISS_I2O_OUTBOUND_DOORBELL_STATUS);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1176
uint32_t spr = smrt_get32(smrt, CISS_I2O_SCRATCHPAD);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1178
dev_err(smrt->smrt_dip, CE_PANIC, "HP SmartArray firmware has "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1183
if (gethrtime() > smrt->smrt_last_heartbeat_time + 60 * NANOSEC) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1184
dev_err(smrt->smrt_dip, CE_PANIC, "HP SmartArray firmware has "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1198
smrt_ctlr_identify(smrt_t *smrt, uint16_t timeout,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1213
if ((smcm = smrt_command_alloc_preinit(smrt, sz, KM_SLEEP)) == NULL) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1241
if ((r = smrt_preinit_command_simple(smrt, smcm)) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1270
dev_err(smrt->smrt_dip, CE_WARN, "identify "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1326
smrt_ctlr_versions(smrt_t *smrt, uint16_t timeout, smrt_versions_t *smrtv)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1331
if ((r = smrt_ctlr_identify(smrt, timeout, &smic)) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1347
smrt_ctlr_reset(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1352
VERIFY(MUTEX_HELD(&smrt->smrt_mutex));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1358
if (smrt->smrt_status & SMRT_CTLR_STATUS_RESETTING) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1363
while (smrt->smrt_status & SMRT_CTLR_STATUS_RESETTING) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1364
cv_wait(&smrt->smrt_cv_finishq, &smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1368
smrt->smrt_status |= SMRT_CTLR_STATUS_RESETTING;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1369
smrt->smrt_last_reset_start = gethrtime();
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1370
smrt->smrt_stats.smrts_ctlr_resets++;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1378
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1379
if ((smcm = smrt_command_alloc(smrt, SMRT_CMDTYPE_INTERNAL,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1381
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1384
if ((smcm_nop = smrt_command_alloc(smrt, SMRT_CMDTYPE_INTERNAL,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1387
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1390
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1404
smrt_intr_set(smrt, B_FALSE);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1406
dev_err(smrt->smrt_dip, CE_WARN, "attempting controller soft reset");
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1408
if ((r = smrt_submit(smrt, smcm)) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1409
dev_err(smrt->smrt_dip, CE_PANIC, "soft reset failed: "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1418
for (smrt_command_t *t = avl_first(&smrt->smrt_inflight);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1419
t != NULL; t = AVL_NEXT(&smrt->smrt_inflight, t)) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1427
smrt->smrt_status &= ~SMRT_CTLR_STATUS_RUNNING;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1438
if (smrt_ctlr_wait_for_state(smrt, SMRT_WAIT_STATE_UNREADY) !=
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1440
dev_err(smrt->smrt_dip, CE_PANIC, "soft reset failed: "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1443
dev_err(smrt->smrt_dip, CE_NOTE, "soft reset: controller unready");
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1445
if (smrt_ctlr_wait_for_state(smrt, SMRT_WAIT_STATE_READY) !=
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1447
dev_err(smrt->smrt_dip, CE_PANIC, "soft reset failed: "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1450
dev_err(smrt->smrt_dip, CE_NOTE, "soft reset: controller ready");
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1465
smrt_ctlr_teardown(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1466
if (smrt_ctlr_init(smrt) != DDI_SUCCESS) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1467
dev_err(smrt->smrt_dip, CE_PANIC, "soft reset failed: "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1470
dev_err(smrt->smrt_dip, CE_NOTE, "soft reset: controller configured");
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1475
if ((r = smrt_submit(smrt, smcm_nop)) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1476
dev_err(smrt->smrt_dip, CE_PANIC, "soft reset failed: "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1486
smrt_retrieve_simple(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1495
list_remove(&smrt->smrt_finishq, smcm_nop);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1510
dev_err(smrt->smrt_dip, CE_PANIC, "soft reset failed: "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1513
dev_err(smrt->smrt_dip, CE_WARN, "soft reset: ping completed "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1517
dev_err(smrt->smrt_dip, CE_NOTE, "soft reset: ping completed");
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1525
for (smrt_command_t *t = avl_first(&smrt->smrt_inflight);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1527
nt = AVL_NEXT(&smrt->smrt_inflight, t);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1530
avl_remove(&smrt->smrt_inflight, t);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1533
list_insert_tail(&smrt->smrt_finishq, t);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1543
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1544
ddi_taskq_wait(smrt->smrt_discover_taskq);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1545
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1552
smrt_intr_set(smrt, B_TRUE);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1553
smrt->smrt_status &= ~SMRT_CTLR_STATUS_RESETTING;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1554
smrt->smrt_status |= SMRT_CTLR_DISCOVERY_REQUIRED;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1567
VERIFY0(smrt->smrt_status & SMRT_CTLR_DISCOVERY_RUNNING);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1568
smrt->smrt_status &= ~(SMRT_CTLR_DISCOVERY_MASK);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1569
smrt_discover(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1571
while (smrt->smrt_status & SMRT_CTLR_DISCOVERY_REQUIRED) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1572
cv_wait(&smrt->smrt_cv_finishq, &smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1576
smrt->smrt_status |= SMRT_CTLR_STATUS_RUNNING;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1577
smrt->smrt_last_reset_finish = gethrtime();
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1582
cv_broadcast(&smrt->smrt_cv_finishq);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1588
smrt_process_finishq(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1590
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1592
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1597
smrt_event_init(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1602
event = smrt_command_alloc(smrt, SMRT_CMDTYPE_EVENT, KM_NOSLEEP);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1605
if (smrt_command_attach_internal(smrt, event, SMRT_EVENT_NOTIFY_BUFLEN,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1612
cancel = smrt_command_alloc(smrt, SMRT_CMDTYPE_INTERNAL, KM_NOSLEEP);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1617
if (smrt_command_attach_internal(smrt, cancel, SMRT_EVENT_NOTIFY_BUFLEN,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1625
cv_init(&smrt->smrt_event_queue, NULL, CV_DRIVER, NULL);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1627
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1628
if ((ret = smrt_submit(smrt, event)) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1629
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1635
smrt->smrt_event_cmd = event;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1636
smrt->smrt_event_cancel_cmd = cancel;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1637
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1649
smrt_t *smrt = smcm->smcm_ctlr;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1651
VERIFY(MUTEX_HELD(&smrt->smrt_mutex));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1652
VERIFY3P(smcm, ==, smrt->smrt_event_cmd);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1653
VERIFY0(smrt->smrt_status & SMRT_CTLR_ASYNC_INTERVENTION);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1655
smrt->smrt_stats.smrts_events_received++;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1657
if (smrt->smrt_status & SMRT_CTLR_STATUS_DETACHING) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1658
cv_signal(&smrt->smrt_event_queue);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1662
if (smrt->smrt_status & SMRT_CTLR_STATUS_RESETTING) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1677
smrt->smrt_stats.smrts_events_errors++;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1678
dev_err(smrt->smrt_dip, CE_WARN, "!event notification request "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1750
dev_err(smrt->smrt_dip, CE_NOTE, "!controller event "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1755
dev_err(smrt->smrt_dip, CE_NOTE, "!controller event "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1763
smrt_discover_request(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1766
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1769
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1774
if (smrt->smrt_status & SMRT_CTLR_STATUS_DETACHING) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1775
cv_signal(&smrt->smrt_event_queue);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1779
if ((smrt->smrt_status & SMRT_CTLR_STATUS_RESETTING) != 0 ||
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1781
smrt->smrt_status |= SMRT_CTLR_ASYNC_INTERVENTION;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1790
smrt->smrt_event_count++;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1791
if (smrt->smrt_event_count > smrt_event_intervention_threshold) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1792
smrt->smrt_status |= SMRT_CTLR_ASYNC_INTERVENTION;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1796
if (smrt_submit(smrt, smcm) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1797
smrt->smrt_status |= SMRT_CTLR_ASYNC_INTERVENTION;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1802
smrt_event_fini(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1806
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1814
if (smrt->smrt_status & SMRT_CTLR_ASYNC_INTERVENTION) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1815
smrt->smrt_status &= ~SMRT_CTLR_ASYNC_INTERVENTION;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1825
smrt->smrt_event_cancel_cmd->smcm_status |= SMRT_CMD_STATUS_POLLED;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1826
if ((ret = smrt_submit(smrt, smrt->smrt_event_cancel_cmd)) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1834
if (smrt_ctlr_reset(smrt) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1835
dev_err(smrt->smrt_dip, CE_WARN, "failed to reset "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1838
ret, smrt->smrt_event_cmd);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1839
smrt->smrt_event_cmd = NULL;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1844
smrt->smrt_event_cancel_cmd->smcm_expiry = gethrtime() +
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1846
if ((ret = smrt_poll_for(smrt, smrt->smrt_event_cancel_cmd)) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1848
VERIFY0(smrt->smrt_event_cancel_cmd->smcm_status &
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1855
if (smrt_ctlr_reset(smrt) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1856
dev_err(smrt->smrt_dip, CE_WARN, "failed to reset "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1860
"command at %p", smrt->smrt_event_cmd,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1861
smrt->smrt_event_cancel_cmd);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1862
smrt->smrt_event_cmd = NULL;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1863
smrt->smrt_event_cancel_cmd = NULL;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1872
if (smrt->smrt_event_cancel_cmd->smcm_status &
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1877
if (smrt->smrt_event_cancel_cmd->smcm_status & SMRT_CMD_STATUS_ERROR) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1878
ErrorInfo_t *ei = smrt->smrt_event_cancel_cmd->smcm_va_err;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1888
smrt_ctlr_reset(smrt) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1889
dev_err(smrt->smrt_dip, CE_WARN, "failed to reset "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1894
smrt->smrt_event_cmd, smrt->smrt_event_cancel_cmd);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1895
smrt->smrt_event_cmd = NULL;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1896
smrt->smrt_event_cancel_cmd = NULL;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1902
event = smrt->smrt_event_cmd;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1903
smrt->smrt_event_cmd = NULL;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1904
cancel = smrt->smrt_event_cancel_cmd;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1905
smrt->smrt_event_cancel_cmd = NULL;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1906
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1911
cv_destroy(&smrt->smrt_event_queue);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1923
smrt_discover_panic_check(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1927
ASSERT(MUTEX_HELD(&smrt->smrt_mutex));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1928
for (smtg = list_head(&smrt->smrt_targets); smtg != NULL;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1929
smtg = list_next(&smrt->smrt_targets, smtg)) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1945
if (gen != smrt->smrt_discover_gen) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1946
dev_err(smrt->smrt_dip, CE_WARN, "target %s "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1958
smrt_t *smrt = arg;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1962
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1963
smrt->smrt_status |= SMRT_CTLR_DISCOVERY_RUNNING;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1964
smrt->smrt_status &= ~SMRT_CTLR_DISCOVERY_REQUESTED;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1966
smrt->smrt_discover_gen++;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1967
gen = smrt->smrt_discover_gen;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1968
runphys = smrt->smrt_phys_tgtmap != NULL;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1969
runvirt = smrt->smrt_virt_tgtmap != NULL;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1970
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1972
phys = smrt_phys_discover(smrt, SMRT_DISCOVER_TIMEOUT, gen);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1974
log = smrt_logvol_discover(smrt, SMRT_DISCOVER_TIMEOUT, gen);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1975
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1979
smrt->smrt_status |= SMRT_CTLR_DISCOVERY_PERIODIC;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1983
"logvol: %d, phys: %d", smrt, log, phys);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1987
smrt->smrt_status & SMRT_CTLR_DISCOVERY_REQUIRED) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1988
smrt->smrt_status &= ~SMRT_CTLR_DISCOVERY_REQUIRED;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1989
cv_broadcast(&smrt->smrt_cv_finishq);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1993
smrt_discover_panic_check(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1996
smrt->smrt_status &= ~SMRT_CTLR_DISCOVERY_RUNNING;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1997
if (smrt->smrt_status & SMRT_CTLR_DISCOVERY_REQUESTED)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1998
smrt->smrt_status |= SMRT_CTLR_DISCOVERY_PERIODIC;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
1999
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
2006
smrt_discover_request(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
2009
ASSERT(MUTEX_HELD(&smrt->smrt_mutex));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
2012
smrt_discover(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
2016
run = (smrt->smrt_status & SMRT_CTLR_DISCOVERY_MASK) == 0;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
2017
smrt->smrt_status |= SMRT_CTLR_DISCOVERY_REQUESTED;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
2018
if (run && ddi_taskq_dispatch(smrt->smrt_discover_taskq,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
2019
smrt_discover, smrt, DDI_NOSLEEP) != DDI_SUCCESS) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
2020
smrt->smrt_status |= SMRT_CTLR_DISCOVERY_PERIODIC;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
2021
smrt->smrt_stats.smrts_discovery_tq_errors++;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
349
smrt_t *smrt = arg;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
351
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
359
if ((smrt->smrt_status & SMRT_CTLR_DISCOVERY_PERIODIC) != 0 &&
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
360
(smrt->smrt_status & SMRT_CTLR_DISCOVERY_RUNNING) == 0 &&
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
361
(smrt->smrt_status & SMRT_CTLR_STATUS_RESETTING) == 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
362
if (ddi_taskq_dispatch(smrt->smrt_discover_taskq,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
363
smrt_discover, smrt, DDI_NOSLEEP) != DDI_SUCCESS) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
364
smrt->smrt_stats.smrts_discovery_tq_errors++;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
366
smrt->smrt_status &= ~SMRT_CTLR_DISCOVERY_PERIODIC;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
370
if (!(smrt->smrt_status & SMRT_CTLR_STATUS_RUNNING)) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
375
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
383
smrt_lockup_check(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
388
smrt->smrt_event_count = 0;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
393
for (smrt_command_t *smcm = avl_first(&smrt->smrt_inflight);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
394
smcm != NULL; smcm = AVL_NEXT(&smrt->smrt_inflight, smcm)) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
426
list_insert_tail(&smrt->smrt_abortq, smcm);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
434
(void) smrt_process_abortq(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
445
if (smrt->smrt_status & SMRT_CTLR_ASYNC_INTERVENTION) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
446
smrt->smrt_stats.smrts_events_intervened++;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
448
if (smrt_submit(smrt, smrt->smrt_event_cmd) == 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
449
smrt->smrt_status &= ~SMRT_CTLR_ASYNC_INTERVENTION;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
453
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
457
smrt_retrieve(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
459
VERIFY(MUTEX_HELD(&smrt->smrt_mutex));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
461
switch (smrt->smrt_ctlr_mode) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
463
smrt_retrieve_simple(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
480
smrt_set_new_tag(smrt_t *smrt, smrt_command_t *smcm)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
482
VERIFY(MUTEX_HELD(&smrt->smrt_mutex));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
490
uint32_t new_tag = smrt->smrt_next_tag;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
492
if (++smrt->smrt_next_tag > SMRT_MAX_TAG_NUMBER) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
493
smrt->smrt_next_tag = SMRT_MIN_TAG_NUMBER;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
496
if (smrt_lookup_inflight(smrt, new_tag) != NULL) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
518
smrt_submit(smrt_t *smrt, smrt_command_t *smcm)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
520
VERIFY(MUTEX_HELD(&smrt->smrt_mutex));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
536
if (!(smrt->smrt_status & SMRT_CTLR_STATUS_RUNNING) &&
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
545
if (avl_numnodes(&smrt->smrt_inflight) >= smrt->smrt_maxcmds) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
555
dev_err(smrt->smrt_dip, CE_PANIC, "DMA sync failure");
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
569
smrt_set_new_tag(smrt, smcm);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
575
if (avl_find(&smrt->smrt_inflight, smcm, &where) != NULL) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
576
dev_err(smrt->smrt_dip, CE_PANIC, "duplicate submit tag %x",
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
579
avl_insert(&smrt->smrt_inflight, smcm, where);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
580
if (smrt->smrt_stats.smrts_max_inflight <
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
581
avl_numnodes(&smrt->smrt_inflight)) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
582
smrt->smrt_stats.smrts_max_inflight =
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
583
avl_numnodes(&smrt->smrt_inflight);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
591
switch (smrt->smrt_ctlr_mode) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
593
smrt_submit_simple(smrt, smcm);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
606
smrt_t *smrt = smcm->smcm_ctlr;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
610
dev_err(smrt->smrt_dip, CE_PANIC, "finishq DMA sync failure");
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
617
smrt_t *smrt = smcm->smcm_ctlr;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
640
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
642
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
646
dev_err(smrt->smrt_dip, CE_PANIC, "preinit command "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
658
smrt_process_finishq(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
662
VERIFY(MUTEX_HELD(&smrt->smrt_mutex));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
664
while ((smcm = list_remove_head(&smrt->smrt_finishq)) != NULL) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
681
list_remove(&smrt->smrt_abortq, smcm);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
690
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
692
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
709
cv_broadcast(&smrt->smrt_cv_finishq);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
716
smrt_process_abortq(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
721
VERIFY(MUTEX_HELD(&smrt->smrt_mutex));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
723
if (list_is_empty(&smrt->smrt_abortq)) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
728
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
729
if ((abort_smcm = smrt_command_alloc(smrt, SMRT_CMDTYPE_ABORTQ,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
735
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
738
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
740
while ((smcm = list_remove_head(&smrt->smrt_abortq)) != NULL) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
761
if (smrt_submit(smrt, abort_smcm) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
767
list_insert_head(&smrt->smrt_abortq, smcm);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
788
cv_broadcast(&smrt->smrt_cv_finishq);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
790
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
792
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
797
smrt_poll_for(smrt_t *smrt, smrt_command_t *smcm)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
799
VERIFY(MUTEX_HELD(&smrt->smrt_mutex));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
821
(void) smrt_retrieve(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
822
smrt_process_finishq(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
832
cv_wait(&smrt->smrt_cv_finishq, &smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
837
(void) cv_timedwait_sig_hrtime(&smrt->smrt_cv_finishq,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
838
&smrt->smrt_mutex, smcm->smcm_expiry);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
853
smrt_intr_set(smrt_t *smrt, boolean_t enabled)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
858
uint32_t imr = smrt_get32(smrt, CISS_I2O_INTERRUPT_MASK);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
860
switch (smrt->smrt_ctlr_mode) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
867
smrt_put32(smrt, CISS_I2O_INTERRUPT_MASK, imr);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
885
smrt_cfgtbl_flush(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
890
uint32_t idr = smrt_get32(smrt, CISS_I2O_INBOUND_DOORBELL);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
896
smrt_put32(smrt, CISS_I2O_INBOUND_DOORBELL, idr);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
902
idr = smrt_get32(smrt, CISS_I2O_INBOUND_DOORBELL);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
914
dev_err(smrt->smrt_dip, CE_WARN, "time out expired before controller "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
920
smrt_cfgtbl_transport_has_support(smrt_t *smrt, int xport)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
928
uint32_t xport_active = ddi_get32(smrt->smrt_ct_handle,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
929
&smrt->smrt_ct->TransportSupport);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
936
dev_err(smrt->smrt_dip, CE_WARN, "controller does not support "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
946
smrt_cfgtbl_transport_set(smrt_t *smrt, int xport)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
950
ddi_put32(smrt->smrt_ct_handle, &smrt->smrt_ct->TransportRequest,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
955
smrt_cfgtbl_transport_confirm(smrt_t *smrt, int xport)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
963
uint32_t xport_active = ddi_get32(smrt->smrt_ct_handle,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
964
&smrt->smrt_ct->TransportActive);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
970
dev_err(smrt->smrt_dip, CE_WARN, "failed to enable transport "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
980
dev_err(smrt->smrt_dip, CE_WARN, "controller not ready to "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
989
smrt_ctlr_get_maxsgelements(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
991
return (ddi_get32(smrt->smrt_ct_handle, &smrt->smrt_ct->MaxSGElements));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
995
smrt_ctlr_get_cmdsoutmax(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
997
return (ddi_get32(smrt->smrt_ct_handle, &smrt->smrt_ct->CmdsOutMax));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
108
list_insert_tail(&smrt->smrt_finishq, smcm);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
117
smrt_submit_simple(smrt_t *smrt, smrt_command_t *smcm)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
119
smrt_put32(smrt, CISS_I2O_INBOUND_POST_Q, smcm->smcm_pa_cmd);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
131
smrt_preinit_command_simple(smrt_t *smrt, smrt_command_t *smcm)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
138
VERIFY(smrt->smrt_ctlr_mode == SMRT_CTLR_MODE_SIMPLE);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
139
VERIFY(!(smrt->smrt_status & SMRT_CTLR_STATUS_RUNNING));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
148
smrt_put32(smrt, CISS_I2O_INBOUND_POST_Q, smcm->smcm_pa_cmd);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
156
uint32_t opq = smrt_get32(smrt, CISS_I2O_OUTBOUND_POST_Q);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
175
dev_err(smrt->smrt_dip, CE_WARN, "unexpected tag 0x%x"
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
193
smrt_ctlr_init_simple(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
195
VERIFY(smrt->smrt_ctlr_mode == SMRT_CTLR_MODE_UNKNOWN);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
197
if (smrt_cfgtbl_transport_has_support(smrt,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
201
smrt->smrt_ctlr_mode = SMRT_CTLR_MODE_SIMPLE;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
206
smrt_intr_set(smrt, B_FALSE);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
208
if ((smrt->smrt_maxcmds = smrt_ctlr_get_cmdsoutmax(smrt)) == 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
209
dev_err(smrt->smrt_dip, CE_WARN, "maximum outstanding "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
220
if ((smrt->smrt_sg_cnt = smrt_ctlr_get_maxsgelements(smrt)) == 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
226
smrt->smrt_sg_cnt = CISS_SGCNT_FALLBACK;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
228
} else if (smrt->smrt_sg_cnt > CISS_MAXSGENTRIES) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
233
smrt->smrt_sg_cnt = CISS_MAXSGENTRIES;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
239
ddi_put32(smrt->smrt_ct_handle, &smrt->smrt_ct->Upper32Addr, 0);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
24
smrt_t *smrt = (smrt_t *)arg1;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
245
smrt_cfgtbl_transport_set(smrt, CISS_CFGTBL_XPORT_SIMPLE);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
246
if (smrt_cfgtbl_flush(smrt) != DDI_SUCCESS) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
25
uint32_t isr = smrt_get32(smrt, CISS_I2O_INTERRUPT_STATUS);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
250
if (smrt_cfgtbl_transport_confirm(smrt,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
260
uint32_t check_again = smrt_ctlr_get_cmdsoutmax(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
261
if (check_again != smrt->smrt_maxcmds) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
262
dev_err(smrt->smrt_dip, CE_WARN, "maximum outstanding commands "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
264
smrt->smrt_maxcmds, check_again);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
272
smrt_ctlr_teardown_simple(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
274
VERIFY(smrt->smrt_ctlr_mode == SMRT_CTLR_MODE_SIMPLE);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
28
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
281
smrt->smrt_ctlr_mode = SMRT_CTLR_MODE_UNKNOWN;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
29
if (!(smrt->smrt_status & SMRT_CTLR_STATUS_RUNNING)) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
30
smrt->smrt_stats.smrts_unclaimed_interrupts++;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
31
smrt->smrt_last_interrupt_unclaimed = now;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
37
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
45
smrt->smrt_stats.smrts_unclaimed_interrupts++;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
46
smrt->smrt_last_interrupt_unclaimed = now;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
52
smrt_lockup_check(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
54
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
58
smrt->smrt_stats.smrts_claimed_interrupts++;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
59
smrt->smrt_last_interrupt_claimed = now;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
65
smrt_retrieve_simple(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
70
smrt_process_finishq(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
72
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
81
smrt_retrieve_simple(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
86
VERIFY(MUTEX_HELD(&smrt->smrt_mutex));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
88
while ((opq = smrt_get32(smrt, CISS_I2O_OUTBOUND_POST_Q)) != none) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
92
if ((smcm = smrt_lookup_inflight(smrt, tag)) == NULL) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
93
dev_err(smrt->smrt_dip, CE_WARN, "spurious tag %x",
usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss_simple.c
98
avl_remove(&smrt->smrt_inflight, smcm);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
153
smrt_command_alloc_impl(smrt_t *smrt, smrt_command_type_t type, int kmflags)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
163
smcm->smcm_ctlr = smrt;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
177
if (smrt_contig_alloc(smrt, &smcm->smcm_contig, contig_size,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
205
smrt_command_alloc_preinit(smrt_t *smrt, size_t datasize, int kmflags)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
209
if ((smcm = smrt_command_alloc_impl(smrt, SMRT_CMDTYPE_PREINIT,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
223
if (smrt_command_attach_internal(smrt, smcm, datasize, kmflags) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
232
smrt_command_alloc(smrt_t *smrt, smrt_command_type_t type, int kmflags)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
238
if ((smcm = smrt_command_alloc_impl(smrt, type, kmflags)) == NULL) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
245
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
246
list_insert_tail(&smrt->smrt_commands, smcm);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
247
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
253
smrt_command_attach_internal(smrt_t *smrt, smrt_command_t *smcm, size_t len,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
265
if (smrt_contig_alloc(smrt, &smcmi->smcmi_contig, len, kmflags,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
286
smrt_t *smrt = smcm->smcm_ctlr;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
288
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
310
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
316
smrt_t *smrt = smcm->smcm_ctlr;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
334
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
343
list_remove(&smrt->smrt_commands, smcm);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
345
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
352
smrt_lookup_inflight(smrt_t *smrt, uint32_t tag)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
356
VERIFY(MUTEX_HELD(&smrt->smrt_mutex));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
361
return (avl_find(&smrt->smrt_inflight, &srch, NULL));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
70
smrt_contig_alloc(smrt_t *smrt, smrt_dma_t *smdma, size_t sz, int kmflags,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_commands.c
75
dev_info_t *dip = smrt->smrt_dip;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
101
if (pci_config_setup(smrt->smrt_dip, &pci_hdl) != DDI_SUCCESS)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
104
smrt->smrt_pci_vendor = pci_config_get16(pci_hdl, PCI_CONF_VENID);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
105
smrt->smrt_pci_device = pci_config_get16(pci_hdl, PCI_CONF_DEVID);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
113
smrt_map_device(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
117
dev_info_t *dip = smrt->smrt_dip;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
130
if (smrt_locate_bar(regs, nregs, &smrt->smrt_i2o_bar) !=
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
140
if (ddi_regs_map_setup(dip, smrt->smrt_i2o_bar, &smrt->smrt_i2o_space,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
142
&smrt_dev_attributes, &smrt->smrt_i2o_handle) != DDI_SUCCESS) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
146
smrt->smrt_init_level |= SMRT_INITLEVEL_I2O_MAPPED;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
148
if (smrt_locate_cfgtbl(smrt, regs, nregs, &smrt->smrt_ct_bar,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
149
&smrt->smrt_ct_baseaddr) != DDI_SUCCESS) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
157
if (ddi_regs_map_setup(dip, smrt->smrt_ct_bar,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
158
(caddr_t *)&smrt->smrt_ct, smrt->smrt_ct_baseaddr,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
160
&smrt->smrt_ct_handle) != DDI_SUCCESS) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
164
smrt->smrt_init_level |= SMRT_INITLEVEL_CFGTBL_MAPPED;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
174
smrt_device_setup(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
180
if (ddi_slaveonly(smrt->smrt_dip) == DDI_SUCCESS) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
181
dev_err(smrt->smrt_dip, CE_WARN, "device cannot become DMA "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
186
if (smrt_identify_device(smrt) != DDI_SUCCESS)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
189
if (smrt_map_device(smrt) != DDI_SUCCESS) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
196
smrt_device_teardown(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
201
smrt_device_teardown(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
203
if (smrt->smrt_init_level & SMRT_INITLEVEL_CFGTBL_MAPPED) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
204
ddi_regs_map_free(&smrt->smrt_ct_handle);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
205
smrt->smrt_init_level &= ~SMRT_INITLEVEL_CFGTBL_MAPPED;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
208
if (smrt->smrt_init_level & SMRT_INITLEVEL_I2O_MAPPED) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
209
ddi_regs_map_free(&smrt->smrt_i2o_handle);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
210
smrt->smrt_init_level &= ~SMRT_INITLEVEL_I2O_MAPPED;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
215
smrt_get32(smrt_t *smrt, offset_t off)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
221
uint32_t *addr = (uint32_t *)(smrt->smrt_i2o_space +
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
224
return (ddi_get32(smrt->smrt_i2o_handle, addr));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
228
smrt_put32(smrt_t *smrt, offset_t off, uint32_t val)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
234
uint32_t *addr = (uint32_t *)(smrt->smrt_i2o_space +
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
237
ddi_put32(smrt->smrt_i2o_handle, addr, val);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
45
smrt_locate_cfgtbl(smrt_t *smrt, pci_regspec_t *regs, unsigned nregs,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
52
cfg_offset = smrt_get32(smrt, CISS_I2O_CFGTBL_CFG_OFFSET);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
53
mem_offset = smrt_get32(smrt, CISS_I2O_CFGTBL_MEM_OFFSET);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
97
smrt_identify_device(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
102
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
104
if (smrt->smrt_status & SMRT_CTLR_STATUS_DETACHING) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
109
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1145
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1147
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1157
smrt_t *smrt;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1164
smrt = smtg->smtg_ctlr;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1165
VERIFY(smrt != NULL);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
117
if ((smlv = smrt_logvol_lookup_by_id(smrt, targ)) == NULL) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
118
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1184
if (smrt->smrt_dma_attr.dma_attr_maxxfer > INT_MAX) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1187
return ((int)smrt->smrt_dma_attr.dma_attr_maxxfer);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1190
if (smrt->smrt_dma_attr.dma_attr_granular > INT_MAX) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1193
return ((int)smrt->smrt_dma_attr.dma_attr_granular);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1288
smrt_ctrl_hba_setup(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1291
dev_info_t *dip = smrt->smrt_dip;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1299
smrt->smrt_hba_tran = tran;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1300
tran->tran_hba_private = smrt;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
131
smtg->smtg_ctlr = smrt;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1316
if (scsi_hba_attach_setup(dip, &smrt->smrt_dma_attr, tran, flags) !=
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
132
list_insert_tail(&smrt->smrt_targets, smtg);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1323
smrt->smrt_init_level |= SMRT_INITLEVEL_SCSA;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1328
smrt_ctrl_hba_teardown(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1330
if (smrt->smrt_init_level & SMRT_INITLEVEL_SCSA) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1331
VERIFY(scsi_hba_detach(smrt->smrt_dip) != DDI_FAILURE);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1332
scsi_hba_tran_free(smrt->smrt_hba_tran);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1333
smrt->smrt_init_level &= ~SMRT_INITLEVEL_SCSA;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1338
smrt_logvol_hba_setup(smrt_t *smrt, dev_info_t *iport)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1353
tran->tran_hba_private = smrt;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1355
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1357
2 * MICROSEC, smrt, smrt_logvol_tgtmap_activate,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1358
smrt_logvol_tgtmap_deactivate, &smrt->smrt_virt_tgtmap) !=
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1363
smrt_discover_request(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1364
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1370
smrt_logvol_hba_teardown(smrt_t *smrt, dev_info_t *iport)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1372
ASSERT(smrt->smrt_virt_iport == iport);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1374
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1376
if (smrt->smrt_virt_tgtmap != NULL) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1382
while (smrt->smrt_status & SMRT_CTLR_DISCOVERY_RUNNING) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1383
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1384
ddi_taskq_wait(smrt->smrt_discover_taskq);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1385
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1388
t = smrt->smrt_virt_tgtmap;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1389
smrt->smrt_virt_tgtmap = NULL;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
139
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1390
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1392
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1395
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1399
smrt_phys_hba_setup(smrt_t *smrt, dev_info_t *iport)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1414
tran->tran_hba_private = smrt;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1416
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1418
2 * MICROSEC, smrt, smrt_phys_tgtmap_activate,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1419
smrt_phys_tgtmap_deactivate, &smrt->smrt_phys_tgtmap) !=
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1424
smrt_discover_request(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1425
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1431
smrt_phys_hba_teardown(smrt_t *smrt, dev_info_t *iport)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1433
ASSERT(smrt->smrt_phys_iport == iport);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1435
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1437
if (smrt->smrt_phys_tgtmap != NULL) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1443
while (smrt->smrt_status & SMRT_CTLR_DISCOVERY_RUNNING) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1444
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1445
ddi_taskq_wait(smrt->smrt_discover_taskq);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1446
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1449
t = smrt->smrt_phys_tgtmap;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1450
smrt->smrt_phys_tgtmap = NULL;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1451
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1453
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
1456
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
149
smrt_t *smrt = (smrt_t *)hba_tran->tran_hba_private;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
156
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
158
list_remove(&smrt->smrt_targets, smtg);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
162
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
179
smrt_t *smrt = (smrt_t *)hba_tran->tran_hba_private;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
180
dev_info_t *dip = smrt->smrt_dip;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
211
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
213
if (smrt->smrt_status & SMRT_CTLR_STATUS_DETACHING) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
218
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
228
smpt = smrt_phys_lookup_by_ua(smrt, ua);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
230
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
244
smtg->smtg_ctlr = smrt;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
245
list_insert_tail(&smrt->smrt_targets, smtg);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
251
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
262
smrt_t *smrt = (smrt_t *)hba_tran->tran_hba_private;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
269
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
271
list_remove(&smrt->smrt_targets, smtg);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
274
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
297
smrt_t *smrt;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
306
smrt = smtg->smtg_ctlr;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
307
VERIFY(smrt != NULL);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
319
dev_err(smrt->smrt_dip, CE_WARN, "oversize CDB: had %u, "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
327
if ((smcm = smrt_command_alloc(smrt, SMRT_CMDTYPE_SCSA,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
448
smrt_t *smrt;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
457
smrt = smtg->smtg_ctlr;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
458
VERIFY(smrt != NULL);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
488
smrt->smrt_stats.smrts_ignored_scsi_cmds++;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
536
if (pkt->pkt_numcookies > smrt->smrt_sg_cnt) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
540
dev_err(smrt->smrt_dip, CE_WARN, "too many DMA cookies (got %u;"
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
541
" expected %u)", pkt->pkt_numcookies, smrt->smrt_sg_cnt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
608
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
617
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
619
dev_err(smrt->smrt_dip, CE_WARN, "smrt_submit failed: target "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
626
smrt->smrt_stats.smrts_tran_starts++;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
627
if ((r = smrt_submit(smrt, smcm)) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
628
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
630
dev_err(smrt->smrt_dip, CE_WARN, "smrt_submit failed %d", r);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
653
(void) smrt_poll_for(smrt, smcm);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
656
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
667
smrt_t *smrt;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
675
smrt = smtg->smtg_ctlr;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
686
if ((smcm = smrt_command_alloc(smrt, SMRT_CMDTYPE_INTERNAL,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
693
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
694
smrt->smrt_stats.smrts_tran_resets++;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
699
if (smrt->smrt_status & SMRT_CTLR_STATUS_RESETTING) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
704
while (smrt->smrt_status & SMRT_CTLR_STATUS_RESETTING) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
705
cv_wait(&smrt->smrt_cv_finishq, &smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
715
if (smrt_submit(smrt, smcm) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
716
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
721
if ((r = smrt_poll_for(smrt, smcm)) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
728
dev_err(smrt->smrt_dip, CE_WARN, "controller ping timed out");
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
738
dev_err(smrt->smrt_dip, CE_WARN, "controller ping error");
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
739
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
741
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
754
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
763
if (gethrtime() < smrt->smrt_last_reset_start + 90 * NANOSEC) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
764
dev_err(smrt->smrt_dip, CE_WARN, "controller ping failed, but "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
766
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
779
dev_err(smrt->smrt_dip, CE_WARN, "controller ping failed; resetting "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
781
if (smrt_ctlr_reset(smrt) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
782
dev_err(smrt->smrt_dip, CE_WARN, "controller reset failure");
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
783
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
787
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
79
smrt_t *smrt = (smrt_t *)hba_tran->tran_hba_private;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
796
smrt_t *smrt;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
80
dev_info_t *dip = smrt->smrt_dip;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
804
smrt = smtg->smtg_ctlr;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
805
VERIFY(smrt != NULL);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
808
if ((abort_smcm = smrt_command_alloc(smrt, SMRT_CMDTYPE_INTERNAL,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
816
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
817
smrt->smrt_stats.smrts_tran_aborts++;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
855
if (smrt_submit(smrt, abort_smcm) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
879
VERIFY0(smrt_poll_for(smrt, abort_smcm));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
893
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
898
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
977
smrt_t *smrt = smcm->smcm_ctlr;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
980
dev_err(smrt->smrt_dip, CE_WARN, "!SCSI command failed: %s: "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
993
smrt_t *smrt = smcm->smcm_ctlr;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_hba.c
997
VERIFY(MUTEX_HELD(&smrt->smrt_mutex));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
106
smrt_interrupts_free(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
108
for (int i = 0; i < smrt->smrt_ninterrupts; i++) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
109
(void) ddi_intr_free(smrt->smrt_interrupts[i]);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
111
smrt->smrt_ninterrupts = 0;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
112
smrt->smrt_interrupt_type = 0;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
113
smrt->smrt_interrupt_cap = 0;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
114
smrt->smrt_interrupt_pri = 0;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
118
smrt_interrupts_alloc(smrt_t *smrt, int type)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
120
dev_info_t *dip = smrt->smrt_dip;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
146
if (ddi_intr_alloc(dip, smrt->smrt_interrupts, type, 0, 1,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
147
&smrt->smrt_ninterrupts, DDI_INTR_ALLOC_STRICT) != DDI_SUCCESS) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
150
smrt_interrupts_free(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
154
smrt->smrt_init_level |= SMRT_INITLEVEL_INT_ALLOC;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
155
smrt->smrt_interrupt_type = type;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
160
smrt_interrupts_setup(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
165
dev_info_t *dip = smrt->smrt_dip;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
171
switch (smrt->smrt_ctlr_mode) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
192
if (smrt_try_msix(smrt) && (types & DDI_INTR_TYPE_MSIX)) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
193
if (smrt_interrupts_alloc(smrt, DDI_INTR_TYPE_MSIX) ==
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
204
if (smrt_interrupts_alloc(smrt, DDI_INTR_TYPE_MSI) ==
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
217
if (smrt_interrupts_alloc(smrt, DDI_INTR_TYPE_FIXED) ==
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
234
if (ddi_intr_get_pri(smrt->smrt_interrupts[0], &ipri) != DDI_SUCCESS) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
242
smrt->smrt_interrupt_pri = ipri;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
244
if (ddi_intr_get_cap(smrt->smrt_interrupts[0],
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
245
&smrt->smrt_interrupt_cap) != DDI_SUCCESS) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
247
smrt_interrupt_type_name(smrt->smrt_interrupt_type));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
251
if (ddi_intr_add_handler(smrt->smrt_interrupts[0], hw_isr,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
252
(caddr_t)smrt, NULL) != DDI_SUCCESS) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
254
smrt_interrupt_type_name(smrt->smrt_interrupt_type));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
257
smrt->smrt_init_level |= SMRT_INITLEVEL_INT_ADDED;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
262
smrt_interrupts_teardown(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
267
smrt_interrupts_teardown(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
269
if (smrt->smrt_init_level & SMRT_INITLEVEL_INT_ENABLED) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
270
(void) smrt_interrupts_disable(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
272
smrt->smrt_init_level &= ~SMRT_INITLEVEL_INT_ENABLED;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
275
if (smrt->smrt_init_level & SMRT_INITLEVEL_INT_ADDED) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
276
(void) ddi_intr_remove_handler(smrt->smrt_interrupts[0]);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
278
smrt->smrt_init_level &= ~SMRT_INITLEVEL_INT_ADDED;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
281
if (smrt->smrt_init_level & SMRT_INITLEVEL_INT_ALLOC) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
282
smrt_interrupts_free(smrt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
284
smrt->smrt_init_level &= ~SMRT_INITLEVEL_INT_ALLOC;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
34
smrt_try_msix(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
36
char *fwver = smrt->smrt_versions.smrtv_firmware_rev;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
43
if (smrt->smrt_pci_vendor == SMRT_VENDOR_HP &&
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
44
smrt->smrt_pci_device == SMRT_DEVICE_GEN9) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
61
dev_err(smrt->smrt_dip, CE_NOTE, "!trying MSI-X interrupts "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
70
smrt_interrupts_disable(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
72
if (smrt->smrt_interrupt_cap & DDI_INTR_FLAG_BLOCK) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
73
return (ddi_intr_block_disable(smrt->smrt_interrupts,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
74
smrt->smrt_ninterrupts));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
76
VERIFY3S(smrt->smrt_ninterrupts, ==, 1);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
78
return (ddi_intr_disable(smrt->smrt_interrupts[0]));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
83
smrt_interrupts_enable(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
87
VERIFY(!(smrt->smrt_init_level & SMRT_INITLEVEL_INT_ENABLED));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
89
if (smrt->smrt_interrupt_cap & DDI_INTR_FLAG_BLOCK) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
90
ret = ddi_intr_block_enable(smrt->smrt_interrupts,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
91
smrt->smrt_ninterrupts);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
93
VERIFY3S(smrt->smrt_ninterrupts, ==, 1);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
95
ret = ddi_intr_enable(smrt->smrt_interrupts[0]);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_interrupts.c
99
smrt->smrt_init_level |= SMRT_INITLEVEL_INT_ENABLED;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
104
smrt_read_logvols_ext(smrt_t *smrt, smrt_report_logical_lun_t *smrll,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
112
VERIFY(MUTEX_HELD(&smrt->smrt_mutex));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
125
if ((smlv = smrt_logvol_lookup_by_id(smrt,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
130
dev_err(smrt->smrt_dip, CE_PANIC, "logical "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
149
smlv->smlv_ctlr = smrt;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
150
list_insert_tail(&smrt->smrt_volumes, smlv);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
162
scsi_hba_tgtmap_set_add(smrt->smrt_virt_tgtmap,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
176
smrt_logvol_discover(smrt_t *smrt, uint16_t timeout, uint64_t gen)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
187
if ((smcm = smrt_command_alloc(smrt, SMRT_CMDTYPE_INTERNAL,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
188
KM_NOSLEEP)) == NULL || smrt_command_attach_internal(smrt, smcm,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
191
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
217
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
223
if ((r = smrt_submit(smrt, smcm)) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
231
if ((r = smrt_poll_for(smrt, smcm)) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
259
dev_err(smrt->smrt_dip, CE_WARN, "logical volume "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
267
scsi_hba_tgtmap_set_begin(smrt->smrt_virt_tgtmap) != DDI_SUCCESS) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
268
dev_err(smrt->smrt_dip, CE_WARN, "failed to begin target map "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
275
r = smrt_read_logvols_ext(smrt, smrll, gen);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
277
r = smrt_read_logvols(smrt, smrll, gen);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
281
if (scsi_hba_tgtmap_set_end(smrt->smrt_virt_tgtmap, 0) !=
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
283
dev_err(smrt->smrt_dip, CE_WARN, "failed to end target "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
288
if (scsi_hba_tgtmap_set_flush(smrt->smrt_virt_tgtmap) !=
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
290
dev_err(smrt->smrt_dip, CE_WARN, "failed to end target "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
301
smrt->smrt_last_log_discovery = gethrtime();
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
305
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
317
smrt_t *smrt = arg;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
32
smrt_logvol_lookup_by_id(smrt_t *smrt, unsigned long id)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
326
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
327
VERIFY(smrt_logvol_lookup_by_id(smrt, volume) != NULL);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
328
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
336
smrt_t *smrt = arg;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
34
VERIFY(MUTEX_HELD(&smrt->smrt_mutex));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
348
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
349
smlv = smrt_logvol_lookup_by_id(smrt, volume);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
352
list_remove(&smrt->smrt_volumes, smlv);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
354
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
36
for (smrt_volume_t *smlv = list_head(&smrt->smrt_volumes);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
360
smrt_logvol_teardown(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
364
while ((smlv = list_remove_head(&smrt->smrt_volumes)) != NULL) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
37
smlv != NULL; smlv = list_next(&smrt->smrt_volumes, smlv)) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
47
smrt_read_logvols(smrt_t *smrt, smrt_report_logical_lun_t *smrll, uint64_t gen)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
53
VERIFY(MUTEX_HELD(&smrt->smrt_mutex));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
66
if ((smlv = smrt_logvol_lookup_by_id(smrt,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
81
smlv->smlv_ctlr = smrt;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
82
list_insert_tail(&smrt->smrt_volumes, smlv);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_logvol.c
94
scsi_hba_tgtmap_set_add(smrt->smrt_virt_tgtmap,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
101
for (smrt_physical_t *smpt = list_head(&smrt->smrt_physicals);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
102
smpt != NULL; smpt = list_next(&smrt->smrt_physicals, smpt)) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
111
smrt_phys_identify(smrt_t *smrt, smrt_identify_physical_drive_t *info,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
122
if ((smcm = smrt_command_alloc(smrt, SMRT_CMDTYPE_INTERNAL,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
123
KM_NOSLEEP)) == NULL || smrt_command_attach_internal(smrt, smcm,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
152
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
158
if ((ret = smrt_submit(smrt, smcm)) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
159
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
167
if ((ret = smrt_poll_for(smrt, smcm)) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
179
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
182
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
197
dev_err(smrt->smrt_dip, CE_WARN, "identify physical "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
222
smrt_read_phys_ext(smrt_t *smrt, smrt_report_physical_lun_t *smrpl,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
230
VERIFY(MUTEX_HELD(&smrt->smrt_mutex));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
247
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
254
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
259
ret = smrt_phys_identify(smrt, info, bmic, timeout);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
261
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
277
smrt_sata_determine_wwn(smrt, &extents[i].srple_addr,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
282
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
283
smpt = smrt_phys_lookup_by_wwn(smrt, wwn);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
295
dev_err(smrt->smrt_dip, CE_PANIC, "physical "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
317
dev_err(smrt->smrt_dip, CE_PANIC,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
338
smpt->smpt_ctlr = smrt;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
339
list_insert_tail(&smrt->smrt_physicals, smpt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
373
scsi_hba_tgtmap_set_add(smrt->smrt_phys_tgtmap,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
383
smrt_phys_discover(smrt_t *smrt, uint16_t timeout, uint64_t gen)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
394
if ((smcm = smrt_command_alloc(smrt, SMRT_CMDTYPE_INTERNAL,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
395
KM_NOSLEEP)) == NULL || smrt_command_attach_internal(smrt, smcm,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
398
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
424
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
430
if ((r = smrt_submit(smrt, smcm)) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
438
if ((r = smrt_poll_for(smrt, smcm)) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
467
dev_err(smrt->smrt_dip, CE_WARN, "physical target "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
486
scsi_hba_tgtmap_set_begin(smrt->smrt_phys_tgtmap) != DDI_SUCCESS) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
487
dev_err(smrt->smrt_dip, CE_WARN, "failed to begin target map "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
493
r = smrt_read_phys_ext(smrt, smrpl, timeout, gen);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
496
if (scsi_hba_tgtmap_set_end(smrt->smrt_phys_tgtmap, 0) !=
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
498
dev_err(smrt->smrt_dip, CE_WARN, "failed to end target "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
503
if (scsi_hba_tgtmap_set_flush(smrt->smrt_phys_tgtmap) !=
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
505
dev_err(smrt->smrt_dip, CE_WARN, "failed to end target "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
519
for (smpt = list_head(&smrt->smrt_physicals), next = NULL;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
521
next = list_next(&smrt->smrt_physicals, smpt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
524
list_remove(&smrt->smrt_physicals, smpt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
532
smrt->smrt_last_phys_discovery = gethrtime();
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
539
for (smpt = list_head(&smrt->smrt_physicals), next = NULL;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
544
dev_err(smrt->smrt_dip, CE_WARN, "encountered "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
551
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
563
smrt_t *smrt = arg;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
567
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
568
smpt = smrt_phys_lookup_by_ua(smrt, addr);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
573
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
580
smrt_t *smrt = arg;
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
586
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
587
smpt = smrt_phys_lookup_by_ua(smrt, addr);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
594
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
598
list_remove(&smrt->smrt_physicals, smpt);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
600
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
605
smrt_phys_teardown(smrt_t *smrt)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
609
while ((smpt = list_remove_head(&smrt->smrt_physicals)) != NULL) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
61
smrt_phys_lookup_by_ua(smrt_t *smrt, const char *ua)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
63
VERIFY(MUTEX_HELD(&smrt->smrt_mutex));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
72
for (smrt_physical_t *smpt = list_head(&smrt->smrt_physicals);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
73
smpt != NULL; smpt = list_next(&smrt->smrt_physicals, smpt)) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
97
smrt_phys_lookup_by_wwn(smrt_t *smrt, uint64_t wwn)
usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
99
VERIFY(MUTEX_HELD(&smrt->smrt_mutex));
usr/src/uts/common/io/scsi/adapters/smrt/smrt_sata.c
100
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_sata.c
109
dev_err(smrt->smrt_dip, CE_WARN, "physical target "
usr/src/uts/common/io/scsi/adapters/smrt/smrt_sata.c
111
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_sata.c
120
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_sata.c
34
smrt_sata_determine_wwn(smrt_t *smrt, PhysDevAddr_t *addr, uint64_t *wwnp,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_sata.c
45
if ((smcm = smrt_command_alloc(smrt, SMRT_CMDTYPE_INTERNAL,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_sata.c
46
KM_NOSLEEP)) == NULL || smrt_command_attach_internal(smrt, smcm,
usr/src/uts/common/io/scsi/adapters/smrt/smrt_sata.c
68
mutex_enter(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_sata.c
74
if ((r = smrt_submit(smrt, smcm)) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_sata.c
75
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/io/scsi/adapters/smrt/smrt_sata.c
80
if ((r = smrt_poll_for(smrt, smcm)) != 0) {
usr/src/uts/common/io/scsi/adapters/smrt/smrt_sata.c
91
mutex_exit(&smrt->smrt_mutex);
usr/src/uts/common/sys/scsi/adapters/smrt/smrt.h
228
typedef struct smrt smrt_t;