Lines Matching defs:vh

274 				mdi_vhci_t *vh, int flags, int op);
383 mdi_vhci_t *vh = NULL;
409 for (vh = mdi_vhci_head; vh != NULL; vh = vh->vh_next) {
410 if (strcmp(vh->vh_class, class) == 0) {
416 if (vh->vh_ops != NULL) {
428 if (vh == NULL) {
435 vh = kmem_zalloc(sizeof (mdi_vhci_t), KM_SLEEP);
438 vh->vh_client_table = hash;
439 vh->vh_class = kmem_zalloc(strlen(class) + 1, KM_SLEEP);
440 (void) strcpy(vh->vh_class, class);
441 vh->vh_lb = LOAD_BALANCE_RR;
445 vh->vh_lb = LOAD_BALANCE_NONE;
448 vh->vh_lb = LOAD_BALANCE_LBA;
453 mutex_init(&vh->vh_phci_mutex, NULL, MUTEX_DEFAULT, NULL);
454 mutex_init(&vh->vh_client_mutex, NULL, MUTEX_DEFAULT, NULL);
459 vh->vh_dip = vdip;
460 vh->vh_ops = vops;
462 setup_vhci_cache(vh);
465 mdi_vhci_head = vh;
468 mdi_vhci_tail->vh_next = vh;
470 mdi_vhci_tail = vh;
482 DEVI(vdip)->devi_mdi_xhci = (caddr_t)vh;
500 mdi_vhci_t *found, *vh, *prev = NULL;
507 if ((vh = i_devi_get_vhci(vdip)) == NULL)
515 if (found == vh)
530 MDI_VHCI_PHCI_LOCK(vh);
531 if (vh->vh_refcnt || vh->vh_phci_count || vh->vh_client_count) {
532 MDI_VHCI_PHCI_UNLOCK(vh);
536 MDI_VHCI_PHCI_UNLOCK(vh);
538 if (destroy_vhci_cache(vh) != MDI_SUCCESS) {
546 if (vh == mdi_vhci_head) {
547 mdi_vhci_head = vh->vh_next;
549 prev->vh_next = vh->vh_next;
551 if (vh == mdi_vhci_tail) {
557 vh->vh_ops = NULL;
560 kmem_free(vh->vh_class, strlen(vh->vh_class)+1);
561 kmem_free(vh->vh_client_table,
563 mutex_destroy(&vh->vh_phci_mutex);
564 mutex_destroy(&vh->vh_client_mutex);
566 kmem_free(vh, sizeof (mdi_vhci_t));
580 mdi_vhci_t *vh = NULL;
585 for (vh = mdi_vhci_head; vh != NULL; vh = vh->vh_next) {
586 if (strcmp(vh->vh_class, class) == 0) {
591 return (vh);
604 mdi_vhci_t *vh = NULL;
606 vh = (mdi_vhci_t *)DEVI(vdip)->devi_mdi_xhci;
608 return (vh);
627 mdi_vhci_t *vh;
660 vh = (mdi_vhci_t *)i_mdi_vhci_class2vhci(class);
661 if (vh == NULL) {
668 ph->ph_vhci = vh;
680 vhcache_phci_add(vh->vh_config, ph);
682 MDI_VHCI_PHCI_LOCK(vh);
683 if (vh->vh_phci_head == NULL) {
684 vh->vh_phci_head = ph;
686 if (vh->vh_phci_tail) {
687 vh->vh_phci_tail->ph_next = ph;
689 vh->vh_phci_tail = ph;
690 vh->vh_phci_count++;
691 MDI_VHCI_PHCI_UNLOCK(vh);
711 mdi_vhci_t *vh;
725 vh = ph->ph_vhci;
726 ASSERT(vh != NULL);
727 if (vh == NULL) {
732 MDI_VHCI_PHCI_LOCK(vh);
733 tmp = vh->vh_phci_head;
742 if (ph == vh->vh_phci_head) {
743 vh->vh_phci_head = ph->ph_next;
748 if (ph == vh->vh_phci_tail) {
749 vh->vh_phci_tail = prev;
752 vh->vh_phci_count--;
753 MDI_VHCI_PHCI_UNLOCK(vh);
764 vhcache_phci_remove(vh->vh_config, ph);
958 mdi_vhci_t *vh;
961 vh = i_devi_get_vhci(vdip);
962 if (vh == NULL)
965 MDI_VHCI_PHCI_LOCK(vh);
966 ph = vh->vh_phci_head;
969 MDI_VHCI_PHCI_UNLOCK(vh);
974 MDI_VHCI_PHCI_UNLOCK(vh);
987 mdi_vhci_t *vh;
991 vh = i_devi_get_vhci(vdip);
992 ASSERT(vh != NULL);
994 if (vh == NULL) {
1002 MDI_VHCI_PHCI_LOCK(vh);
1003 ph = vh->vh_phci_head;
1017 MDI_VHCI_PHCI_UNLOCK(vh);
1101 i_mdi_devinfo_create(mdi_vhci_t *vh, char *name, char *guid,
1106 ASSERT(MDI_VHCI_CLIENT_LOCKED(vh));
1109 cdip = i_mdi_devinfo_find(vh, name, guid);
1117 ndi_devi_alloc_sleep(vh->vh_dip, name, DEVI_SID_NODEID, &cdip);
1155 i_mdi_devinfo_find(mdi_vhci_t *vh, caddr_t name, char *guid)
1162 ndi_devi_enter(vh->vh_dip, &circular);
1163 ndip = (dev_info_t *)DEVI(vh->vh_dip)->devi_child;
1184 ndi_devi_exit(vh->vh_dip, circular);
1325 i_mdi_client_alloc(mdi_vhci_t *vh, char *name, char *lguid)
1329 ASSERT(MDI_VHCI_CLIENT_LOCKED(vh));
1339 ct->ct_vhci = vh;
1359 ct->ct_lb = vh->vh_lb;
1370 i_mdi_client_enlist_table(vh, ct);
1380 i_mdi_client_enlist_table(mdi_vhci_t *vh, mdi_client_t *ct)
1385 ASSERT(MDI_VHCI_CLIENT_LOCKED(vh));
1388 head = &vh->vh_client_table[index];
1392 vh->vh_client_count++;
1401 i_mdi_client_delist_table(mdi_vhci_t *vh, mdi_client_t *ct)
1409 ASSERT(MDI_VHCI_CLIENT_LOCKED(vh));
1413 head = &vh->vh_client_table[index];
1433 vh->vh_client_count--;
1443 i_mdi_client_free(mdi_vhci_t *vh, mdi_client_t *ct)
1450 ASSERT(MDI_VHCI_CLIENT_LOCKED(vh));
1452 vdip = vh->vh_dip;
1467 i_mdi_client_delist_table(vh, ct);
1482 MDI_VHCI_CLIENT_UNLOCK(vh);
1484 MDI_VHCI_CLIENT_LOCK(vh);
1495 i_mdi_client_find(mdi_vhci_t *vh, char *cname, char *guid)
1501 ASSERT(MDI_VHCI_CLIENT_LOCKED(vh));
1504 head = &vh->vh_client_table[index];
1879 mdi_vhci_t *vh = ct->ct_vhci;
1883 if (vh->vh_ops->vo_failover != NULL) {
1887 rv = (*vh->vh_ops->vo_failover)(vh->vh_dip, ct->ct_dip,
2642 mdi_vhci_t *vh;
2660 vh = ph->ph_vhci;
2661 if (vh == NULL) {
2709 MDI_VHCI_CLIENT_LOCK(vh);
2715 ct = i_mdi_client_find(vh, NULL, caddr);
2721 MDI_VHCI_CLIENT_UNLOCK(vh);
2737 MDI_VHCI_CLIENT_UNLOCK(vh);
2781 mdi_vhci_t *vh;
2819 vh = ph->ph_vhci;
2820 if (vh == NULL) {
2842 MDI_VHCI_CLIENT_LOCK(vh);
2843 ct = i_mdi_client_find(vh, cname, caddr);
2845 ct = i_mdi_client_alloc(vh, cname, caddr);
2853 ct->ct_dip = i_mdi_devinfo_create(vh, cname, caddr,
2856 (void) i_mdi_client_free(vh, ct);
2894 MDI_VHCI_CLIENT_UNLOCK(vh);
2908 vhcache_pi_add(vh->vh_config, MDI_PI(pip));
3134 mdi_vhci_t *vh;
3154 vh = ph->ph_vhci;
3155 ASSERT(vh != NULL);
3156 if (vh == NULL) {
3225 vhcache_pi_remove(vh->vh_config, MDI_PI(pip));
3239 MDI_VHCI_CLIENT_LOCK(vh);
3244 f = vh->vh_ops->vo_pi_uninit;
3246 rv = (*f)(vh->vh_dip, pip, 0);
3268 MDI_VHCI_CLIENT_UNLOCK(vh);
3273 MDI_VHCI_CLIENT_UNLOCK(vh);
3276 vhcache_pi_add(vh->vh_config, MDI_PI(pip));
3425 mdi_vhci_t *vh;
3446 vh = ph->ph_vhci;
3447 ASSERT(vh);
3448 if (vh == NULL) {
3479 f = vh->vh_ops->vo_pi_init;
3481 rv = (*f)(vh->vh_dip, pip, 0);
3485 (void *)vh, mdi_pi_spathname(pip),
3600 f = vh->vh_ops->vo_pi_state_change;
3602 rv = (*f)(vh->vh_dip, pip, state, 0, flag);
3851 mdi_vhci_t *vh = NULL;
3884 vh = ct->ct_vhci;
3885 vdip = vh->vh_dip;
3890 ASSERT(vh->vh_ops);
3891 f = vh->vh_ops->vo_pi_state_change;
3981 mdi_vhci_t *vh = NULL;
3989 vh = ph->ph_vhci;
3993 f = vh->vh_ops->vo_pi_state_change;
3995 rv = (*f)(vh->vh_dip, pip, MDI_PATHINFO_STATE_ONLINE, 0,
5698 mdi_vhci_t *vh;
5759 vh = ct->ct_vhci;
5760 if (vh->vh_ops->vo_client_attached)
5761 (*vh->vh_ops->vo_client_attached)(dip);
6269 i_mdi_enable_disable_path(mdi_pathinfo_t *pip, mdi_vhci_t *vh, int flags,
6290 f = vh->vh_ops->vo_pi_state_change;
6299 rv = (*f)(vh->vh_dip, pip, 0,
6304 MDI_DEBUG(2, (MDI_WARN, vh->vh_dip,
6340 rv = (*f)(vh->vh_dip, pip, 0,
6345 MDI_DEBUG(2, (MDI_WARN, vh->vh_dip,
6362 mdi_vhci_t *vh = NULL;
6383 vh = ph->ph_vhci;
6426 pip = i_mdi_enable_disable_path(pip, vh, flags, op);
6464 (void) i_mdi_enable_disable_path(pip, vh, flags, op);
7475 setup_vhci_cache(mdi_vhci_t *vh)
7483 vh->vh_config = vhc;
7486 vhc->vhc_vhcache_filename = vhclass2vhcache_filename(vh->vh_class);
7497 vhcache->vhcache_client_hash = mod_hash_create_extended(vh->vh_class,
7507 if (strcmp(vhci_class_list[i], vh->vh_class) == 0) {
7519 nvl = read_on_disk_vhci_cache(vh->vh_class);
7545 destroy_vhci_cache(mdi_vhci_t *vh)
7547 mdi_vhci_config_t *vhc = vh->vh_config;
9166 build_vhci_cache(mdi_vhci_t *vh)
9168 mdi_vhci_config_t *vhc = vh->vh_config;
9181 attach_phci_drivers(vh->vh_class);
9237 vhcache_discover_paths(mdi_vhci_t *vh)
9239 mdi_vhci_config_t *vhc = vh->vh_config;
9246 attach_phci_drivers(vh->vh_class);
9290 mdi_vhci_t *vh = i_devi_get_vhci(vdip);
9291 mdi_vhci_config_t *vhc = vh->vh_config;
9315 rv = build_vhci_cache(vh);
9368 if (vhcache_discover_paths(vh) &&
9478 mdi_vhci_t *vh;
9481 for (vh = mdi_vhci_head; vh != NULL; vh = vh->vh_next) {
9482 vh->vh_refcnt++;
9484 clean_vhcache(vh->vh_config);
9486 vh->vh_refcnt--;
9502 mdi_vhci_t *vh = i_devi_get_vhci(vdip);
9506 MDI_VHCI_CLIENT_LOCK(vh);
9519 MDI_VHCI_CLIENT_UNLOCK(vh);
9530 mdi_vhci_t *vh = i_devi_get_vhci(vdip);
9533 MDI_VHCI_PHCI_LOCK(vh);
9534 ph = vh->vh_phci_head;
9546 MDI_VHCI_PHCI_UNLOCK(vh);
9557 mdi_vhci_t *vh = NULL;
9563 for (vh = mdi_vhci_head; vh != NULL; vh = vh->vh_next) {
9564 vh->vh_refcnt++;
9566 if (((*f)(vh->vh_dip, arg)) != DDI_WALK_CONTINUE) {
9568 vh->vh_refcnt--;
9572 vh->vh_refcnt--;
9683 mdi_vhci_t *vh;
9698 vh = (mdi_vhci_t *)i_mdi_vhci_class2vhci(class);
9699 if ((vh == NULL) || (vh->vh_ops->vo_is_dev_supported == NULL)) {
9704 return (vh->vh_ops->vo_is_dev_supported(vh->vh_dip, pdip, cinfo));